From: Elizabeth Figura zfigura@codeweavers.com
This works for sm1 shaders, which can only be pixel or vertex, but this is a bit fragile and relies on the fact that PIXEL and VERTEX are the first two enum elements. Make the code a bit clearer and less fragile. --- dlls/wined3d/shader_spirv.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/shader_spirv.c b/dlls/wined3d/shader_spirv.c index 9a1fd1dd3fc..51cfe58e255 100644 --- a/dlls/wined3d/shader_spirv.c +++ b/dlls/wined3d/shader_spirv.c @@ -44,7 +44,7 @@ struct shader_spirv_resource_bindings size_t binding_base[WINED3D_SHADER_TYPE_COUNT]; enum wined3d_shader_type so_stage;
- uint32_t ffp_extra_binding[2]; + uint32_t ffp_ps_extra_binding, ffp_vs_extra_binding; };
struct shader_spirv_priv @@ -220,7 +220,7 @@ static void shader_spirv_init_compile_args(const struct wined3d_vk_info *vk_info { unsigned int rt_alpha_swizzle = compile_args->u.fs.args.rt_alpha_swizzle;
- fill_ps_parameters(args, compile_args, bindings->ffp_extra_binding[WINED3D_SHADER_TYPE_PIXEL]); + fill_ps_parameters(args, compile_args, bindings->ffp_ps_extra_binding);
args->spirv_target.dual_source_blending = compile_args->u.fs.args.dual_source_blend;
@@ -745,7 +745,11 @@ static bool shader_spirv_resource_bindings_init(struct shader_spirv_resource_bin WINED3D_SHADER_DESCRIPTOR_TYPE_CBV, WINED3D_FFP_CONSTANTS_EXTRA_REGISTER, WINED3D_SHADER_RESOURCE_BUFFER, WINED3D_DATA_FLOAT, binding_idx)) return false; - bindings->ffp_extra_binding[shader_type] = binding_idx; + + if (shader_type == WINED3D_SHADER_TYPE_PIXEL) + bindings->ffp_ps_extra_binding = binding_idx; + else + bindings->ffp_vs_extra_binding = binding_idx; } }
From: Elizabeth Figura zfigura@codeweavers.com
Fixes: 72fad4abe37a79c8e1f538006b1cc5a690b2176c --- dlls/wined3d/stateblock.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index a5c047be9dd..1407565aed5 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -326,6 +326,7 @@ void CDECL wined3d_stateblock_primary_dirtify_all_states(struct wined3d_device * states->ffp_ps_settings = 1; states->rasterizer_state = 1; states->position_transformed = 1; + states->bumpenv_constants = 1;
list_init(&stateblock->changed.changed_lights); RB_FOR_EACH_ENTRY(light, lights_tree, struct wined3d_light_info, entry)
This merge request was approved by Jan Sikorski.