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

wined3d: Use the view instead of the texture in is_full_clear().

Using the texture is a left-over from when rendertargets were surfaces. Using the view is in fact more straightforward. Signed-off-by: 's avatarHenri Verbeet <hverbeet@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent ee8e4d20
...@@ -5176,14 +5176,10 @@ static bool ffp_blit_supported(enum wined3d_blit_op blit_op, const struct wined3 ...@@ -5176,14 +5176,10 @@ static bool ffp_blit_supported(enum wined3d_blit_op blit_op, const struct wined3
} }
} }
static bool is_full_clear(const struct wined3d_texture *texture, unsigned int sub_resource_idx, static bool is_full_clear(const struct wined3d_rendertarget_view *rtv, const RECT *draw_rect, const RECT *clear_rect)
const RECT *draw_rect, const RECT *clear_rect)
{ {
unsigned int width, height, level; unsigned int height = rtv->height;
unsigned int width = rtv->width;
level = sub_resource_idx % texture->level_count;
width = wined3d_texture_get_level_width(texture, level);
height = wined3d_texture_get_level_height(texture, level);
/* partial draw rect */ /* partial draw rect */
if (draw_rect->left || draw_rect->top || draw_rect->right < width || draw_rect->bottom < height) if (draw_rect->left || draw_rect->top || draw_rect->right < width || draw_rect->bottom < height)
...@@ -5256,8 +5252,7 @@ static void ffp_blitter_clear_rendertargets(struct wined3d_device *device, unsig ...@@ -5256,8 +5252,7 @@ static void ffp_blitter_clear_rendertargets(struct wined3d_device *device, unsig
{ {
struct wined3d_texture *rt = wined3d_texture_from_resource(rtv->resource); struct wined3d_texture *rt = wined3d_texture_from_resource(rtv->resource);
if (flags & WINED3DCLEAR_TARGET && !is_full_clear(rt, rtv->sub_resource_idx, if (flags & WINED3DCLEAR_TARGET && !is_full_clear(rtv, draw_rect, rect_count ? clear_rect : NULL))
draw_rect, rect_count ? clear_rect : NULL))
wined3d_texture_load_location(rt, rtv->sub_resource_idx, context, rtv->resource->draw_binding); wined3d_texture_load_location(rt, rtv->sub_resource_idx, context, rtv->resource->draw_binding);
else else
wined3d_texture_prepare_location(rt, rtv->sub_resource_idx, context, rtv->resource->draw_binding); wined3d_texture_prepare_location(rt, rtv->sub_resource_idx, context, rtv->resource->draw_binding);
...@@ -5284,7 +5279,7 @@ static void ffp_blitter_clear_rendertargets(struct wined3d_device *device, unsig ...@@ -5284,7 +5279,7 @@ static void ffp_blitter_clear_rendertargets(struct wined3d_device *device, unsig
struct wined3d_texture *ds = wined3d_texture_from_resource(dsv->resource); struct wined3d_texture *ds = wined3d_texture_from_resource(dsv->resource);
if (flags & (WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL) if (flags & (WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL)
&& !is_full_clear(ds, dsv->sub_resource_idx, draw_rect, rect_count ? clear_rect : NULL)) && !is_full_clear(dsv, draw_rect, rect_count ? clear_rect : NULL))
wined3d_texture_load_location(ds, dsv->sub_resource_idx, context, ds_location); wined3d_texture_load_location(ds, dsv->sub_resource_idx, context, ds_location);
else else
wined3d_texture_prepare_location(ds, dsv->sub_resource_idx, context, ds_location); wined3d_texture_prepare_location(ds, dsv->sub_resource_idx, context, ds_location);
......
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