Next 5 patches in my queue, mostly fixing issues with older GPUs / drivers.
From: Matteo Bruni mbruni@codeweavers.com
Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- dlls/wined3d/view.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index f2dea8f0f9a..86e2aaa2205 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -1297,7 +1297,8 @@ void wined3d_shader_resource_view_gl_generate_mipmap(struct wined3d_shader_resou if (gl_info->supported[ARB_SAMPLER_OBJECTS]) GL_EXTCALL(glBindSampler(context_gl->active_texture, 0)); gl_tex = wined3d_texture_gl_get_gl_texture(texture_gl, srgb); - if (context_gl->c.d3d_info->wined3d_creation_flags & WINED3D_SRGB_READ_WRITE_CONTROL) + if (context_gl->c.d3d_info->wined3d_creation_flags & WINED3D_SRGB_READ_WRITE_CONTROL + && gl_info->supported[EXT_TEXTURE_SRGB_DECODE]) { gl_info->gl_ops.gl.p_glTexParameteri(texture_gl->target, GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT);
From: Matteo Bruni mbruni@codeweavers.com
Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- Just caught it in passing. The test could use some more general cleanup (which I could certainly do). --- dlls/d3d9/tests/visual.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c index f20f1ecb369..2913583916a 100644 --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c @@ -1193,7 +1193,7 @@ static void clear_test(void) ok(color == 0x0000ff00, "(322,242) has color %08x\n", color);
color = getPixelColor(device, 478, 358); - ok(color == 0x0000ff00, "(478,358 has color %08x\n", color); + ok(color == 0x0000ff00, "(478,358) has color %08x\n", color); color = getPixelColor(device, 482, 358); ok(color == 0x00ffffff, "(482,358) has color %08x\n", color); color = getPixelColor(device, 478, 362);
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=115164
Your paranoid android.
=== debian11 (32 bit report) ===
d3d9: visual.c:26489: Test failed: Got unexpected color 0x000000ff, test 2. visual.c:26517: Test failed: Got unexpected color 0x000000ff, test 2.
=== debian11 (32 bit Hebrew:Israel report) ===
d3d9: visual.c:26489: Test failed: Got unexpected color 0x000000ff, test 2. visual.c:26517: Test failed: Got unexpected color 0x000000ff, test 2.
=== debian11 (32 bit Hindi:India report) ===
d3d9: visual.c:26489: Test failed: Got unexpected color 0x000000ff, test 2. visual.c:26517: Test failed: Got unexpected color 0x000000ff, test 2.
From: Matteo Bruni mbruni@codeweavers.com
Along the lines of d37146885801ae384a1cae54edea426b7b58a6a9 but for the no shader backend case.
Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- dlls/wined3d/texture.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 595baf07788..c952f366a68 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -5753,10 +5753,13 @@ static bool ffp_blit_supported(enum wined3d_blit_op blit_op, const struct wined3 if (!is_identity_fixup(src_format->color_fixup) || !is_identity_fixup(dst_format->color_fixup)) { - if (wined3d_settings.offscreen_rendering_mode == ORM_BACKBUFFER - && dst_format->id == src_format->id && dst_location == WINED3D_LOCATION_DRAWABLE) + if (dst_format->id == src_format->id && dst_location == WINED3D_LOCATION_DRAWABLE) { - WARN("Claiming fixup support because of ORM_BACKBUFFER.\n"); + if (wined3d_settings.offscreen_rendering_mode == ORM_BACKBUFFER) + WARN("Claiming fixup support because of ORM_BACKBUFFER.\n"); + else if (context->device->shader_backend == &none_shader_backend) + WARN("Claiming fixup support because of no shader backend.\n"); + return true; } else {
From: Matteo Bruni mbruni@codeweavers.com
Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- dlls/wined3d/wined3d_private.h | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 1d8bb40cec4..2ab8186f900 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -4976,6 +4976,8 @@ enum wined3d_push_constants #define WINED3D_CS_SPIN_COUNT 10000000u #define WINED3D_CS_QUEUE_MASK (WINED3D_CS_QUEUE_SIZE - 1)
+C_ASSERT(!(WINED3D_CS_QUEUE_SIZE & (WINED3D_CS_QUEUE_SIZE - 1))); + struct wined3d_cs_queue { ULONG head, tail;
From: Matteo Bruni mbruni@codeweavers.com
Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- It's been helpful for me a few times for investigating state table issues when running wined3d on "unconventional" configurations. It also adds a check in a relatively hot codepath, so there's an argument to not have the patch upstream. Just submitting it for consideration... --- dlls/wined3d/context.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 8c4277bc7ca..f9af58936a6 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -78,6 +78,9 @@ void context_invalidate_state(struct wined3d_context *context, unsigned int stat unsigned int representative = context->state_table[state_id].representative; unsigned int index, shift;
+ if (!representative) + ERR("Invalidating representative 0, state_id %u.\n", state_id); + index = representative / (sizeof(*context->dirty_graphics_states) * CHAR_BIT); shift = representative & ((sizeof(*context->dirty_graphics_states) * CHAR_BIT) - 1); context->dirty_graphics_states[index] |= (1u << shift);
This merge request was approved by Zebediah Figura.
This merge request was approved by Jan Sikorski.