From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- tests/hlsl/technique-fx_2.shader_test | 37 +++++++++++++++++++++++++++ tests/hlsl/technique-fx_4.shader_test | 37 +++++++++++++++++++++++++++ tests/hlsl/technique-fx_5.shader_test | 37 +++++++++++++++++++++++++++ 3 files changed, 111 insertions(+)
diff --git a/tests/hlsl/technique-fx_2.shader_test b/tests/hlsl/technique-fx_2.shader_test index 149506e68..9eaa9a65f 100644 --- a/tests/hlsl/technique-fx_2.shader_test +++ b/tests/hlsl/technique-fx_2.shader_test @@ -102,3 +102,40 @@ technique tEchnique11 { } + +% Regular shaders with technique blocks +[vertex shader todo] +float4 main() : sv_position +{ + return 0; +} + +technique +{ +} + +technique10 +{ +} + +technique11 +{ +} + +[pixel shader todo] +float4 main() : sv_target +{ + return 0; +} + +tEchnique +{ +} + +technique10 +{ +} + +technique11 +{ +} diff --git a/tests/hlsl/technique-fx_4.shader_test b/tests/hlsl/technique-fx_4.shader_test index dd4fdc271..8102e78b0 100644 --- a/tests/hlsl/technique-fx_4.shader_test +++ b/tests/hlsl/technique-fx_4.shader_test @@ -81,3 +81,40 @@ float4 technIque10;
[effect todo] float4 technIque11; + +% Regular shaders with technique blocks +[vertex shader todo] +float4 main() : sv_position +{ + return 0; +} + +technique +{ +} + +technique10 +{ +} + +technique11 +{ +} + +[pixel shader todo] +float4 main() : sv_target +{ + return 0; +} + +tEchnique +{ +} + +technique10 +{ +} + +technique11 +{ +} diff --git a/tests/hlsl/technique-fx_5.shader_test b/tests/hlsl/technique-fx_5.shader_test index ae253234d..047ed2f23 100644 --- a/tests/hlsl/technique-fx_5.shader_test +++ b/tests/hlsl/technique-fx_5.shader_test @@ -81,3 +81,40 @@ float4 technIque10;
[effect todo] float4 technIque11; + +% Regular shaders with technique blocks +[vertex shader todo] +float4 main() : sv_position +{ + return 0; +} + +technique +{ +} + +technique10 +{ +} + +technique11 +{ +} + +[pixel shader todo] +float4 main() : sv_target +{ + return 0; +} + +tEchnique +{ +} + +technique10 +{ +} + +technique11 +{ +}
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- libs/vkd3d-shader/hlsl.l | 1 + libs/vkd3d-shader/hlsl.y | 1 + tests/hlsl/technique-fx_2.shader_test | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d-shader/hlsl.l b/libs/vkd3d-shader/hlsl.l index 527d853a0..a6b78ddf7 100644 --- a/libs/vkd3d-shader/hlsl.l +++ b/libs/vkd3d-shader/hlsl.l @@ -133,6 +133,7 @@ switch {return KW_SWITCH; } tbuffer {return KW_TBUFFER; } technique {return KW_TECHNIQUE; } technique10 {return KW_TECHNIQUE10; } +technique11 {return KW_TECHNIQUE11; } texture {return KW_TEXTURE; } texture1D {return KW_TEXTURE1D; } Texture1D {return KW_TEXTURE1D; } diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y index 71c0ae46b..8acfc6667 100644 --- a/libs/vkd3d-shader/hlsl.y +++ b/libs/vkd3d-shader/hlsl.y @@ -4832,6 +4832,7 @@ static void check_duplicated_switch_cases(struct hlsl_ctx *ctx, const struct hls %token KW_TBUFFER %token KW_TECHNIQUE %token KW_TECHNIQUE10 +%token KW_TECHNIQUE11 %token KW_TEXTURE %token KW_TEXTURE1D %token KW_TEXTURE1DARRAY diff --git a/tests/hlsl/technique-fx_2.shader_test b/tests/hlsl/technique-fx_2.shader_test index 9eaa9a65f..978dece1c 100644 --- a/tests/hlsl/technique-fx_2.shader_test +++ b/tests/hlsl/technique-fx_2.shader_test @@ -15,7 +15,7 @@ float4 main() : sv_target return technique10; }
-[pixel shader fail todo] +[pixel shader fail] float4 main() : sv_target { float4 technique11 = {0, 0, 0, 0};
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- libs/vkd3d-shader/hlsl.l | 2 +- tests/hlsl/technique-fx_2.shader_test | 4 ++-- tests/hlsl/technique-fx_4.shader_test | 2 +- tests/hlsl/technique-fx_5.shader_test | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl.l b/libs/vkd3d-shader/hlsl.l index a6b78ddf7..83fe1d34a 100644 --- a/libs/vkd3d-shader/hlsl.l +++ b/libs/vkd3d-shader/hlsl.l @@ -131,7 +131,7 @@ string {return KW_STRING; } struct {return KW_STRUCT; } switch {return KW_SWITCH; } tbuffer {return KW_TBUFFER; } -technique {return KW_TECHNIQUE; } +(?i:technique) {return KW_TECHNIQUE; } technique10 {return KW_TECHNIQUE10; } technique11 {return KW_TECHNIQUE11; } texture {return KW_TEXTURE; } diff --git a/tests/hlsl/technique-fx_2.shader_test b/tests/hlsl/technique-fx_2.shader_test index 978dece1c..6e130747d 100644 --- a/tests/hlsl/technique-fx_2.shader_test +++ b/tests/hlsl/technique-fx_2.shader_test @@ -1,7 +1,7 @@ [require] shader model < 3.0
-[pixel shader fail todo] +[pixel shader fail] float4 main() : sv_target { float4 teChnique = {0, 0, 0, 0}; @@ -30,7 +30,7 @@ float4 main() : sv_target return float4(0, 0, 0, 0); }
-[pixel shader fail todo] +[pixel shader fail] typedef float4 Technique;
float4 main() : sv_target diff --git a/tests/hlsl/technique-fx_4.shader_test b/tests/hlsl/technique-fx_4.shader_test index 8102e78b0..230553e58 100644 --- a/tests/hlsl/technique-fx_4.shader_test +++ b/tests/hlsl/technique-fx_4.shader_test @@ -2,7 +2,7 @@ shader model >= 4.0 shader model < 6.0
-[pixel shader fail todo] +[pixel shader fail] float4 main() : sv_target { float4 teChnique = {0, 0, 0, 0}; diff --git a/tests/hlsl/technique-fx_5.shader_test b/tests/hlsl/technique-fx_5.shader_test index 047ed2f23..f0b511986 100644 --- a/tests/hlsl/technique-fx_5.shader_test +++ b/tests/hlsl/technique-fx_5.shader_test @@ -2,7 +2,7 @@ shader model >= 5.0 shader model < 6.0
-[pixel shader fail todo] +[pixel shader fail] float4 main() : sv_target { float4 teChnique = {0, 0, 0, 0};
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- libs/vkd3d-shader/hlsl.y | 43 +++++++++++++++++++++++++++ tests/hlsl/technique-fx_2.shader_test | 6 ++-- tests/hlsl/technique-fx_4.shader_test | 4 +-- tests/hlsl/technique-fx_5.shader_test | 4 +-- 4 files changed, 50 insertions(+), 7 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y index 8acfc6667..3c30c0cb7 100644 --- a/libs/vkd3d-shader/hlsl.y +++ b/libs/vkd3d-shader/hlsl.y @@ -4955,6 +4955,7 @@ static void check_duplicated_switch_cases(struct hlsl_ctx *ctx, const struct hls
%type <name> any_identifier %type <name> var_identifier +%type <name> technique_name
%type <parameter> parameter
@@ -4996,8 +4997,50 @@ hlsl_prog: destroy_block($2); } | hlsl_prog preproc_directive + | hlsl_prog technique | hlsl_prog ';'
+technique_name: + %empty + { + $$ = NULL; + } + | any_identifier + +pass_list: + %empty + +technique9: + KW_TECHNIQUE technique_name '{' pass_list '}' + { + hlsl_fixme(ctx, &@$, "Unsupported 'technique' declaration."); + } + +technique10: + KW_TECHNIQUE10 technique_name '{' pass_list '}' + { + if (ctx->profile->type == VKD3D_SHADER_TYPE_EFFECT && ctx->profile->major_version == 2) + hlsl_error(ctx, &@1, VKD3D_SHADER_ERROR_HLSL_INVALID_SYNTAX, + "The 'technique10' keyword is invalid for this profile."); + + hlsl_fixme(ctx, &@$, "Unsupported 'technique10' declaration."); + } + +technique11: + KW_TECHNIQUE11 technique_name '{' pass_list '}' + { + if (ctx->profile->type == VKD3D_SHADER_TYPE_EFFECT && ctx->profile->major_version == 2) + hlsl_error(ctx, &@1, VKD3D_SHADER_ERROR_HLSL_INVALID_SYNTAX, + "The 'technique11' keyword is invalid for this profile."); + + hlsl_fixme(ctx, &@$, "Unsupported 'technique11' declaration."); + } + +technique: + technique9 + | technique10 + | technique11 + buffer_declaration: buffer_type any_identifier colon_attribute { diff --git a/tests/hlsl/technique-fx_2.shader_test b/tests/hlsl/technique-fx_2.shader_test index 6e130747d..90c734d53 100644 --- a/tests/hlsl/technique-fx_2.shader_test +++ b/tests/hlsl/technique-fx_2.shader_test @@ -76,7 +76,7 @@ technique10 float4 f;
% fx_5_0 keyword fails with fx_2_0 profile -[effect fail] +[effect fail todo] technique { } @@ -85,7 +85,7 @@ technique11 { }
-[effect fail] +[effect fail todo] technique { } @@ -94,7 +94,7 @@ tEchnique10 { }
-[effect fail] +[effect fail todo] technique { } diff --git a/tests/hlsl/technique-fx_4.shader_test b/tests/hlsl/technique-fx_4.shader_test index 230553e58..fb8a3e675 100644 --- a/tests/hlsl/technique-fx_4.shader_test +++ b/tests/hlsl/technique-fx_4.shader_test @@ -46,7 +46,7 @@ technique11 { }
-[effect fail] +[effect fail todo] technique { } @@ -55,7 +55,7 @@ tEchnique10 { }
-[effect fail] +[effect fail todo] technique { } diff --git a/tests/hlsl/technique-fx_5.shader_test b/tests/hlsl/technique-fx_5.shader_test index f0b511986..aeea1a84f 100644 --- a/tests/hlsl/technique-fx_5.shader_test +++ b/tests/hlsl/technique-fx_5.shader_test @@ -46,7 +46,7 @@ technique11 { }
-[effect fail] +[effect fail todo] technique { } @@ -55,7 +55,7 @@ tEchnique10 { }
-[effect fail] +[effect fail todo] technique { }
This merge request was approved by Giovanni Mascellani.
This merge request was approved by Henri Verbeet.
This merge request was approved by Zebediah Figura.