[PATCH 0/5] MR6471: wined3d: Move FFP shader invalidation to wined3d_device_apply_stateblock(), part 3/3.
From: Elizabeth Figura <zfigura(a)codeweavers.com> --- dlls/d3d9/tests/visual.c | 2 +- dlls/wined3d/glsl_shader.c | 3 +++ dlls/wined3d/shader.c | 17 +++++++++++++++-- dlls/wined3d/stateblock.c | 4 ++-- dlls/wined3d/wined3d_private.h | 5 +++-- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c index 39b6da90463..56f458d86d3 100644 --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c @@ -29253,7 +29253,7 @@ static void test_fog(void) { colour = get_readback_vec4(&rb, points[i].x, points[i].y); -todo_wine_if ((fog_mode_tests[pixel_mode] != D3DFOG_NONE && !ortho_fog && (vs_mode == VS_MODE_FFP || vs_mode == VS_MODE_RHW || i != 2)) +todo_wine_if ((fog_mode_tests[pixel_mode] != D3DFOG_NONE && !ortho_fog && (vs_mode == VS_MODE_FFP || vs_mode == VS_MODE_RHW)) || (fog_mode_tests[pixel_mode] == D3DFOG_NONE && fog_mode_tests[vertex_mode] != D3DFOG_NONE && vs_mode == VS_MODE_FFP) || (fog_mode_tests[pixel_mode] == D3DFOG_NONE && vs_mode == VS_MODE_VS_NO_FOG)) { diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 9118689b9f4..4ec8ba6a590 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -8092,6 +8092,9 @@ static void shader_glsl_generate_vs_epilogue(const struct wined3d_gl_info *gl_in if (args->fog_src == VS_FOG_Z) shader_addline(buffer, "%s = gl_Position.z;\n", legacy_syntax ? "gl_FogFragCoord" : "ffp_varying_fogcoord"); + else if (args->fog_src == VS_FOG_W) + shader_addline(buffer, "%s = gl_Position.w;\n", + legacy_syntax ? "gl_FogFragCoord" : "ffp_varying_fogcoord"); else if (!reg_maps->fog) shader_addline(buffer, "%s = 0.0;\n", legacy_syntax ? "gl_FogFragCoord" : "ffp_varying_fogcoord"); diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index 252046f0a39..9c3b02a567f 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -2306,8 +2306,21 @@ void find_vs_compile_args(const struct wined3d_state *state, const struct wined3 const struct wined3d_d3d_info *d3d_info = context->d3d_info; WORD swizzle_map = context->stream_info.swizzle_map; - args->fog_src = state->render_states[WINED3D_RS_FOGTABLEMODE] - == WINED3D_FOG_NONE ? VS_FOG_COORD : VS_FOG_Z; + if (state->render_states[WINED3D_RS_FOGTABLEMODE] != WINED3D_FOG_NONE) + { + if (state->transforms[WINED3D_TS_PROJECTION]._14 == 0.0f + && state->transforms[WINED3D_TS_PROJECTION]._24 == 0.0f + && state->transforms[WINED3D_TS_PROJECTION]._34 == 0.0f + && state->transforms[WINED3D_TS_PROJECTION]._44 == 1.0f) + args->fog_src = VS_FOG_Z; + else + args->fog_src = VS_FOG_W; + } + else + { + args->fog_src = VS_FOG_COORD; + } + args->clip_enabled = state->render_states[WINED3D_RS_CLIPPING] && state->render_states[WINED3D_RS_CLIPPLANEENABLE]; args->point_size = state->primitive_type == WINED3D_PT_POINTLIST; diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index 05b17a35d99..5651f853b47 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -3471,8 +3471,8 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, WINED3D_PUSH_CONSTANTS_VS_FFP, WINED3D_SHADER_CONST_FFP_PROJ, offsetof(struct wined3d_ffp_vs_constants, projection_matrix), sizeof(state->transforms[idx]), &state->transforms[idx]); - /* wined3d_ffp_vs_settings.ortho_fog still needs the - * device state to be set. */ + /* wined3d_ffp_vs_settings.ortho_fog and vs_compile_args.ortho_fog + * still need the device state to be set. */ wined3d_device_set_transform(device, idx, &state->transforms[idx]); } } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index b142d514c71..f150316455c 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1489,8 +1489,9 @@ struct ps_compile_args enum fog_src_type { - VS_FOG_Z = 0, - VS_FOG_COORD = 1 + VS_FOG_Z, + VS_FOG_COORD, + VS_FOG_W, }; struct vs_compile_args -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6471
From: Elizabeth Figura <zfigura(a)codeweavers.com> --- dlls/d3d9/tests/visual.c | 3 +-- dlls/wined3d/glsl_shader.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c index 56f458d86d3..bcf14631a8d 100644 --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c @@ -29254,8 +29254,7 @@ static void test_fog(void) colour = get_readback_vec4(&rb, points[i].x, points[i].y); todo_wine_if ((fog_mode_tests[pixel_mode] != D3DFOG_NONE && !ortho_fog && (vs_mode == VS_MODE_FFP || vs_mode == VS_MODE_RHW)) - || (fog_mode_tests[pixel_mode] == D3DFOG_NONE && fog_mode_tests[vertex_mode] != D3DFOG_NONE && vs_mode == VS_MODE_FFP) - || (fog_mode_tests[pixel_mode] == D3DFOG_NONE && vs_mode == VS_MODE_VS_NO_FOG)) + || (fog_mode_tests[pixel_mode] == D3DFOG_NONE && fog_mode_tests[vertex_mode] != D3DFOG_NONE && vs_mode == VS_MODE_FFP)) { if (fog_mode_tests[pixel_mode] != D3DFOG_NONE && ortho_fog) ok(compare_vec4(colour, 0.0f, expect_fog[i], 1.0f, 1.0f, 48) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 4ec8ba6a590..ee55ea983cf 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -8096,8 +8096,14 @@ static void shader_glsl_generate_vs_epilogue(const struct wined3d_gl_info *gl_in shader_addline(buffer, "%s = gl_Position.w;\n", legacy_syntax ? "gl_FogFragCoord" : "ffp_varying_fogcoord"); else if (!reg_maps->fog) - shader_addline(buffer, "%s = 0.0;\n", - legacy_syntax ? "gl_FogFragCoord" : "ffp_varying_fogcoord"); + { + if (reg_maps->output_registers & (1u << (8 + 1))) + shader_addline(buffer, "%s = ffp_varying_specular.w;\n", + legacy_syntax ? "gl_FogFragCoord" : "ffp_varying_fogcoord"); + else + shader_addline(buffer, "%s = 0.0;\n", + legacy_syntax ? "gl_FogFragCoord" : "ffp_varying_fogcoord"); + } } /* We always store the clipplanes without y inversion. */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6471
From: Elizabeth Figura <zfigura(a)codeweavers.com> I.e. move the complicated conditional to wined3d_cs_exec_set_transform(), and invalidate STATE_SHADER directly. --- dlls/wined3d/cs.c | 7 +++++-- dlls/wined3d/ffp_gl.c | 16 ---------------- dlls/wined3d/glsl_shader.c | 11 ----------- dlls/wined3d/utils.c | 2 -- dlls/wined3d/wined3d_private.h | 5 +---- 5 files changed, 6 insertions(+), 35 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 29a8c6494bf..711c031a028 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1855,8 +1855,11 @@ static void wined3d_cs_exec_set_transform(struct wined3d_cs *cs, const void *dat const struct wined3d_cs_set_transform *op = data; cs->state.transforms[op->state] = op->matrix; - if (op->state < WINED3D_TS_WORLD_MATRIX(cs->c.device->adapter->d3d_info.limits.ffp_vertex_blend_matrices)) - device_invalidate_state(cs->c.device, STATE_TRANSFORM(op->state)); + /* Fog behaviour depends on the projection matrix. */ + if (op->state == WINED3D_TS_PROJECTION + && cs->state.render_states[WINED3D_RS_FOGENABLE] + && cs->state.render_states[WINED3D_RS_FOGTABLEMODE] != WINED3D_FOG_NONE) + device_invalidate_state(cs->c.device, STATE_SHADER(WINED3D_SHADER_TYPE_VERTEX)); } void wined3d_device_context_emit_set_transform(struct wined3d_device_context *context, diff --git a/dlls/wined3d/ffp_gl.c b/dlls/wined3d/ffp_gl.c index e4229db1763..b2263252e64 100644 --- a/dlls/wined3d/ffp_gl.c +++ b/dlls/wined3d/ffp_gl.c @@ -1638,22 +1638,6 @@ static void prune_invalid_states(struct wined3d_state_entry *state_table, const state_table[i].representative = 0; state_table[i].apply = state_undefined; } - - start = STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + d3d_info->ffp_fragment_caps.max_blend_stages); - last = STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + WINED3D_MAX_FFP_TEXTURES - 1); - for (i = start; i <= last; ++i) - { - state_table[i].representative = 0; - state_table[i].apply = state_undefined; - } - - start = STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(d3d_info->limits.ffp_vertex_blend_matrices)); - last = STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(255)); - for (i = start; i <= last; ++i) - { - state_table[i].representative = 0; - state_table[i].apply = state_undefined; - } } static void validate_state_table(struct wined3d_state_entry *state_table) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index ee55ea983cf..bef6a44b0a7 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -11899,15 +11899,6 @@ static void glsl_vertex_pipe_pixel_shader(struct wined3d_context *context, context->shader_update_mask |= 1u << WINED3D_SHADER_TYPE_VERTEX; } -static void glsl_vertex_pipe_projection(struct wined3d_context *context, - const struct wined3d_state *state, DWORD state_id) -{ - /* Table fog behavior depends on the projection matrix. */ - if (state->render_states[WINED3D_RS_FOGENABLE] - && state->render_states[WINED3D_RS_FOGTABLEMODE] != WINED3D_FOG_NONE) - context->shader_update_mask |= 1u << WINED3D_SHADER_TYPE_VERTEX; -} - static void glsl_vertex_pipe_viewport(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { @@ -11975,8 +11966,6 @@ static const struct wined3d_state_entry_template glsl_vertex_pipe_vp_states[] = {STATE_CLIPPLANE(7), {STATE_CLIPPLANE(7), clipplane }, WINED3D_GL_EXT_NONE }, /* Viewport */ {STATE_VIEWPORT, {STATE_VIEWPORT, glsl_vertex_pipe_viewport}, WINED3D_GL_EXT_NONE }, - /* Transform states */ - {STATE_TRANSFORM(WINED3D_TS_PROJECTION), {STATE_TRANSFORM(WINED3D_TS_PROJECTION), glsl_vertex_pipe_projection}, WINED3D_GL_EXT_NONE }, /* Fog */ {STATE_RENDER(WINED3D_RS_FOGENABLE), {STATE_RENDER(WINED3D_RS_FOGENABLE), glsl_vertex_pipe_shader}, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGTABLEMODE), {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 35811a3b881..30572bc0ded 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -5353,8 +5353,6 @@ const char *debug_d3dstate(uint32_t state) return "STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING"; if (STATE_IS_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING(state)) return "STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING"; - if (STATE_IS_TRANSFORM(state)) - return wine_dbg_sprintf("STATE_TRANSFORM(%s)", debug_d3dtstype(state - STATE_TRANSFORM(0))); if (STATE_IS_STREAMSRC(state)) return "STATE_STREAMSRC"; if (STATE_IS_INDEXBUFFER(state)) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index f150316455c..511d135a8f5 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1735,10 +1735,7 @@ void dispatch_compute(struct wined3d_device *device, const struct wined3d_state #define STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING (STATE_GRAPHICS_SHADER_RESOURCE_BINDING + 1) #define STATE_IS_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING(a) ((a) == STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING) -#define STATE_TRANSFORM(a) (STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING + (a)) -#define STATE_IS_TRANSFORM(a) ((a) >= STATE_TRANSFORM(1) && (a) <= STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(255))) - -#define STATE_STREAMSRC (STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(255)) + 1) +#define STATE_STREAMSRC (STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING + 1) #define STATE_IS_STREAMSRC(a) ((a) == STATE_STREAMSRC) #define STATE_INDEXBUFFER (STATE_STREAMSRC + 1) #define STATE_IS_INDEXBUFFER(a) ((a) == STATE_INDEXBUFFER) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6471
From: Elizabeth Figura <zfigura(a)codeweavers.com> --- dlls/wined3d/ffp_gl.c | 3 +-- dlls/wined3d/glsl_shader.c | 7 +++---- dlls/wined3d/shader_spirv.c | 1 - dlls/wined3d/stateblock.c | 4 ++++ 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/dlls/wined3d/ffp_gl.c b/dlls/wined3d/ffp_gl.c index b2263252e64..08d833f8095 100644 --- a/dlls/wined3d/ffp_gl.c +++ b/dlls/wined3d/ffp_gl.c @@ -1654,8 +1654,7 @@ static void validate_state_table(struct wined3d_state_entry *state_table) { 16, 23}, { 27, 27}, { 29, 33}, - { 39, 47}, - { 49, 135}, + { 39, 135}, {137, 139}, {141, 150}, {153, 153}, diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index bef6a44b0a7..a22e09a5e25 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -11967,10 +11967,9 @@ static const struct wined3d_state_entry_template glsl_vertex_pipe_vp_states[] = /* Viewport */ {STATE_VIEWPORT, {STATE_VIEWPORT, glsl_vertex_pipe_viewport}, WINED3D_GL_EXT_NONE }, /* Fog */ - {STATE_RENDER(WINED3D_RS_FOGENABLE), {STATE_RENDER(WINED3D_RS_FOGENABLE), glsl_vertex_pipe_shader}, WINED3D_GL_EXT_NONE }, - {STATE_RENDER(WINED3D_RS_FOGTABLEMODE), {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_FOGENABLE), {STATE_RENDER(WINED3D_RS_FOGENABLE), state_nop }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_FOGTABLEMODE), {STATE_RENDER(WINED3D_RS_FOGTABLEMODE), glsl_vertex_pipe_shader}, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGVERTEXMODE), {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, - {STATE_RENDER(WINED3D_RS_RANGEFOGENABLE), {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_CLIPPING), {STATE_RENDER(WINED3D_RS_CLIPPING), state_clipping }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_CLIPPLANEENABLE), {STATE_RENDER(WINED3D_RS_CLIPPING), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_VERTEXBLEND), {STATE_SHADER(WINED3D_SHADER_TYPE_VERTEX), NULL }, WINED3D_GL_EXT_NONE }, @@ -12232,7 +12231,7 @@ static const struct wined3d_state_entry_template glsl_fragment_pipe_state_templa {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), glsl_fragment_pipe_alpha_test }, WINED3D_GL_LEGACY_CONTEXT}, {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), glsl_fragment_pipe_core_alpha_test }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGENABLE), {STATE_RENDER(WINED3D_RS_FOGENABLE), glsl_fragment_pipe_fog }, WINED3D_GL_EXT_NONE }, - {STATE_RENDER(WINED3D_RS_FOGTABLEMODE), {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_FOGTABLEMODE), {STATE_RENDER(WINED3D_RS_FOGTABLEMODE), glsl_fragment_pipe_fog }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGVERTEXMODE), {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGSTART), {STATE_RENDER(WINED3D_RS_FOGSTART), glsl_fragment_pipe_fogparams }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGEND), {STATE_RENDER(WINED3D_RS_FOGSTART), NULL }, WINED3D_GL_EXT_NONE }, diff --git a/dlls/wined3d/shader_spirv.c b/dlls/wined3d/shader_spirv.c index 417ff8dcb0d..0b3c25ebd92 100644 --- a/dlls/wined3d/shader_spirv.c +++ b/dlls/wined3d/shader_spirv.c @@ -1157,7 +1157,6 @@ static void spirv_vertex_pipe_vk_vp_free(struct wined3d_device *device, struct w static const struct wined3d_state_entry_template spirv_vertex_pipe_vk_vp_states[] = { - {STATE_RENDER(WINED3D_RS_RANGEFOGENABLE), {STATE_RENDER(WINED3D_RS_RANGEFOGENABLE), state_nop}}, {STATE_RENDER(WINED3D_RS_CLIPPING), {STATE_RENDER(WINED3D_RS_CLIPPING), state_nop}}, {STATE_RENDER(WINED3D_RS_VERTEXBLEND), {STATE_RENDER(WINED3D_RS_VERTEXBLEND), state_nop}}, {STATE_RENDER(WINED3D_RS_CLIPPLANEENABLE), {STATE_RENDER(WINED3D_RS_CLIPPLANEENABLE), state_nop}}, diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index 5651f853b47..e77a05474c7 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -1623,9 +1623,13 @@ void CDECL wined3d_stateblock_set_render_state(struct wined3d_stateblock *stateb case WINED3D_RS_COLORVERTEX: case WINED3D_RS_DIFFUSEMATERIALSOURCE: case WINED3D_RS_EMISSIVEMATERIALSOURCE: + case WINED3D_RS_FOGENABLE: + case WINED3D_RS_FOGTABLEMODE: + case WINED3D_RS_FOGVERTEXMODE: case WINED3D_RS_LIGHTING: case WINED3D_RS_LOCALVIEWER: case WINED3D_RS_NORMALIZENORMALS: + case WINED3D_RS_RANGEFOGENABLE: case WINED3D_RS_SPECULARMATERIALSOURCE: stateblock->changed.ffp_vs_settings = 1; break; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6471
From: Elizabeth Figura <zfigura(a)codeweavers.com> --- dlls/wined3d/ffp_gl.c | 2 +- dlls/wined3d/glsl_shader.c | 1 - dlls/wined3d/shader_spirv.c | 1 - dlls/wined3d/stateblock.c | 1 + 4 files changed, 2 insertions(+), 3 deletions(-) diff --git a/dlls/wined3d/ffp_gl.c b/dlls/wined3d/ffp_gl.c index 08d833f8095..20f9828d0a2 100644 --- a/dlls/wined3d/ffp_gl.c +++ b/dlls/wined3d/ffp_gl.c @@ -1656,7 +1656,7 @@ static void validate_state_table(struct wined3d_state_entry *state_table) { 29, 33}, { 39, 135}, {137, 139}, - {141, 150}, + {141, 151}, {153, 153}, {157, 160}, {162, 165}, diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index a22e09a5e25..7bf9a5a9679 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -11972,7 +11972,6 @@ static const struct wined3d_state_entry_template glsl_vertex_pipe_vp_states[] = {STATE_RENDER(WINED3D_RS_FOGVERTEXMODE), {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_CLIPPING), {STATE_RENDER(WINED3D_RS_CLIPPING), state_clipping }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_CLIPPLANEENABLE), {STATE_RENDER(WINED3D_RS_CLIPPING), NULL }, WINED3D_GL_EXT_NONE }, - {STATE_RENDER(WINED3D_RS_VERTEXBLEND), {STATE_SHADER(WINED3D_SHADER_TYPE_VERTEX), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_POINTSIZE), {STATE_RENDER(WINED3D_RS_POINTSIZE_MIN), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_POINTSIZE_MIN), {STATE_RENDER(WINED3D_RS_POINTSIZE_MIN), glsl_vertex_pipe_pointsize}, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_POINTSPRITEENABLE), {STATE_RENDER(WINED3D_RS_POINTSPRITEENABLE), state_pointsprite }, ARB_POINT_SPRITE }, diff --git a/dlls/wined3d/shader_spirv.c b/dlls/wined3d/shader_spirv.c index 0b3c25ebd92..51567c3d280 100644 --- a/dlls/wined3d/shader_spirv.c +++ b/dlls/wined3d/shader_spirv.c @@ -1158,7 +1158,6 @@ static void spirv_vertex_pipe_vk_vp_free(struct wined3d_device *device, struct w static const struct wined3d_state_entry_template spirv_vertex_pipe_vk_vp_states[] = { {STATE_RENDER(WINED3D_RS_CLIPPING), {STATE_RENDER(WINED3D_RS_CLIPPING), state_nop}}, - {STATE_RENDER(WINED3D_RS_VERTEXBLEND), {STATE_RENDER(WINED3D_RS_VERTEXBLEND), state_nop}}, {STATE_RENDER(WINED3D_RS_CLIPPLANEENABLE), {STATE_RENDER(WINED3D_RS_CLIPPLANEENABLE), state_nop}}, {STATE_RENDER(WINED3D_RS_POINTSIZE), {STATE_RENDER(WINED3D_RS_POINTSIZE), state_nop}}, {STATE_RENDER(WINED3D_RS_POINTSIZE_MIN), {STATE_RENDER(WINED3D_RS_POINTSIZE_MIN), state_nop}}, diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index e77a05474c7..d3bd290788c 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -1610,6 +1610,7 @@ void CDECL wined3d_stateblock_set_render_state(struct wined3d_stateblock *stateb case WINED3D_RS_VERTEXBLEND: stateblock->changed.modelview_matrices = 1; + stateblock->changed.ffp_vs_settings = 1; break; case WINED3D_RS_POINTSCALEENABLE: -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6471
Hi, It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated. The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=148362 Your paranoid android. === build (build log) === error: patch failed: dlls/wined3d/glsl_shader.c:11975 error: patch failed: dlls/wined3d/ffp_gl.c:1654 error: patch failed: dlls/wined3d/glsl_shader.c:11967 error: patch failed: dlls/wined3d/shader_spirv.c:1157 error: patch failed: dlls/wined3d/stateblock.c:1623 error: patch failed: dlls/wined3d/ffp_gl.c:1656 error: patch failed: dlls/wined3d/glsl_shader.c:11972 error: patch failed: dlls/wined3d/shader_spirv.c:1158 Task: Patch failed to apply === debian11 (build log) === error: patch failed: dlls/wined3d/glsl_shader.c:11975 error: patch failed: dlls/wined3d/ffp_gl.c:1654 error: patch failed: dlls/wined3d/glsl_shader.c:11967 error: patch failed: dlls/wined3d/shader_spirv.c:1157 error: patch failed: dlls/wined3d/stateblock.c:1623 error: patch failed: dlls/wined3d/ffp_gl.c:1656 error: patch failed: dlls/wined3d/glsl_shader.c:11972 error: patch failed: dlls/wined3d/shader_spirv.c:1158 Task: Patch failed to apply === debian11b (build log) === error: patch failed: dlls/wined3d/glsl_shader.c:11975 error: patch failed: dlls/wined3d/ffp_gl.c:1654 error: patch failed: dlls/wined3d/glsl_shader.c:11967 error: patch failed: dlls/wined3d/shader_spirv.c:1157 error: patch failed: dlls/wined3d/stateblock.c:1623 error: patch failed: dlls/wined3d/ffp_gl.c:1656 error: patch failed: dlls/wined3d/glsl_shader.c:11972 error: patch failed: dlls/wined3d/shader_spirv.c:1158 Task: Patch failed to apply
This merge request was approved by Jan Sikorski. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6471
participants (4)
-
Elizabeth Figura -
Elizabeth Figura (@zfigura) -
Jan Sikorski (@jsikorski) -
Marvin