summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GeometryShaderManager.cpp
diff options
context:
space:
mode:
authorTony Wasserka <neobrainx@gmail.com>2015-01-24 13:29:57 +0100
committerTony Wasserka <neobrainx@gmail.com>2015-01-24 13:29:57 +0100
commit43036af944e706ac38821561c2f3333a500e63f6 (patch)
tree6c5b23ed4707d9af477143774dd86f9f9b9fe7be /Source/Core/VideoCommon/GeometryShaderManager.cpp
parent4e9497cdb85ecbd088ca06fb501496aa0c8240a7 (diff)
parent14baf038e70a598a6af1ce71719bb557425941f9 (diff)
Merge pull request #1812 from phire/real_zfreeze
Add proper zfreeze support.
Diffstat (limited to 'Source/Core/VideoCommon/GeometryShaderManager.cpp')
-rw-r--r--Source/Core/VideoCommon/GeometryShaderManager.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/Source/Core/VideoCommon/GeometryShaderManager.cpp b/Source/Core/VideoCommon/GeometryShaderManager.cpp
index 3e96592625..0a07cf683c 100644
--- a/Source/Core/VideoCommon/GeometryShaderManager.cpp
+++ b/Source/Core/VideoCommon/GeometryShaderManager.cpp
@@ -26,7 +26,11 @@ void GeometryShaderManager::Init()
{
memset(&constants, 0, sizeof(constants));
- Dirty();
+ // Init any intial constants which aren't zero when bpmem is zero.
+ SetViewportChanged();
+ SetProjectionChanged();
+
+ dirty = true;
}
void GeometryShaderManager::Shutdown()
@@ -35,12 +39,9 @@ void GeometryShaderManager::Shutdown()
void GeometryShaderManager::Dirty()
{
- SetViewportChanged();
- SetProjectionChanged();
- SetLinePtWidthChanged();
-
- for (int i = 0; i < 8; i++)
- SetTexCoordChanged(i);
+ // This function is called after a savestate is loaded.
+ // Any constants that can changed based on settings should be re-calculated
+ s_projection_changed = true;
dirty = true;
}
@@ -110,9 +111,14 @@ void GeometryShaderManager::SetTexCoordChanged(u8 texmapid)
void GeometryShaderManager::DoState(PointerWrap &p)
{
+ p.Do(s_projection_changed);
+ p.Do(s_viewport_changed);
+
+ p.Do(constants);
+
if (p.GetMode() == PointerWrap::MODE_READ)
{
- // Reload current state from global GPU state
+ // Fixup the current state from global GPU state
// NOTE: This requires that all GPU memory has been loaded already.
Dirty();
}