From: Elizabeth Figura zfigura@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
From: Elizabeth Figura zfigura@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. */
From: Elizabeth Figura zfigura@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)
From: Elizabeth Figura zfigura@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;
From: Elizabeth Figura zfigura@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:
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.