5802 Commits

Author SHA1 Message Date
rog
0384f61af3 re-rearrange movie code so it actually works all of the time 2012-10-19 19:43:03 -04:00
rog
b1dee5fc23 small fix for undo load state while not recording 2012-10-18 04:40:56 -04:00
rog
79692a6c78 save settings necessary for syncing a movie to the .dtm, and load them upon playback 2012-10-18 04:18:40 -04:00
rog
783409c765 clear the save state loaded from a previous movie when starting emulation 2012-10-18 04:14:25 -04:00
rog
6b99b746c8 fix undo load state and load last overwritten state while recording 2012-10-18 04:11:14 -04:00
rog
7f624cda10 fix recording from save state 2012-10-18 04:03:12 -04:00
rog
a366521d13 Correct the hotkey labels for undo load state, and load last overwritten state buttons 2012-10-18 03:30:44 -04:00
Ryan Houdek
57426ee726 Forced commit 2012-10-13 13:00:04 -05:00
Ryan Houdek
3f0d7312fa A couple missed lines on the rebase. 2012-10-13 12:43:00 -05:00
Ryan Houdek
10666a9b87 More 'stuff' 2012-10-09 23:56:00 -05:00
Ryan Houdek
eb7a0c485a More "stuff" for SS, also a small fix in the program shader cache cache setup." 2012-10-09 23:56:00 -05:00
Ryan Houdek
71f6b1eec6 Change 'stuff' 2012-10-09 23:56:00 -05:00
Ryan Houdek
03b09bed5d Get the program binary type correctly or else ATI makes massive (~400MB) shader caches. Also, don't need the line in the PixelShaderGen. 2012-10-09 23:56:00 -05:00
Ryan Houdek
2e15440896 Add support for Dual source blending to older ATI cards that don't support 420pack but do support GL_ARB_blend_func_extended. This is more proper as well anyways. 2012-10-09 23:56:00 -05:00
Ryan Houdek
e88d35d1c1 Had a few vec4 and float4(0) calls floating around. 2012-10-09 23:55:59 -05:00
Shawn Hoffman
31a8424bcc fix formatting uglies introduced in glsl-master branch 2012-10-09 23:54:17 -05:00
Shawn Hoffman
4a4833e617 default to GLSL instead of Cg 2012-10-09 23:43:22 -05:00
Ryan Houdek
9996f27120 Give OSX users more of a chance of supporting Single pass DSB in the future. 2012-10-09 23:42:41 -05:00
Ryan Houdek
d012c75005 Implement Program shaders cache. Seems to reduce a small amount of stuttering when F-Zero starts. Did it because I can :| 2012-10-09 23:42:41 -05:00
Ryan Houdek
c76593f6a2 Looky, OSX found an issue for me. 2012-10-09 23:42:40 -05:00
Ryan Houdek
7aad45658e Add a GUI option to use GLSL shaders. Also fix a small typo. 2012-10-09 23:42:39 -05:00
Ryan Houdek
7f12daa014 Looks like we make use of fmod, make a GLSL function for it! 2012-10-09 23:41:49 -05:00
Pierre Bourdon
3bcec51334 More coding style fixes because I suck at sed 2012-10-09 23:41:48 -05:00
Pierre Bourdon
3c6d0fc710 8 spaces indentation -> tabs 2012-10-09 23:41:48 -05:00
Ryan Houdek
5b06bbf87d Use UBOs in every shader. I had missed a few. Only cache Uniform locations if we aren't using UBOs. 2012-10-09 23:41:06 -05:00
Ryan Houdek
5bcbf92f43 Make sure to support everything even if GPU doesn't. 2012-10-09 23:41:06 -05:00
Ryan Houdek
d4a80ca3ec yay, UBOs work 100% now. 2012-10-09 23:41:05 -05:00
Ryan Houdek
1f75ee49bf UBO works for Pixel Shaders if Binding for UBO is zero, otherwise fails. Probably why Vertex shader UBO is failing. Too tired to investigate right now. 2012-10-09 23:41:05 -05:00
Ryan Houdek
b105d70339 Firin ma lazer 2012-10-09 23:41:05 -05:00
Ryan Houdek
c82b92bfc2 Fix one error. 2012-10-09 23:41:05 -05:00
Ryan Houdek
2fbca145cb Remove bSupportsGLSLLocation since it won't work how I expect it. 2012-10-09 23:41:05 -05:00
Ryan Houdek
4a84c6f742 Add in UBOs, doesn't work yet. Still debugging here. 2012-10-09 23:41:05 -05:00
Ryan Houdek
76e5766a1b Put Vertex Uniforms in to the correct places to get ready for UBOs. 2012-10-09 23:41:04 -05:00
Ryan Houdek
d897491f94 Few compiler errors that got exposed once I got Dual Source Blending working. Seems it isn't working quite 100% either. Good chance I missed something anyway. 2012-10-09 23:41:04 -05:00
Ryan Houdek
d83ead5914 Support Dual Source Blending in OGL plugin with GLSL. 2012-10-09 23:39:16 -05:00
Ryan Houdek
eff019442f Playing through SSBM story made me find this. 2012-10-09 23:37:52 -05:00
Ryan Houdek
b24990ca28 Bit of cleanup. Clean up my massive hack in the ShaderManagerFiles. Almost feature parity with Nvidia CG now I think. Just need to do Alpha test with Dual source blending now. 2012-10-09 23:37:52 -05:00
Ryan Houdek
cf68cc0c61 Add support for GL_ARB_shading_language_420pack so we don't have to binding sampler locations. Also add support for GL_ARB_separate_shader_objects which doesn't currently work for some reason....investigating. 2012-10-09 23:37:52 -05:00
Ryan Houdek
8058f2f32f Missed one 2012-10-09 23:33:02 -05:00
Ryan Houdek
9064b76deb Shader Compile fixes. Played SMS for two shines. 2012-10-09 23:33:02 -05:00
Ryan Houdek
7cec31dbf3 Almost there. 2012-10-09 23:33:02 -05:00
Ryan Houdek
8123b137aa This is the terrible bit that can't be removed until we use UBOs in the GLSL shaders. 2012-10-09 23:31:31 -05:00
Ryan Houdek
0fc755c4df More stuff 2012-10-09 23:31:31 -05:00
Ryan Houdek
66a5334158 moe 2012-10-09 23:30:48 -05:00
Ryan Houdek
3943840d5c Now CG plays nice with this new stuff. 2012-10-09 23:27:59 -05:00
Ryan Houdek
a357c77257 Add in GLSL setting again.
PS and VS making. Untested and won't work for now.

Add in program shader cache files.

Readd NativeVertexFormat stuffs.

Add in PS and VS cache things.

SetShaders in places.

Fixed EFB cache index computations in OpenGL renderer.

The previous computation was very likely to go out of array bounds,
which could result in crashes on EFB access.

Also, the cache size was rounded down instead of up. This is a problem
since EFB_HEIGHT (528) is not a multiple of EFB_CACHE_RECT_SIZE (64).
2012-10-09 23:23:37 -05:00
Pierre Bourdon
3990002250 Optimize JitCache::InvalidateICache by maintaining a "valid blocks" bitset
Most of the InvalidateICache calls are for a 32 bytes block: this is the
number of bytes invalidated by PowerPC dcb*/icb* instructions. Profiling
shows that a lot of CPU time is spent checking if there are any JIT blocks
covered by these 32 bytes (using std::map::lower_bound).

This patch adds a bitset containing the state of every 32 bytes block in
RAM (JIT cached/not JIT cached). Using that, a 32 bytes InvalidateICache
can check in the bitset if any JIT block might be invalidated. A bitset
check is a lot faster than an std::map::lower_bound operation, improving
performance of JitCache::InvalidateICache by more than 100%.

Some practical numbers:

* Xenoblade Chronicles (PAL)
  56.04FPS -> 59.28FPS (+5.78%)
* The Last Story (PAL)
  30.9FPS -> 32.83FPS (+6.25%)
* Super Mario Galaxy (PAL)
  59.76FPS -> 62.46FPS (+4.52%)

This function still takes more time than it should - more optimization in
this area might be possible (specializing for 32 bytes blocks to avoid
useless memcpy, for example).
2012-10-06 01:49:09 +02:00
Pierre Bourdon
8cefcaa94c Implement a simple benchmarking mode which logs FPS to a file
Very useful to compare performance between two builds, check the impact of
a configuration option, etc. FPS log is stored in User/Logs/fps.txt and is
reset each time you launch a game. Only enabled if you check the "Log FPS
to file" option in your graphics settings.

Could be improved a bit: currently logs only every 1s (so you can't really
see small variations), maybe output more infos to the fps.txt like
average/stddev (but Excel/Libreoffice/Google Docs can compute that easily
too).
2012-10-04 05:41:02 +02:00
NeoBrainX
035840e7b5 Move last XFB size from Render to FramebufferManager. 2012-10-03 13:44:35 +02:00
NeoBrainX
6e4a61a991 Minor cleanups. 2012-10-03 13:44:04 +02:00