Yuriy O'Donnell
88d11ec5b2
D3D: RestoreState no longer resets PS resources
2014-10-27 00:02:30 +01:00
Yuriy O'Donnell
0c5a572f8d
D3D: Use two buffers for VertexManager
2014-10-26 23:38:15 +01:00
Yuriy O'Donnell
c35847b795
D3D: Using start index and base vertex instead of buffer offsets
2014-10-26 23:38:14 +01:00
Yuriy O'Donnell
48ba55203b
D3D: Vertex and index data in one buffer
2014-10-26 23:38:14 +01:00
Yuriy O'Donnell
72ba13ca8a
D3D: Enabled depth clipping
2014-10-21 06:26:20 +02:00
Yuriy O'Donnell
97423d5ed8
D3D: Fixed anisotropic filtering.
...
This got broken when d3d state cache was implemented.
2014-10-18 17:47:47 +02:00
Yuriy O'Donnell
b78396847f
D3D: Removed SetBlendOp, SetSrcBlend and SetDestBlend as they are now trivial
2014-10-17 22:24:57 +02:00
Yuriy O'Donnell
d23da7dbef
Added __forceinline to AlphaTest::TestResult() to make MSVC inline it
2014-10-17 21:50:41 +02:00
Yuriy O'Donnell
5fdda135d2
Workaround for MSVC not optimizing away Write() in GeneratePixelShader
...
ShaderConstantProfile and ShaderUid now have an empty implementation
of Write() that uses variadic templates instead of varargs. MSVC is now
able to inline and optimize away this when necessary.
2014-10-17 21:37:42 +02:00
Yuriy O'Donnell
9bdfd4a833
D3D: State cache now reduces number of blend state permutations by collapsing some states that have blending disabled
2014-10-16 18:27:43 +02:00
Yuriy O'Donnell
bea68c95a4
D3D: Fixed uninitialized members of gx_state
2014-10-15 20:22:41 +02:00
Yuriy O'Donnell
21655dc61a
D3D: moved render state cache implementation to D3DState.h/cpp
2014-10-15 20:22:41 +02:00
Yuriy O'Donnell
e7f8032d7d
D3D: State cache now uses BitField to define packed render states
2014-10-15 20:22:40 +02:00
Yuriy O'Donnell
2e4667caaa
D3D: Moved render state cache into separate source files.
...
Refactored StateCache::Get() to early out for narrower indentation.
Added comments to clarify ownership of objects returned by StateCache::Get().
2014-10-15 20:22:39 +02:00
Yuriy O'Donnell
f434bd7d3f
D3D: Implemented cache for dynamic render states
2014-10-15 20:22:39 +02:00
Yuriy O'Donnell
d8d9bc8c6c
Render: Implemented simple render target pool
...
This avoids creating and destroying render targets every frame,
which is a significant CPU overhead.
Old render targets are destroyed after 3 frames.
2014-09-04 22:21:06 +02:00
Yuriy O'Donnell
ac75766c25
removed trailing whitespace
2014-05-23 21:14:48 +02:00
Yuriy O'Donnell
d08abfc14e
JIT: JitBaseBlockCache::InvalidateICache no longer memsets iCache memory to INVALID_BYTE.
...
This is redundant, since we reset the valid_block bits any way.
However, this was a source of a significant performance issues in some games.
In particular, Metal Gear Solid: Twin Snakes.
2014-05-23 20:40:45 +02:00
Yuriy O'Donnell
de1e2127dc
JIT: JitBaseBlockCache::valid_block is now std::vector<bool>
...
This was previously a std::bitset, which resulted in generation of suboptimal code by VS2013 compiler.
See https://gist.github.com/kayru/753db9607d680e26194b
2014-05-23 20:32:25 +02:00