wined3d: Handle depth/stencil surfaces in IWineD3DSurfaceImpl_LoadLocation().
This commit is contained in:
parent
bdc85b69f6
commit
44ab3d70f1
|
@ -4483,6 +4483,7 @@ HRESULT IWineD3DDeviceImpl_ClearSurface(IWineD3DDeviceImpl *This, IWineD3DSurfac
|
|||
if (location == SFLAG_DS_ONSCREEN && depth_stencil != This->onscreen_depth_stencil)
|
||||
device_switch_onscreen_ds(This, context, depth_stencil);
|
||||
prepare_ds_clear(depth_stencil, context, location, &draw_rect, Count, clear_rect);
|
||||
IWineD3DSurface_ModifyLocation((IWineD3DSurface *)depth_stencil, SFLAG_INDRAWABLE, TRUE);
|
||||
|
||||
glDepthMask(GL_TRUE);
|
||||
IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_ZWRITEENABLE));
|
||||
|
|
|
@ -634,9 +634,12 @@ void drawPrimitive(IWineD3DDevice *iface, UINT index_count, UINT StartIdx, UINT
|
|||
surface_load_ds_location(This->depth_stencil, context, location);
|
||||
|
||||
if (This->stateBlock->renderState[WINED3DRS_ZWRITEENABLE])
|
||||
{
|
||||
surface_modify_ds_location(This->depth_stencil, location,
|
||||
This->depth_stencil->ds_current_size.cx,
|
||||
This->depth_stencil->ds_current_size.cy);
|
||||
IWineD3DSurface_ModifyLocation((IWineD3DSurface *)This->depth_stencil, SFLAG_INDRAWABLE, TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4390,6 +4390,22 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LoadLocation(IWineD3DSurface *iface, D
|
|||
BOOL drawable_read_ok = TRUE;
|
||||
BOOL in_fbo = FALSE;
|
||||
|
||||
if (This->resource.usage & WINED3DUSAGE_DEPTHSTENCIL)
|
||||
{
|
||||
if (flag == SFLAG_INTEXTURE)
|
||||
{
|
||||
struct wined3d_context *context = context_acquire(device, NULL);
|
||||
surface_load_ds_location(This, context, SFLAG_DS_OFFSCREEN);
|
||||
context_release(context);
|
||||
return WINED3D_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
FIXME("Unimplemented location %#x for depth/stencil buffers.\n", flag);
|
||||
return WINED3DERR_INVALIDCALL;
|
||||
}
|
||||
}
|
||||
|
||||
if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
|
||||
{
|
||||
if (surface_is_offscreen(This))
|
||||
|
|
Loading…
Reference in New Issue