mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-18 01:15:39 +00:00
tint/test-runner: Split expectations for FXC and DXC
Change tint's `--fxc` flag to take the path of the FXC compiler DLL. Have tint attempt to validate with both FXC and DXC if `--validate` is passed. Fix the 'dirsWithNoPassExpectations' logic which looks like it got broken with the tint -> dawn merge. It also incorrectly applied filepath.FromSlash() on windows. Change-Id: I0f46aa5c21bc48a2abc48402c41f846aff4a8633 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/96800 Reviewed-by: Antonio Maiorano <amaiorano@google.com> Commit-Queue: Ben Clayton <bclayton@chromium.org>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
0778d9a48f
commit
7d34de88f1
@@ -0,0 +1,16 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
struct S {
|
||||
int data[64];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u1, space0);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
S s = (S)0;
|
||||
result.Store(0u, asuint(s.data[asint(ubo[0].x)]));
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
struct S {
|
||||
int data[64];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u1, space0);
|
||||
static S s = (S)0;
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
result.Store(0u, asuint(s.data[asint(ubo[0].x)]));
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u2, space0);
|
||||
|
||||
RWByteAddressBuffer ssbo : register(u1, space0);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
result.Store(0u, asuint(asint(ssbo.Load((4u * uint(asint(ubo[0].x)))))));
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[5];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u2, space0);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
const uint scalar_offset = ((16u * uint(asint(ubo[4].x)))) / 4;
|
||||
result.Store(0u, asuint(asint(ubo[scalar_offset / 4][scalar_offset % 4])));
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
struct S {
|
||||
int data[64];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u1, space0);
|
||||
groupshared S s;
|
||||
|
||||
struct tint_symbol_2 {
|
||||
uint local_invocation_index : SV_GroupIndex;
|
||||
};
|
||||
|
||||
void f_inner(uint local_invocation_index) {
|
||||
{
|
||||
[loop] for(uint idx = local_invocation_index; (idx < 64u); idx = (idx + 1u)) {
|
||||
const uint i = idx;
|
||||
s.data[i] = 0;
|
||||
}
|
||||
}
|
||||
GroupMemoryBarrierWithGroupSync();
|
||||
result.Store(0u, asuint(s.data[asint(ubo[0].x)]));
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f(tint_symbol_2 tint_symbol_1) {
|
||||
f_inner(tint_symbol_1.local_invocation_index);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
struct S {
|
||||
int data[64];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u1, space0);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
S s = (S)0;
|
||||
{
|
||||
int tint_symbol_2[64] = s.data;
|
||||
tint_symbol_2[asint(ubo[0].x)] = 1;
|
||||
s.data = tint_symbol_2;
|
||||
}
|
||||
result.Store(0u, asuint(s.data[3]));
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
struct S {
|
||||
int data[64];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u1, space0);
|
||||
|
||||
void x(inout S p) {
|
||||
{
|
||||
int tint_symbol_2[64] = p.data;
|
||||
tint_symbol_2[asint(ubo[0].x)] = 1;
|
||||
p.data = tint_symbol_2;
|
||||
}
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
S s = (S)0;
|
||||
x(s);
|
||||
result.Store(0u, asuint(s.data[3]));
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
struct S {
|
||||
int data[64];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u1, space0);
|
||||
static S s = (S)0;
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
{
|
||||
int tint_symbol_2[64] = s.data;
|
||||
tint_symbol_2[asint(ubo[0].x)] = 1;
|
||||
s.data = tint_symbol_2;
|
||||
}
|
||||
result.Store(0u, asuint(s.data[3]));
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
struct S {
|
||||
int data[64];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u1, space0);
|
||||
static S s = (S)0;
|
||||
|
||||
void x(inout S p) {
|
||||
{
|
||||
int tint_symbol_2[64] = p.data;
|
||||
tint_symbol_2[asint(ubo[0].x)] = 1;
|
||||
p.data = tint_symbol_2;
|
||||
}
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
x(s);
|
||||
result.Store(0u, asuint(s.data[3]));
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u2, space0);
|
||||
|
||||
RWByteAddressBuffer ssbo : register(u1, space0);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
ssbo.Store((4u * uint(asint(ubo[0].x))), asuint(1));
|
||||
result.Store(0u, asuint(asint(ssbo.Load(12u))));
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
cbuffer cbuffer_ubo : register(b0, space0) {
|
||||
uint4 ubo[1];
|
||||
};
|
||||
|
||||
struct S {
|
||||
int data[64];
|
||||
};
|
||||
|
||||
RWByteAddressBuffer result : register(u1, space0);
|
||||
groupshared S s;
|
||||
|
||||
struct tint_symbol_2 {
|
||||
uint local_invocation_index : SV_GroupIndex;
|
||||
};
|
||||
|
||||
void f_inner(uint local_invocation_index) {
|
||||
{
|
||||
[loop] for(uint idx = local_invocation_index; (idx < 64u); idx = (idx + 1u)) {
|
||||
const uint i = idx;
|
||||
s.data[i] = 0;
|
||||
}
|
||||
}
|
||||
GroupMemoryBarrierWithGroupSync();
|
||||
s.data[asint(ubo[0].x)] = 1;
|
||||
result.Store(0u, asuint(s.data[3]));
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f(tint_symbol_2 tint_symbol_1) {
|
||||
f_inner(tint_symbol_1.local_invocation_index);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
bug/fxc/gradient_in_varying_loop/1112.wgsl:23:33 warning: 'textureSample' must only be called from uniform control flow
|
||||
let sampleDepth : f32 = textureSample(depthTexture, Sampler, offset.xy).r;
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
bug/fxc/gradient_in_varying_loop/1112.wgsl:18:28 note: control flow depends on non-uniform value
|
||||
if (offset.x < 0.0 || offset.y < 0.0 || offset.x > 1.0 || offset.y > 1.0) {
|
||||
^^
|
||||
|
||||
bug/fxc/gradient_in_varying_loop/1112.wgsl:8:29 note: return value of 'textureSample' may be non-uniform
|
||||
let random: vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
SamplerState tint_symbol : register(s0, space0);
|
||||
Texture2D<float4> randomTexture : register(t1, space0);
|
||||
Texture2D<float4> depthTexture : register(t2, space0);
|
||||
|
||||
struct tint_symbol_2 {
|
||||
float2 vUV : TEXCOORD0;
|
||||
};
|
||||
struct tint_symbol_3 {
|
||||
float4 value : SV_Target0;
|
||||
};
|
||||
|
||||
float4 main_inner(float2 vUV) {
|
||||
const float3 random = randomTexture.Sample(tint_symbol, vUV).rgb;
|
||||
int i = 0;
|
||||
[loop] while (true) {
|
||||
if ((i < 1)) {
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
const float3 offset = float3((random.x).xxx);
|
||||
bool tint_tmp_2 = (offset.x < 0.0f);
|
||||
if (!tint_tmp_2) {
|
||||
tint_tmp_2 = (offset.y < 0.0f);
|
||||
}
|
||||
bool tint_tmp_1 = (tint_tmp_2);
|
||||
if (!tint_tmp_1) {
|
||||
tint_tmp_1 = (offset.x > 1.0f);
|
||||
}
|
||||
bool tint_tmp = (tint_tmp_1);
|
||||
if (!tint_tmp) {
|
||||
tint_tmp = (offset.y > 1.0f);
|
||||
}
|
||||
if ((tint_tmp)) {
|
||||
i = (i + 1);
|
||||
continue;
|
||||
}
|
||||
const float sampleDepth = depthTexture.Sample(tint_symbol, offset.xy).r;
|
||||
i = (i + 1);
|
||||
}
|
||||
return (1.0f).xxxx;
|
||||
}
|
||||
|
||||
tint_symbol_3 main(tint_symbol_2 tint_symbol_1) {
|
||||
const float4 inner_result = main_inner(tint_symbol_1.vUV);
|
||||
tint_symbol_3 wrapper_result = (tint_symbol_3)0;
|
||||
wrapper_result.value = inner_result;
|
||||
return wrapper_result;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
struct Particle {
|
||||
float3 position[8];
|
||||
float lifetime;
|
||||
float4 color;
|
||||
float3 velocity;
|
||||
};
|
||||
|
||||
ByteAddressBuffer particles : register(t3, space1);
|
||||
cbuffer cbuffer_sim : register(b4, space1) {
|
||||
uint4 sim[1];
|
||||
};
|
||||
|
||||
typedef float3 tint_symbol_3_ret[8];
|
||||
tint_symbol_3_ret tint_symbol_3(ByteAddressBuffer buffer, uint offset) {
|
||||
float3 arr[8] = (float3[8])0;
|
||||
{
|
||||
[loop] for(uint i_1 = 0u; (i_1 < 8u); i_1 = (i_1 + 1u)) {
|
||||
arr[i_1] = asfloat(buffer.Load3((offset + (i_1 * 16u))));
|
||||
}
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
Particle tint_symbol_2(ByteAddressBuffer buffer, uint offset) {
|
||||
const Particle tint_symbol_8 = {tint_symbol_3(buffer, (offset + 0u)), asfloat(buffer.Load((offset + 128u))), asfloat(buffer.Load4((offset + 144u))), asfloat(buffer.Load3((offset + 160u)))};
|
||||
return tint_symbol_8;
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
Particle particle = tint_symbol_2(particles, (176u * 0u));
|
||||
{
|
||||
float3 tint_symbol_1[8] = particle.position;
|
||||
tint_symbol_1[sim[0].x] = particle.position[sim[0].x];
|
||||
particle.position = tint_symbol_1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
void set_scalar_float2x4(inout float2x4 mat, int col, int row, float val) {
|
||||
switch (col) {
|
||||
case 0:
|
||||
mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
|
||||
break;
|
||||
case 1:
|
||||
mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cbuffer cbuffer_uniforms : register(b4, space1) {
|
||||
uint4 uniforms[1];
|
||||
};
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
float2x4 m1 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
set_scalar_float2x4(m1, 0, uniforms[0].x, 1.0f);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
void set_scalar_float2x4(inout float2x4 mat, int col, int row, float val) {
|
||||
switch (col) {
|
||||
case 0:
|
||||
mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
|
||||
break;
|
||||
case 1:
|
||||
mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cbuffer cbuffer_uniforms : register(b4, space1) {
|
||||
uint4 uniforms[1];
|
||||
};
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
float2x4 m1 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
set_scalar_float2x4(m1, uniforms[0].y, uniforms[0].x, 1.0f);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
void set_vector_float2x4(inout float2x4 mat, int col, float4 val) {
|
||||
switch (col) {
|
||||
case 0: mat[0] = val; break;
|
||||
case 1: mat[1] = val; break;
|
||||
}
|
||||
}
|
||||
|
||||
cbuffer cbuffer_uniforms : register(b4, space1) {
|
||||
uint4 uniforms[1];
|
||||
};
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
float2x4 m1 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
set_vector_float2x4(m1, uniforms[0].x, (1.0f).xxxx);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
void set_scalar_float2x4(inout float2x4 mat, int col, int row, float val) {
|
||||
switch (col) {
|
||||
case 0:
|
||||
mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
|
||||
break;
|
||||
case 1:
|
||||
mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cbuffer cbuffer_uniforms : register(b4, space1) {
|
||||
uint4 uniforms[1];
|
||||
};
|
||||
static float2x4 m1 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
set_scalar_float2x4(m1, 0, uniforms[0].x, 1.0f);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
void set_scalar_float2x4(inout float2x4 mat, int col, int row, float val) {
|
||||
switch (col) {
|
||||
case 0:
|
||||
mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
|
||||
break;
|
||||
case 1:
|
||||
mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cbuffer cbuffer_uniforms : register(b4, space1) {
|
||||
uint4 uniforms[1];
|
||||
};
|
||||
static float2x4 m1 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
set_scalar_float2x4(m1, uniforms[0].y, uniforms[0].x, 1.0f);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
void set_scalar_float2x4(inout float2x4 mat, int col, int row, float val) {
|
||||
switch (col) {
|
||||
case 0:
|
||||
mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
|
||||
break;
|
||||
case 1:
|
||||
mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cbuffer cbuffer_uniforms : register(b4, space1) {
|
||||
uint4 uniforms[1];
|
||||
};
|
||||
static float2x4 m1 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
set_scalar_float2x4(m1, uniforms[0].y, 0, 1.0f);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
void set_scalar_float2x4(inout float2x4 mat, int col, int row, float val) {
|
||||
switch (col) {
|
||||
case 0:
|
||||
mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
|
||||
break;
|
||||
case 1:
|
||||
mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cbuffer cbuffer_uniforms : register(b4, space1) {
|
||||
uint4 uniforms[1];
|
||||
};
|
||||
static float2x4 m1 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
set_scalar_float2x4(m1, uniforms[0].y, 0, 1.0f);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
void set_vector_float2x4(inout float2x4 mat, int col, float4 val) {
|
||||
switch (col) {
|
||||
case 0: mat[0] = val; break;
|
||||
case 1: mat[1] = val; break;
|
||||
}
|
||||
}
|
||||
|
||||
cbuffer cbuffer_uniforms : register(b4, space1) {
|
||||
uint4 uniforms[1];
|
||||
};
|
||||
static float2x4 m1 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
set_vector_float2x4(m1, uniforms[0].x, (1.0f).xxxx);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
void set_float2(inout float2 vec, int idx, float val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_int3(inout int3 vec, int idx, int val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_uint4(inout uint4 vec, int idx, uint val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_bool2(inout bool2 vec, int idx, bool val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
static float2 v2f = float2(0.0f, 0.0f);
|
||||
static int3 v3i = int3(0, 0, 0);
|
||||
static uint4 v4u = uint4(0u, 0u, 0u, 0u);
|
||||
static bool2 v2b = bool2(false, false);
|
||||
|
||||
void foo() {
|
||||
{
|
||||
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
set_float2(v2f, i, 1.0f);
|
||||
set_int3(v3i, i, 1);
|
||||
set_uint4(v4u, i, 1u);
|
||||
set_bool2(v2b, i, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
{
|
||||
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
foo();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
void set_float2(inout float2 vec, int idx, float val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_int3(inout int3 vec, int idx, int val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_uint4(inout uint4 vec, int idx, uint val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_bool2(inout bool2 vec, int idx, bool val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
static float2 v2f = float2(0.0f, 0.0f);
|
||||
static int3 v3i = int3(0, 0, 0);
|
||||
static uint4 v4u = uint4(0u, 0u, 0u, 0u);
|
||||
static bool2 v2b = bool2(false, false);
|
||||
|
||||
void foo() {
|
||||
int i = 0;
|
||||
set_float2(v2f, i, 1.0f);
|
||||
set_int3(v3i, i, 1);
|
||||
set_uint4(v4u, i, 1u);
|
||||
set_bool2(v2b, i, true);
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
{
|
||||
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
foo();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
void set_float2(inout float2 vec, int idx, float val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_float3(inout float3 vec, int idx, float val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_float4(inout float4 vec, int idx, float val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_int2(inout int2 vec, int idx, int val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_int3(inout int3 vec, int idx, int val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_int4(inout int4 vec, int idx, int val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_uint2(inout uint2 vec, int idx, uint val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_uint3(inout uint3 vec, int idx, uint val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_uint4(inout uint4 vec, int idx, uint val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_bool2(inout bool2 vec, int idx, bool val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_bool3(inout bool3 vec, int idx, bool val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_bool4(inout bool4 vec, int idx, bool val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
float2 v2f = float2(0.0f, 0.0f);
|
||||
float3 v3f = float3(0.0f, 0.0f, 0.0f);
|
||||
float4 v4f = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
int2 v2i = int2(0, 0);
|
||||
int3 v3i = int3(0, 0, 0);
|
||||
int4 v4i = int4(0, 0, 0, 0);
|
||||
uint2 v2u = uint2(0u, 0u);
|
||||
uint3 v3u = uint3(0u, 0u, 0u);
|
||||
uint4 v4u = uint4(0u, 0u, 0u, 0u);
|
||||
bool2 v2b = bool2(false, false);
|
||||
bool3 v3b = bool3(false, false, false);
|
||||
bool4 v4b = bool4(false, false, false, false);
|
||||
{
|
||||
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
set_float2(v2f, i, 1.0f);
|
||||
set_float3(v3f, i, 1.0f);
|
||||
set_float4(v4f, i, 1.0f);
|
||||
set_int2(v2i, i, 1);
|
||||
set_int3(v3i, i, 1);
|
||||
set_int4(v4i, i, 1);
|
||||
set_uint2(v2u, i, 1u);
|
||||
set_uint3(v3u, i, 1u);
|
||||
set_uint4(v4u, i, 1u);
|
||||
set_bool2(v2b, i, true);
|
||||
set_bool3(v3b, i, true);
|
||||
set_bool4(v4b, i, true);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
void set_float2(inout float2 vec, int idx, float val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_int3(inout int3 vec, int idx, int val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_uint4(inout uint4 vec, int idx, uint val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_bool2(inout bool2 vec, int idx, bool val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
float2 v2f = float2(0.0f, 0.0f);
|
||||
float2 v2f_2 = float2(0.0f, 0.0f);
|
||||
int3 v3i = int3(0, 0, 0);
|
||||
int3 v3i_2 = int3(0, 0, 0);
|
||||
uint4 v4u = uint4(0u, 0u, 0u, 0u);
|
||||
uint4 v4u_2 = uint4(0u, 0u, 0u, 0u);
|
||||
bool2 v2b = bool2(false, false);
|
||||
bool2 v2b_2 = bool2(false, false);
|
||||
{
|
||||
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
set_float2(v2f, i, 1.0f);
|
||||
set_int3(v3i, i, 1);
|
||||
set_uint4(v4u, i, 1u);
|
||||
set_bool2(v2b, i, true);
|
||||
set_float2(v2f_2, i, 1.0f);
|
||||
set_int3(v3i_2, i, 1);
|
||||
set_uint4(v4u_2, i, 1u);
|
||||
set_bool2(v2b_2, i, true);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
void set_float2(inout float2 vec, int idx, float val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_int2(inout int2 vec, int idx, int val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_uint2(inout uint2 vec, int idx, uint val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_bool2(inout bool2 vec, int idx, bool val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_float3(inout float3 vec, int idx, float val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_float4(inout float4 vec, int idx, float val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_int3(inout int3 vec, int idx, int val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_int4(inout int4 vec, int idx, int val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_uint3(inout uint3 vec, int idx, uint val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_uint4(inout uint4 vec, int idx, uint val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_bool3(inout bool3 vec, int idx, bool val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_bool4(inout bool4 vec, int idx, bool val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
float2 v2f = float2(0.0f, 0.0f);
|
||||
float3 v3f = float3(0.0f, 0.0f, 0.0f);
|
||||
float4 v4f = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
int2 v2i = int2(0, 0);
|
||||
int3 v3i = int3(0, 0, 0);
|
||||
int4 v4i = int4(0, 0, 0, 0);
|
||||
uint2 v2u = uint2(0u, 0u);
|
||||
uint3 v3u = uint3(0u, 0u, 0u);
|
||||
uint4 v4u = uint4(0u, 0u, 0u, 0u);
|
||||
bool2 v2b = bool2(false, false);
|
||||
bool3 v3b = bool3(false, false, false);
|
||||
bool4 v4b = bool4(false, false, false, false);
|
||||
{
|
||||
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
|
||||
set_float2(v2f, i, 1.0f);
|
||||
set_int2(v2i, i, 1);
|
||||
set_uint2(v2u, i, 1u);
|
||||
set_bool2(v2b, i, true);
|
||||
}
|
||||
}
|
||||
int i = 0;
|
||||
set_float3(v3f, i, 1.0f);
|
||||
set_float4(v4f, i, 1.0f);
|
||||
set_int3(v3i, i, 1);
|
||||
set_int4(v4i, i, 1);
|
||||
set_uint3(v3u, i, 1u);
|
||||
set_uint4(v4u, i, 1u);
|
||||
set_bool3(v3b, i, true);
|
||||
set_bool4(v4b, i, true);
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
void set_float2(inout float2 vec, int idx, float val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_float3(inout float3 vec, int idx, float val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_float4(inout float4 vec, int idx, float val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_int2(inout int2 vec, int idx, int val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_int3(inout int3 vec, int idx, int val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_int4(inout int4 vec, int idx, int val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_uint2(inout uint2 vec, int idx, uint val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_uint3(inout uint3 vec, int idx, uint val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_uint4(inout uint4 vec, int idx, uint val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
void set_bool2(inout bool2 vec, int idx, bool val) {
|
||||
vec = (idx.xx == int2(0, 1)) ? val.xx : vec;
|
||||
}
|
||||
|
||||
void set_bool3(inout bool3 vec, int idx, bool val) {
|
||||
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
|
||||
}
|
||||
|
||||
void set_bool4(inout bool4 vec, int idx, bool val) {
|
||||
vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
float2 v2f = float2(0.0f, 0.0f);
|
||||
float3 v3f = float3(0.0f, 0.0f, 0.0f);
|
||||
float4 v4f = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
int2 v2i = int2(0, 0);
|
||||
int3 v3i = int3(0, 0, 0);
|
||||
int4 v4i = int4(0, 0, 0, 0);
|
||||
uint2 v2u = uint2(0u, 0u);
|
||||
uint3 v3u = uint3(0u, 0u, 0u);
|
||||
uint4 v4u = uint4(0u, 0u, 0u, 0u);
|
||||
bool2 v2b = bool2(false, false);
|
||||
bool3 v3b = bool3(false, false, false);
|
||||
bool4 v4b = bool4(false, false, false, false);
|
||||
int i = 0;
|
||||
set_float2(v2f, i, 1.0f);
|
||||
set_float3(v3f, i, 1.0f);
|
||||
set_float4(v4f, i, 1.0f);
|
||||
set_int2(v2i, i, 1);
|
||||
set_int3(v3i, i, 1);
|
||||
set_int4(v4i, i, 1);
|
||||
set_uint2(v2u, i, 1u);
|
||||
set_uint3(v3u, i, 1u);
|
||||
set_uint4(v4u, i, 1u);
|
||||
set_bool2(v2b, i, true);
|
||||
set_bool3(v3b, i, true);
|
||||
set_bool4(v4b, i, true);
|
||||
return;
|
||||
}
|
||||
Reference in New Issue
Block a user