| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- // RUN: %clang_cc1 -fsyntax-only -ffreestanding -verify %s
- // :FXC_VERIFY_ARGUMENTS: /E main /T ps_5_1 /Gec
- Texture2D tex : register(t1), tex2 : register(t2)
- /*verify-ast
- VarDecl <col:1, col:11> col:11 used tex 'Texture2D':'Texture2D<vector<float, 4> >'
- `-RegisterAssignment <col:17> register(t1)
- VarDecl <col:1, col:31> col:31 tex2 'Texture2D':'Texture2D<vector<float, 4> >'
- `-RegisterAssignment <col:38> register(t2)
- VarDecl <col:1, line:19:10> col:4 texa 'Texture2D [3]'
- */
- < int foo=1; > /* expected-warning {{possible effect annotation ignored - effect syntax is deprecated}} fxc-pass {{}} */
- { /* expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- Texture = tex;
- Filter = MIN_MAG_MIP_LINEAR;
- MaxAnisotropy = 0;
- AddressU = Wrap;
- AddressV = Wrap;
- }, texa[3]
- < /* expected-warning {{possible effect annotation ignored - effect syntax is deprecated}} fxc-pass {{}} */
- string Name = "texa";
- int ArraySize = 3;
- >;
- Texture texCaps; /* expected-warning {{effect object ignored - effect syntax is deprecated}} fxc-pass {{}} */
- SamplerState samLinear : register(s7)
- /*verify-ast
- VarDecl <col:1, col:14> col:14 used samLinear 'SamplerState'
- `-RegisterAssignment <col:26> register(s7)
- */
- < bool foo=1 > 2; > /* expected-warning {{possible effect annotation ignored - effect syntax is deprecated}} fxc-pass {{}} */
- { /* expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- Texture = tex;
- Filter = MIN_MAG_MIP_LINEAR;
- MaxAnisotropy = 0;
- AddressU = Wrap;
- AddressV = Wrap;
- };
- // sampler_state objects legal on both SamplerState and SamplerComparisonState objects:
- sampler S : register(s1) = sampler_state {texture=tex;}; /* expected-warning {{effect sampler_state assignment ignored - effect syntax is deprecated}} fxc-pass {{}} */
- /*verify-ast
- VarDecl <col:1, col:9> col:9 S 'sampler':'SamplerState'
- `-RegisterAssignment <col:13> register(s1)
- */
- SamplerComparisonState SC : register(s3) = sampler_state {texture=tex;}; /* expected-warning {{effect sampler_state assignment ignored - effect syntax is deprecated}} fxc-pass {{}} */
- float4 main() : SV_Target
- {
- StateBlock SB; /* expected-error {{unknown type name 'StateBlock'}} fxc-error {{X3000: unrecognized identifier 'SB'}} fxc-error {{X3000: unrecognized identifier 'StateBlock'}} */
- {
- int StateBlock = 1;
- }
- // Note this is ok:
- int PixelShadeR = 1;
- RenderTargetView rtv { state=foo; }; /* expected-warning {{effect object ignored - effect syntax is deprecated}} expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- /*verify-ast
- No matching AST found for line!
- */
- Texture2D l_tex { state=foo; }; /* expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- /*verify-ast
- DeclStmt <col:3, col:33>
- `-VarDecl <col:3, col:13> col:13 l_tex 'Texture2D':'Texture2D<vector<float, 4> >'
- */
- // This is allowed (deprecated effect state block warning):
- int foobar {blah=foo;}; /* expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- // This is not:
- int foobar2 {blah=foo;} = 5; /* expected-error {{expected ';' at end of declaration}} expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-error {{X3000: syntax error: unexpected token '='}} */
- // But this isn't:
- int RenderTargetView = 1; /* fxc-error {{X3000: syntax error: unexpected token 'RenderTargetView'}} */
- int PixelShader = 1; /* fxc-error {{X3000: syntax error: unexpected token 'PixelShader'}} */
- int pixelshader = 1; // nor is this /* fxc-error {{X3000: syntax error: unexpected token 'pixelshader'}} */
- // This is not ok:
- // error X3000: syntax error: unexpected token 'TechNiQue'
- int TechNiQue = 1; /* fxc-error {{X3000: syntax error: unexpected token 'TechNiQue'}} */
- return tex.Sample(samLinear, float2(0.1,0.2));
- /*verify-ast
- ReturnStmt <col:3, col:47>
- `-CXXMemberCallExpr <col:10, col:47> 'vector<float, 4>'
- |-MemberExpr <col:10, col:14> '<bound member function type>' .Sample
- | `-DeclRefExpr <col:10> 'Texture2D':'Texture2D<vector<float, 4> >' lvalue Var 'tex' 'Texture2D':'Texture2D<vector<float, 4> >'
- |-ImplicitCastExpr <col:21> 'SamplerState' <LValueToRValue>
- | `-DeclRefExpr <col:21> 'SamplerState' lvalue Var 'samLinear' 'SamplerState'
- `-CXXFunctionalCastExpr <col:32, col:46> 'float2':'vector<float, 2>' functional cast to float2 <NoOp>
- `-InitListExpr <col:39, col:43> 'float2':'vector<float, 2>'
- |-ImplicitCastExpr <col:39> 'float' <FloatingCast>
- | `-FloatingLiteral <col:39> 'literal float' 1.000000e-01
- `-ImplicitCastExpr <col:43> 'float' <FloatingCast>
- `-FloatingLiteral <col:43> 'literal float' 2.000000e-01
- */
- }
- // Effects objects to ignore:
- // These all accept/ignore effect annotations < ... >
- // These all accept/ignore state block syntax
- texture tex1 < int foo=1; > { state=foo; }; // Case insensitive! /* expected-warning {{effect object ignored - effect syntax is deprecated}} expected-warning {{effect state block ignored - effect syntax is deprecated}} expected-warning {{possible effect annotation ignored - effect syntax is deprecated}} fxc-pass {{}} */
- static const PixelShader ps1 { state=foo; }; /* expected-warning {{effect object ignored - effect syntax is deprecated}} expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- /*verify-ast
- No matching AST found for line!
- */
- // expected-note@? {{'PixelShader' declared here}}
- PixelShadeR ps < int foo=1;> = ps1; // Case insensitive! /* expected-error {{unknown type name 'PixelShadeR'; did you mean 'PixelShader'?}} expected-warning {{effect object ignored - effect syntax is deprecated}} expected-warning {{possible effect annotation ignored - effect syntax is deprecated}} fxc-pass {{}} */
- /*verify-ast
- No matching AST found for line!
- */
- // expected-note@? {{'VertexShader' declared here}}
- VertexShadeR vs; // Case insensitive! /* expected-error {{unknown type name 'VertexShadeR'; did you mean 'VertexShader'?}} expected-warning {{effect object ignored - effect syntax is deprecated}} fxc-pass {{}} */
- // Case sensitive
- pixelfragment pfrag; /* expected-warning {{effect object ignored - effect syntax is deprecated}} fxc-pass {{}} */
- vertexfragment vfrag; /* expected-warning {{effect object ignored - effect syntax is deprecated}} fxc-pass {{}} */
- ComputeShader cs; /* expected-warning {{effect object ignored - effect syntax is deprecated}} fxc-pass {{}} */
- DomainShader ds; /* expected-warning {{effect object ignored - effect syntax is deprecated}} fxc-pass {{}} */
- GeometryShader gs; /* expected-warning {{effect object ignored - effect syntax is deprecated}} fxc-pass {{}} */
- HullShader hs; /* expected-warning {{effect object ignored - effect syntax is deprecated}} fxc-pass {{}} */
- BlendState BS { state=foo; }; /* expected-warning {{effect object ignored - effect syntax is deprecated}} expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- DepthStencilState DSS { state=foo; }; /* expected-warning {{effect object ignored - effect syntax is deprecated}} expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- DepthStencilView SDV; /* expected-warning {{effect object ignored - effect syntax is deprecated}} fxc-pass {{}} */
- RasterizerState RS { state=foo; }; /* expected-warning {{effect object ignored - effect syntax is deprecated}} expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- RenderTargetView RTV < int foo=1;> ; /* expected-warning {{effect object ignored - effect syntax is deprecated}} expected-warning {{possible effect annotation ignored - effect syntax is deprecated}} fxc-pass {{}} */
- // Not case-sensitive! Identifier optional
- technique T0 /* expected-warning {{effect technique ignored - effect syntax is deprecated}} fxc-pass {{}} */
- /*verify-ast
- No matching AST found for line!
- */
- {
- pass {}
- }
- Technique /* expected-warning {{effect technique ignored - effect syntax is deprecated}} fxc-pass {{}} */
- {
- pass {}
- }
- // Case-sensitive: Identifier optional
- technique10 T10 /* expected-warning {{effect technique ignored - effect syntax is deprecated}} fxc-pass {{}} */
- /*verify-ast
- No matching AST found for line!
- */
- {
- pass {}
- }
- technique10 /* expected-warning {{effect technique ignored - effect syntax is deprecated}} fxc-pass {{}} */
- {
- pass {}
- }
- technique11 /* expected-warning {{effect technique ignored - effect syntax is deprecated}} fxc-pass {{}} */
- {
- pass {}
- }
- // We don't bother handling weird casing, so this will be a syntax error:
- TechNiQue /* expected-error {{HLSL requires a type specifier for all declarations}} fxc-pass {{}} */
- /*verify-ast
- VarDecl <col:1> col:1 invalid TechNiQue 'const int'
- */
- { /* expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- pass {}
- } /* expected-error {{expected ';' after top level declarator}} fxc-pass {{}} */
- int foobar3;
- /*verify-ast
- VarDecl <col:1, col:5> col:5 foobar3 'const int'
- */
- TechNique T5 /* expected-error {{unknown type name 'TechNique'}} fxc-pass {{}} */
- /*verify-ast
- VarDecl <col:1, col:11> col:11 invalid T5 'const int'
- */
- { /* expected-warning {{effect state block ignored - effect syntax is deprecated}} fxc-pass {{}} */
- pass {}
- } /* expected-error {{expected ';' after top level declarator}} fxc-pass {{}} */
- int foobar4;
- /*verify-ast
- VarDecl <col:1, col:5> col:5 foobar4 'const int'
- */
- int foobar5[] {1, 2, 3}; /* expected-error {{definition of variable with array type needs an explicit size or an initializer}} expected-warning {{effect state block ignored - effect syntax is deprecated. To use braces as an initializer use them with equal signs.}} fxc-error {{X3000: syntax error: unexpected integer constant}} */
- int foobar6[4] {1, 2, 3, 4}; /* expected-warning {{effect state block ignored - effect syntax is deprecated. To use braces as an initializer use them with equal signs.}} fxc-error {{X3000: syntax error: unexpected integer constant}} */
|