49 lines
1.3 KiB
Plaintext
49 lines
1.3 KiB
Plaintext
/*#pragma settings NoInline*/
|
|
uniform half uFloat;
|
|
|
|
// Reference a pipeline I/O parameter and a global uniform. This tests that all parameter variations
|
|
// are injected correctly.
|
|
void various_parameter_types(half a, out half b, inout half c) {
|
|
sk_FragColor = half4(a, b, c, uFloat); // `b` has an undefined value but should compile OK.
|
|
b = a;
|
|
c = uFloat;
|
|
}
|
|
|
|
void one_out_param(out half h) {
|
|
h = 2;
|
|
}
|
|
|
|
void one_out_param_indirect(out half h) {
|
|
one_out_param(h);
|
|
}
|
|
|
|
struct S {
|
|
half4 v;
|
|
};
|
|
|
|
void main() {
|
|
// local float
|
|
half x = 1;
|
|
one_out_param(x);
|
|
one_out_param_indirect(x);
|
|
various_parameter_types(x + 1, x, x);
|
|
|
|
// local vector
|
|
half4 v;
|
|
various_parameter_types(x + 1, v.x, v.x);
|
|
various_parameter_types(x + 1, v.y, v.y);
|
|
various_parameter_types(x + 1, v.x, v.y);
|
|
|
|
// local struct
|
|
S s;
|
|
various_parameter_types(x + 1, s.v.x, x);
|
|
various_parameter_types(x + 1, s.v.y, x);
|
|
}
|
|
|
|
// TODO(skia:13092): test the case in which a pipeline IO parameter is passed as out-param,
|
|
// directly and indirectly
|
|
// TODO(skia:13092): module-private out-param
|
|
// TODO(skia:13092): access an IO parameter while also passing it as an out-param
|
|
// TODO(skia:13092): mixing out params with in and inout
|
|
// TODO(skia:13092): swizzle assignment when that's supported
|