[PATCH vkd3d 3/4] vkd3d-shader: Introduce HLSL compilation flags.

Zebediah Figura zfigura at codeweavers.com
Thu Sep 24 18:29:38 CDT 2020


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 include/vkd3d_shader.h | 53 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h
index 768d6050..a7bb2f9a 100644
--- a/include/vkd3d_shader.h
+++ b/include/vkd3d_shader.h
@@ -91,6 +91,17 @@ enum vkd3d_shader_compile_option_formatting_flags
     VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_FORMATTING_FLAGS),
 };
 
+enum vkd3d_shader_hlsl_compatibility_mode
+{
+    VKD3D_SHADER_HLSL_COMPATIBILITY_DEFAULT = 0,
+    VKD3D_SHADER_HLSL_COMPATIBILITY_BACKWARDS_COMPATIBLE = 1,
+    VKD3D_SHADER_HLSL_COMPATIBILITY_STRICT = 2,
+
+    VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_HLSL_COMPATIBILITY),
+};
+
+#define VKD3D_SHADER_OPTIMIZE_FLAG_SKIP_OPTIMIZATION    0x80000000
+
 enum vkd3d_shader_compile_option_name
 {
     /**
@@ -105,6 +116,48 @@ enum vkd3d_shader_compile_option_name
     VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV  = 0x00000002,
     /** \a value is a member of enum vkd3d_shader_compile_option_formatting_flags. */
     VKD3D_SHADER_COMPILE_OPTION_FORMATTING  = 0x00000003,
+    /**
+     * If \a value is nonzero, do not validate the compiled shader for
+     * correctness. The default value is zero.
+     *
+     * This option is supported by vkd3d_shader_compile(). However, not all
+     * compilers support validation.
+     */
+    VKD3D_SHADER_COMPILE_OPTION_SKIP_VALIDATION,
+    /**
+     * Optimize the compiled code. \a value is an unsigned integer which
+     * describes the level of optimization to apply, and may be between 0 and 3
+     * inclusive. The flag VKD3D_SHADER_OPTIMIZE_FLAG_SKIP_OPTIMIZATION may
+     * be combined via bitwise OR in order to suppress optimization entirely.
+     */
+    VKD3D_SHADER_COMPILE_OPTION_OPTIMIZE,
+    /**
+     * If \a value is nonzero, treat warnings as errors. The generated messages
+     * are not changed (i.e. warnings are still flagged with the string
+     * "warning"), but vkd3d_shader_compile() will fail if any warnings are
+     * generated.
+     */
+    VKD3D_SHADER_COMPILE_OPTION_WARNINGS_ARE_ERRORS,
+
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_PACK_MATRIX_ROW_MAJOR,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_PACK_MATRIX_COLUMN_MAJOR,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_PARTIAL_PRECISION,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_FORCE_VS_SOFTWARE_NO_OPT,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_FORCE_PS_SOFTWARE_NO_OPT,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_NO_PRESHADER,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_AVOID_FLOW_CONTROL,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_PREFER_FLOW_CONTROL,
+    /** \a value is a member of enum vkd3d_shader_hlsl_compatibility_mode. */
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_COMPATIBILTY_MODE,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_IEEE_STRICTNESS,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_RESOURCES_MAY_ALIAS,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_ENABLE_UNBOUNDED_DESCRIPTOR_TABLES,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_ALL_RESOURCES_BOUND,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_EFFECT_CHILD_EFFECT,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_EFFECT_ALLOW_SLOW_OPS,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_MERGE_UAV_SLOTS,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_PRESERVE_TEMPLATE_SLOTS,
+    VKD3D_SHADER_COMPILE_OPTION_HLSL_REQUIRE_TEMPLATE_MATCH,
 
     VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_NAME),
 };
-- 
2.28.0




More information about the wine-devel mailing list