dawn-cmake/test/buffer/storage/static_index/read.wgsl.expected.hlsl
Ben Clayton 51cfe26bb7 writer/hlsl: Simplify UBO accesses for static indexing
Use the new semantic constant value information to significantly reduce the complex indexing logic emitted for UBO accesses.
This will dramatically reduce the number of `for` loops that are decayed to `while` loops.

Change-Id: I1b0adb5edde2b4ed39c6beafc2e28106b86e0edd
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/57701
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
2021-07-13 12:18:13 +00:00

43 lines
1.4 KiB
HLSL

struct Inner {
int x;
};
struct tint_padded_array_element {
Inner el;
};
float2x3 tint_symbol_6(ByteAddressBuffer buffer, uint offset) {
return float2x3(asfloat(buffer.Load3((offset + 0u))), asfloat(buffer.Load3((offset + 16u))));
}
float3x2 tint_symbol_8(ByteAddressBuffer buffer, uint offset) {
return float3x2(asfloat(buffer.Load2((offset + 0u))), asfloat(buffer.Load2((offset + 8u))), asfloat(buffer.Load2((offset + 16u))));
}
Inner tint_symbol_9(ByteAddressBuffer buffer, uint offset) {
const Inner tint_symbol_11 = {asint(buffer.Load((offset + 0u)))};
return tint_symbol_11;
}
typedef tint_padded_array_element tint_symbol_10_ret[4];
tint_symbol_10_ret tint_symbol_10(ByteAddressBuffer buffer, uint offset) {
const tint_padded_array_element tint_symbol_12[4] = {{tint_symbol_9(buffer, (offset + 0u))}, {tint_symbol_9(buffer, (offset + 16u))}, {tint_symbol_9(buffer, (offset + 32u))}, {tint_symbol_9(buffer, (offset + 48u))}};
return tint_symbol_12;
}
ByteAddressBuffer s : register(t0, space0);
[numthreads(1, 1, 1)]
void main() {
const int3 a = asint(s.Load3(0u));
const int b = asint(s.Load(12u));
const uint3 c = s.Load3(16u);
const uint d = s.Load(28u);
const float3 e = asfloat(s.Load3(32u));
const float f = asfloat(s.Load(44u));
const float2x3 g = tint_symbol_6(s, 48u);
const float3x2 h = tint_symbol_8(s, 80u);
const Inner i = tint_symbol_9(s, 104u);
const tint_padded_array_element j[4] = tint_symbol_10(s, 108u);
return;
}