Next Generation Emulation banner

1 - 15 of 15 Posts

·
Registered
Joined
·
43 Posts
Discussion Starter #1
From what I hear from this forum, no one is able to run the emulator smoothly on ATI graphic cards. Today I got access to a Dell PC with ATI X1300 pro graphic card and tried the emulator. Right, I also got a 1-2 fps display :(
Anyway I think I already have an idea what's wrong. If my guess is correct (there is no development environment on the pc, so I can only guess), I'll fix the problem and post an update version in a few days. :) Again, thank you all for help testing the emulator and report the problems.
 

·
Registered
Joined
·
642 Posts
From what I hear from this forum, no one is able to run the emulator smoothly on ATI graphic cards. Today I got access to a Dell PC with ATI X1300 pro graphic card and tried the emulator. Right, I also got a 1-2 fps display :(
Anyway I think I already have an idea what's wrong. If my guess is correct (there is no development environment on the pc, so I can only guess), I'll fix the problem and post an update version in a few days. :) Again, thank you all for help testing the emulator and report the problems.
Orz ! Thanks for your great project. :thumb: (I'll test it)
 

·
Registered
Joined
·
1,195 Posts
When (and if) you fix it, would you mind sharing the problem and it's solution? I checked your shader, and the only "strange" thing I saw is the uniform integers (I thought integers where not supported on hardware, as most hardware unrolls loops when shaders are compiled, which is the usual and only practical use for integers on shaders that I've seen and used). I can be sure, as ATI cards seem to not support glsl 1.2 specification, but I can't seem to find the differences between glsl 1.1 (opengl 2.0) and glsl 1.2 (opengl 2.1), at least I was unable to find the former specification anywhere on the web.

I usually use CG/glsl on a daily basis, but always on NVidia hardware, but I like to learn differences between hardware on shaders, as my glsl code is meant to run on a wide range of hardware (not emulation related, but the projects derived from that engine get quite spread).
 

·
Hackin 'n Slashin
Joined
·
28,630 Posts
Looking forward to it. Thanks for helping us out Orz.

Since Catalyst 8.5 ATI have recovered full OpenGL support it seems. So as I said I doubt that's the problem.
 

·
Registered
Joined
·
43 Posts
Discussion Starter #7
When (and if) you fix it, would you mind sharing the problem and it's solution? I checked your shader, and the only "strange" thing I saw is the uniform integers (I thought integers where not supported on hardware, as most hardware unrolls loops when shaders are compiled, which is the usual and only practical use for integers on shaders that I've seen and used). I can be sure, as ATI cards seem to not support glsl 1.2 specification, but I can't seem to find the differences between glsl 1.1 (opengl 2.0) and glsl 1.2 (opengl 2.1), at least I was unable to find the former specification anywhere on the web.

I usually use CG/glsl on a daily basis, but always on NVidia hardware, but I like to learn differences between hardware on shaders, as my glsl code is meant to run on a wide range of hardware (not emulation related, but the projects derived from that engine get quite spread).
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?
 

·
Registered
Joined
·
1,195 Posts
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.
 

·
Registered
Joined
·
43 Posts
Discussion Starter #9
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.
Thank you shashClp. I just realized today that my thinkpad T60 laptop (long time not used) has a mobility raedon x1300 card. I'll setup the debuggers on it and play with the ATI rendering and see what exactly is the problem. Will let you when I find anything.
 

·
Hackin 'n Slashin
Joined
·
28,630 Posts
ATI openGL drivers are known to be quite flaky (I've spent quite a lot of time debugging stuff remotely due to their quirks), so there's not much to be sure with them.
As I said that was true. But since Catalyst 8.5 most of that is gone.
ePSXe filters were throwing all sorts of strange black triangles everywhere before 8.5 but since 8.5 they are rendering games propperly. Glview also points out that there's full OpenGL support. They do still however use somewhat different extensions.
 

·
Registered
Joined
·
1,195 Posts
As I said that was true. But since Catalyst 8.5 most of that is gone.
ePSXe filters were throwing all sorts of strange black triangles everywhere before 8.5 but since 8.5 they are rendering games propperly. Glview also points out that there's full OpenGL support. They do still however use somewhat different extensions.
Do you know the large amount of hacks most games make to render properly on ATI? ATI openGL drivers are, still, worse than NVidia ones, and that's a fact. Even their HLSL support seems bad, seeing how some effects on HalfLife2 had to be redone for ATI. If I'm saying that ATI openGL drivers are flaky is due to good reasons, dozens of bugs I've found over the years and that are still there, not because I'm a NVidia zealot.
 

·
Hackin 'n Slashin
Joined
·
28,630 Posts
I know that shash, but have you had a chance to give Catalyst 8.5 a test?

They're May's Drivers by the way.
 

·
Registered
Joined
·
1,195 Posts
I know that shash, but have you had a chance to give Catalyst 8.5 a test?

They're May's Drivers by the way.
Nope, I don't own any ATI card, but I doubt (and would like to be proved wrong) that they have fixed bugs that have been for over 2 years there, like the point sprites crashing shaders and the like, or the 16bpp texture issue I said earlier. I know they've been working more on them lately (last 2-3 years), but they're far from a NVidia level fixed pipeline implementation.
 

·
Hackin 'n Slashin
Joined
·
28,630 Posts

·
Registered
Joined
·
5,309 Posts
Thank you shashClp. I just realized today that my thinkpad T60 laptop (long time not used) has a mobility raedon x1300 card. I'll setup the debuggers on it and play with the ATI rendering and see what exactly is the problem. Will let you when I find anything.
Wow, you are very helpful and great person. Keep up the good work. The ATI fan people will be very grateful. :D
 
1 - 15 of 15 Posts
Top