On 5/17/22 10:27, Stefan Dösinger wrote:
Signed-off-by: Stefan Dösinger <stefan(a)codeweavers.com>
Version 2: Take the new wined3d_texture_vk_clear into account. --- dlls/wined3d/context_vk.c | 41 +++++++++++++++++--- dlls/wined3d/texture.c | 70 ++++++++++++++++++---------------- dlls/wined3d/utils.c | 19 +++++++++ dlls/wined3d/wined3d_private.h | 11 ++++++ 4 files changed, 104 insertions(+), 37 deletions(-)
This seems to be missing changes to wined3d_texture_gl_clear(), isn't it?
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 0f45d5c844e..a523043cf24 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -823,10 +823,22 @@ BOOL wined3d_texture_load_location(struct wined3d_texture *texture, range.size = texture->sub_resources[sub_resource_idx].size; if (current & WINED3D_LOCATION_CLEARED) { - static const struct wined3d_color black; unsigned int level_idx = sub_resource_idx % texture->level_count; struct wined3d_map_desc map; struct wined3d_box box; + struct wined3d_color c; + + if (texture->resource.format->flags[WINED3D_GL_RES_TYPE_TEX_2D] + & WINED3DFMT_FLAG_DEPTH_STENCIL) + { + c.r = texture->sub_resources[sub_resource_idx].clear_value.depth; + c.g = texture->sub_resources[sub_resource_idx].clear_value.stencil; + c.b = c.a = 0.0f; + } + else + { + c = texture->sub_resources[sub_resource_idx].clear_value.colour; + }
It feels awkward to me that we're storing depth/stencil separately in the sub-resource structure, but collapsing it together here. Could we pass, say, a "union wined3d_clear_value" to wined3d_resource_memory_colour_fill() [and wined3d_format_convert_from_float()]?