From 719f124620d3c9b4d6ce14db3dbfc7af05626e5b Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Sun, 9 Aug 2015 19:06:01 +0200 Subject: st/nine: Catch setting the same shader This is quite rare that an app does set again the same shaders, but it isn't an expensive check either. Signed-off-by: Axel Davy --- src/gallium/state_trackers/nine/device9.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c index 7b2a2f14c8..f136b048cf 100644 --- a/src/gallium/state_trackers/nine/device9.c +++ b/src/gallium/state_trackers/nine/device9.c @@ -3259,6 +3259,9 @@ NineDevice9_SetVertexShader( struct NineDevice9 *This, DBG("This=%p pShader=%p\n", This, pShader); + if (!This->is_recording && state->vs == (struct NineVertexShader9*)pShader) + return D3D_OK; + /* ff -> non-ff: commit back non-ff constants */ if (!state->vs && pShader) state->commit |= NINE_STATE_COMMIT_CONST_VS; @@ -3612,6 +3615,9 @@ NineDevice9_SetPixelShader( struct NineDevice9 *This, DBG("This=%p pShader=%p\n", This, pShader); + if (!This->is_recording && state->ps == (struct NinePixelShader9*)pShader) + return D3D_OK; + /* ff -> non-ff: commit back non-ff constants */ if (!state->ps && pShader) state->commit |= NINE_STATE_COMMIT_CONST_PS; -- cgit v1.2.3