summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoff Lang <geofflang@google.com>2013-07-22 12:20:03 -0400
committerGeoff Lang <geofflang@google.com>2013-07-26 17:06:03 -0400
commit93a5ce96058074d20a7bd94185a16bde2a8aad02 (patch)
treedad3a92dd739d4c655631087321407d17d4a2b82
parenta6abd8914f2d684023b0ec434ba8c6087905aba8 (diff)
downloadangle_dx11-93a5ce96058074d20a7bd94185a16bde2a8aad02.tar.gz
Cache applied primitive topology.
Issue #451 Signed-off-by: Jamie Madill Signed-off-by: Shannon Woods Author: Geoff Lang
-rw-r--r--src/libGLESv2/renderer/Renderer11.cpp8
-rw-r--r--src/libGLESv2/renderer/Renderer11.h3
2 files changed, 10 insertions, 1 deletions
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index 334e2114..dd7b6bdb 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -849,7 +849,11 @@ bool Renderer11::applyPrimitiveType(GLenum mode, GLsizei count)
return gl::error(GL_INVALID_ENUM, false);
}
- mDeviceContext->IASetPrimitiveTopology(primitiveTopology);
+ if (primitiveTopology != mCurrentPrimitiveTopology)
+ {
+ mDeviceContext->IASetPrimitiveTopology(primitiveTopology);
+ mCurrentPrimitiveTopology = primitiveTopology;
+ }
return count > 0;
}
@@ -1816,6 +1820,8 @@ void Renderer11::markAllStateDirty()
mCurrentVertexConstantBuffer = NULL;
mCurrentPixelConstantBuffer = NULL;
mCurrentGeometryConstantBuffer = NULL;
+
+ mCurrentPrimitiveTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
}
void Renderer11::releaseDeviceResources()
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index 5481c034..f024855f 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -288,6 +288,9 @@ class Renderer11 : public Renderer
float mCurNear;
float mCurFar;
+ // Currently applied primitive topology
+ D3D11_PRIMITIVE_TOPOLOGY mCurrentPrimitiveTopology;
+
unsigned int mAppliedIBSerial;
unsigned int mAppliedStorageIBSerial;
unsigned int mAppliedIBOffset;