struct OS { SamplerState ss; float a; Texture2D tex; }; SamplerState gss; SamplerState gss2; Texture2D gtex; float4 osCall(OS s) { return s.a * s.tex.Sample(s.ss, float2(0.2, 0.3)); } float4 main() : SV_TARGET0 { OS os; os.ss = gss2; os.ss = gss; os.tex = gtex; os.a = 3.0; // this should give an error //SamplerState localss; //localss = gss2; return osCall(os); }