Commit dcc490e8 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: Don't load a rendertarget just because alpha test is enabled.

Unlike the depth test, the alpha test doesn't compare to the existing fragment but against a reference value.
parent a25947fa
...@@ -554,22 +554,21 @@ void drawPrimitive(IWineD3DDevice *iface, UINT index_count, UINT numberOfVertice ...@@ -554,22 +554,21 @@ void drawPrimitive(IWineD3DDevice *iface, UINT index_count, UINT numberOfVertice
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
IWineD3DSurfaceImpl *target; IWineD3DSurfaceImpl *target;
BOOL load_rt, modify_rt;
unsigned int i; unsigned int i;
if (!index_count) return; if (!index_count) return;
load_rt = This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE] if (This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE])
|| This->stateBlock->renderState[WINED3DRS_ALPHATESTENABLE] {
|| This->stateBlock->renderState[WINED3DRS_COLORKEYENABLE]; /* Invalidate the back buffer memory so LockRect will read it the next time */
modify_rt = This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE]; for (i = 0; i < GL_LIMITS(buffers); ++i)
{
/* Invalidate the back buffer memory so LockRect will read it the next time */ target = (IWineD3DSurfaceImpl *)This->render_targets[i];
for(i = 0; i < GL_LIMITS(buffers); i++) { if (target)
target = (IWineD3DSurfaceImpl *) This->render_targets[i]; {
if (target) { IWineD3DSurface_LoadLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, NULL);
if (load_rt) IWineD3DSurface_LoadLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, NULL); IWineD3DSurface_ModifyLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, TRUE);
if (modify_rt) IWineD3DSurface_ModifyLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, TRUE); }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment