wined3d: Catch nop pixel shader changes.

This commit is contained in:
Stefan Dösinger 2006-12-19 23:22:48 +01:00 committed by Alexandre Julliard
parent 22e2a5aca5
commit a008003ccc
1 changed files with 8 additions and 0 deletions

View File

@ -3700,6 +3700,11 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShader(IWineD3DDevice *iface, I
return WINED3D_OK; return WINED3D_OK;
} }
if(pShader == oldShader) {
TRACE("App is setting the old pixel shader over, nothing to do\n");
return WINED3D_OK;
}
TRACE("(%p) : setting pShader(%p)\n", This, pShader); TRACE("(%p) : setting pShader(%p)\n", This, pShader);
IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADER); IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADER);
return WINED3D_OK; return WINED3D_OK;
@ -6033,10 +6038,13 @@ static void device_reapply_stateblock(IWineD3DDeviceImpl* This) {
/* Temporaryily mark all render states dirty to force reapplication /* Temporaryily mark all render states dirty to force reapplication
* until the context management for is integrated with the state management * until the context management for is integrated with the state management
* The same for the pixel shader, sampler states and texture stage states are marked
* dirty my StateBlock::Apply already
*/ */
for(i = 1; i < WINEHIGHEST_RENDER_STATE; i++) { for(i = 1; i < WINEHIGHEST_RENDER_STATE; i++) {
IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(i)); IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(i));
} }
IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADER);
/* Restore recording */ /* Restore recording */
This->isRecordingState = oldRecording; This->isRecordingState = oldRecording;