View Single Post
Old July 8th, 2008   #8 (permalink)
shashClp
Emu author
 
shashClp's Avatar
 
Join Date: Sep 2006
Location: VisualC
Posts: 1,055
Quote:
Originally Posted by orz View Post
It looks like the problem is not the shader, it is the way how the emulator renders the final display output to the screen. In previous versions the emulator renders the final output using glDrawPixels and it works on both NVIDIA and ATI cards. In this new version I switched the rendering part to load the pixel buffers to several textures and use otho projection to display the textures as final screen output. On NVIDIA cards the second method is actually faster, but for some reason, it does not work on ATI cards. I don't know if it is ATI card problem, or it is because I did something wrong in the way I load the textures. shashClp, do you have any hints on this issue?
Well, the only problem that I've seen with the method used, is that uploading 16bit texture data on ATI degraded heavily performance on my tests, done on an ATI 9600 and several other hardware (while on NVidia it got negligible difference with uploading a 32bpp texture, all this taking into that the 32bpp texture didn't have to be swizzled on upload). Due to the way the application I speak of managed data, I could pre-convert data to 32bpp and then I got about a 60% speed increase. Depending on the amount of data you're uploading, then the margin could be wider.

If you want to get more information on whether this could be the cause, when I was writing Desmume, I found a benchmark tool to find the upload/download speeds depending on texture format. I can't seem to find it now, but a few minutes on google should give you a match.
__________________
Emulator development blog
shashClp is offline   Reply With Quote