[PATCH 5/8] wined3d: Implement stencil clear in wined3d_rendertarget_view_clear().
Józef Kucia
jkucia at codeweavers.com
Sun Mar 13 18:03:06 CDT 2016
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
dlls/wined3d/arb_program_shader.c | 4 ++--
dlls/wined3d/device.c | 6 ------
dlls/wined3d/surface.c | 10 ++++++----
dlls/wined3d/view.c | 2 +-
dlls/wined3d/wined3d_private.h | 3 ++-
5 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index cdd6167..d78b60e 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -7931,9 +7931,9 @@ static HRESULT arbfp_blit_color_fill(struct wined3d_device *device, struct wined
}
static HRESULT arbfp_blit_depth_fill(struct wined3d_device *device, struct wined3d_rendertarget_view *view,
- const RECT *rect, float depth)
+ const RECT *rect, float depth, DWORD stencil, DWORD clear_flags)
{
- FIXME("Depth filling not implemented by arbfp_blit.\n");
+ FIXME("Depth/stencil filling not implemented by arbfp_blit.\n");
return WINED3DERR_INVALIDCALL;
}
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index c33efde..22ef461 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4098,12 +4098,6 @@ HRESULT CDECL wined3d_device_clear_rendertarget_view(struct wined3d_device *devi
if (!flags)
return WINED3D_OK;
- if (flags & WINED3DCLEAR_STENCIL)
- {
- FIXME("Stencil clear not implemented.\n");
- return E_NOTIMPL;
- }
-
if (!rect)
{
SetRect(&r, 0, 0, view->width, view->height);
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 2165cf9..64dfa26 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -3808,12 +3808,13 @@ static HRESULT ffp_blit_color_fill(struct wined3d_device *device, struct wined3d
}
static HRESULT ffp_blit_depth_fill(struct wined3d_device *device,
- struct wined3d_rendertarget_view *view, const RECT *rect, float depth)
+ struct wined3d_rendertarget_view *view, const RECT *rect, float depth, DWORD stencil,
+ DWORD clear_flags)
{
const RECT draw_rect = {0, 0, view->width, view->height};
struct wined3d_fb_state fb = {NULL, view};
- device_clear_render_targets(device, 0, &fb, 1, rect, &draw_rect, WINED3DCLEAR_ZBUFFER, 0, depth, 0);
+ device_clear_render_targets(device, 0, &fb, 1, rect, &draw_rect, clear_flags, NULL, depth, stencil);
return WINED3D_OK;
}
@@ -4503,9 +4504,10 @@ static HRESULT cpu_blit_color_fill(struct wined3d_device *device, struct wined3d
}
static HRESULT cpu_blit_depth_fill(struct wined3d_device *device,
- struct wined3d_rendertarget_view *view, const RECT *rect, float depth)
+ struct wined3d_rendertarget_view *view, const RECT *rect, float depth, DWORD stencil,
+ DWORD clear_flags)
{
- FIXME("Depth filling not implemented by cpu_blit.\n");
+ FIXME("Depth/stencil filling not implemented by cpu_blit.\n");
return WINED3DERR_INVALIDCALL;
}
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
index 5f0cc1d..aade42b 100644
--- a/dlls/wined3d/view.c
+++ b/dlls/wined3d/view.c
@@ -125,7 +125,7 @@ HRESULT wined3d_rendertarget_view_clear(struct wined3d_rendertarget_view *view,
if (blit_op == WINED3D_BLIT_OP_COLOR_FILL)
return blitter->color_fill(device, view, rect, color);
else
- return blitter->depth_fill(device, view, rect, depth);
+ return blitter->depth_fill(device, view, rect, depth, stencil, flags);
}
static void wined3d_rendertarget_view_init(struct wined3d_rendertarget_view *view,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index d66bbc3..4886285 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1474,7 +1474,8 @@ struct blit_shader
HRESULT (*color_fill)(struct wined3d_device *device, struct wined3d_rendertarget_view *view,
const RECT *rect, const struct wined3d_color *color);
HRESULT (*depth_fill)(struct wined3d_device *device,
- struct wined3d_rendertarget_view *view, const RECT *rect, float depth);
+ struct wined3d_rendertarget_view *view, const RECT *rect, float depth, DWORD stencil,
+ DWORD clear_flags);
void (*blit_surface)(struct wined3d_device *device, enum wined3d_blit_op op, DWORD filter,
struct wined3d_surface *src_surface, const RECT *src_rect,
struct wined3d_surface *dst_surface, const RECT *dst_rect,
--
2.4.10
More information about the wine-patches
mailing list