[PATCH vkd3d 36/41] vkd3d-shader: Hook up RASTERIZER_SAMPLE_COUNT parameter.

Hans-Kristian Arntzen post at arntzen-software.no
Wed Jan 29 05:52:12 CST 2020


Signed-off-by: Hans-Kristian Arntzen <post at arntzen-software.no>
---
 libs/vkd3d-shader/dxil.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/libs/vkd3d-shader/dxil.c b/libs/vkd3d-shader/dxil.c
index 2a363c4..a4bd87b 100644
--- a/libs/vkd3d-shader/dxil.c
+++ b/libs/vkd3d-shader/dxil.c
@@ -406,6 +406,25 @@ int vkd3d_shader_compile_dxil(const struct vkd3d_shader_code *dxbc,
                 goto end;
             }
         }
+
+        for (i = 0; i < compiler_args->parameter_count; i++)
+        {
+            const struct vkd3d_shader_parameter *argument = &compiler_args->parameters[i];
+            if (argument->name == VKD3D_SHADER_PARAMETER_NAME_RASTERIZER_SAMPLE_COUNT)
+            {
+                bool spec_constant = argument->type == VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT;
+                const dxil_spv_option_rasterizer_sample_count helper =
+                        { { DXIL_SPV_OPTION_RASTERIZER_SAMPLE_COUNT },
+                          spec_constant ? argument->u.specialization_constant.id : argument->u.immediate_constant.u.u32,
+                          spec_constant ? DXIL_SPV_TRUE : DXIL_SPV_FALSE };
+                if (dxil_spv_converter_add_option(converter, &helper.base) != DXIL_SPV_SUCCESS)
+                {
+                    ERR("dxil-spirv does not support RASTERIZER_SAMPLE_COUNT.\n");
+                    ret = VKD3D_ERROR_NOT_IMPLEMENTED;
+                    goto end;
+                }
+            }
+        }
     }
 
     dxil_spv_converter_set_root_constant_word_count(converter, root_constant_words);
-- 
2.25.0




More information about the wine-devel mailing list