mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-09 13:38:00 +00:00
writer/hlsl: Emit UBO as an array of vector
Instead of a ConstantBuffer. HLSL requires that each structure field in a UBO is 16 byte aligned. WGSL has much looser constraints with its UBO field alignment rules. Instead generate an array of uint4 vectors, and index into this, much like we index into [RW]ByteAddressBuffers for SSBOs. Extend the DecomposeStorageAccess transform to support uniforms too. This has been renamed to DecomposeMemoryAccess. Change-Id: I3868ff80af1ab3b3dddfbf5b969724cb87ef0744 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/55246 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
@@ -4,40 +4,44 @@ void unused_entry_point() {
|
||||
}
|
||||
|
||||
struct tint_padded_array_element {
|
||||
/* 0x0000 */ int el;
|
||||
/* 0x0004 */ int tint_pad_0[3];
|
||||
int el;
|
||||
};
|
||||
|
||||
tint_padded_array_element make_tint_padded_array_element(int param_0) {
|
||||
tint_padded_array_element output;
|
||||
output.el = param_0;
|
||||
return output;
|
||||
}
|
||||
struct tint_array_wrapper {
|
||||
/* 0x0000 */ tint_padded_array_element arr[4];
|
||||
tint_padded_array_element arr[4];
|
||||
};
|
||||
struct S {
|
||||
/* 0x0000 */ tint_array_wrapper arr;
|
||||
tint_array_wrapper arr;
|
||||
};
|
||||
|
||||
tint_array_wrapper tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
|
||||
const tint_array_wrapper tint_symbol_3 = {{make_tint_padded_array_element(asint(buffer.Load((offset + 0u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 16u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 32u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 48u))))}};
|
||||
return tint_symbol_3;
|
||||
tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
|
||||
const int scalar_offset = ((offset + 0u)) / 4;
|
||||
const int scalar_offset_1 = ((offset + 16u)) / 4;
|
||||
const int scalar_offset_2 = ((offset + 32u)) / 4;
|
||||
const int scalar_offset_3 = ((offset + 48u)) / 4;
|
||||
const tint_array_wrapper tint_symbol_5 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
|
||||
return tint_symbol_5;
|
||||
}
|
||||
|
||||
tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
|
||||
const tint_array_wrapper tint_symbol_6 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
|
||||
return tint_symbol_6;
|
||||
}
|
||||
|
||||
static tint_array_wrapper src_private;
|
||||
groupshared tint_array_wrapper src_workgroup;
|
||||
ConstantBuffer<S> src_uniform : register(b0, space0);
|
||||
cbuffer cbuffer_src_uniform : register(b0, space0) {
|
||||
uint4 src_uniform[4];
|
||||
};
|
||||
RWByteAddressBuffer src_storage : register(u1, space0);
|
||||
|
||||
tint_array_wrapper ret_arr() {
|
||||
const tint_array_wrapper tint_symbol_4 = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
return tint_symbol_4;
|
||||
const tint_array_wrapper tint_symbol_7 = {{{0}, {0}, {0}, {0}}};
|
||||
return tint_symbol_7;
|
||||
}
|
||||
|
||||
S ret_struct_arr() {
|
||||
const S tint_symbol_5 = {{{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}}};
|
||||
return tint_symbol_5;
|
||||
const S tint_symbol_8 = {{{{0}, {0}, {0}, {0}}}};
|
||||
return tint_symbol_8;
|
||||
}
|
||||
|
||||
struct tint_array_wrapper_3 {
|
||||
@@ -51,20 +55,20 @@ struct tint_array_wrapper_1 {
|
||||
};
|
||||
|
||||
void foo(tint_array_wrapper src_param) {
|
||||
tint_array_wrapper src_function = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
tint_array_wrapper tint_symbol = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
const tint_array_wrapper tint_symbol_6 = {{make_tint_padded_array_element(1), make_tint_padded_array_element(2), make_tint_padded_array_element(3), make_tint_padded_array_element(3)}};
|
||||
tint_symbol = tint_symbol_6;
|
||||
tint_array_wrapper src_function = {{{0}, {0}, {0}, {0}}};
|
||||
tint_array_wrapper tint_symbol = {{{0}, {0}, {0}, {0}}};
|
||||
const tint_array_wrapper tint_symbol_9 = {{{1}, {2}, {3}, {3}}};
|
||||
tint_symbol = tint_symbol_9;
|
||||
tint_symbol = src_param;
|
||||
tint_symbol = ret_arr();
|
||||
const tint_array_wrapper src_let = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
const tint_array_wrapper src_let = {{{0}, {0}, {0}, {0}}};
|
||||
tint_symbol = src_let;
|
||||
tint_symbol = src_function;
|
||||
tint_symbol = src_private;
|
||||
tint_symbol = src_workgroup;
|
||||
tint_symbol = ret_struct_arr().arr;
|
||||
tint_symbol = src_uniform.arr;
|
||||
tint_symbol = tint_symbol_2(src_storage, 0u);
|
||||
tint_symbol = tint_symbol_2(src_uniform, 0u);
|
||||
tint_symbol = tint_symbol_4(src_storage, 0u);
|
||||
tint_array_wrapper_1 dst_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
|
||||
tint_array_wrapper_1 src_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
|
||||
dst_nested = src_nested;
|
||||
|
||||
@@ -4,30 +4,34 @@ void unused_entry_point() {
|
||||
}
|
||||
|
||||
struct tint_padded_array_element {
|
||||
/* 0x0000 */ int el;
|
||||
/* 0x0004 */ int tint_pad_0[3];
|
||||
int el;
|
||||
};
|
||||
|
||||
tint_padded_array_element make_tint_padded_array_element(int param_0) {
|
||||
tint_padded_array_element output;
|
||||
output.el = param_0;
|
||||
return output;
|
||||
}
|
||||
struct tint_array_wrapper {
|
||||
/* 0x0000 */ tint_padded_array_element arr[4];
|
||||
tint_padded_array_element arr[4];
|
||||
};
|
||||
struct S {
|
||||
/* 0x0000 */ tint_array_wrapper arr;
|
||||
tint_array_wrapper arr;
|
||||
};
|
||||
|
||||
tint_array_wrapper tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
|
||||
const tint_array_wrapper tint_symbol_3 = {{make_tint_padded_array_element(asint(buffer.Load((offset + 0u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 16u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 32u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 48u))))}};
|
||||
return tint_symbol_3;
|
||||
tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
|
||||
const int scalar_offset = ((offset + 0u)) / 4;
|
||||
const int scalar_offset_1 = ((offset + 16u)) / 4;
|
||||
const int scalar_offset_2 = ((offset + 32u)) / 4;
|
||||
const int scalar_offset_3 = ((offset + 48u)) / 4;
|
||||
const tint_array_wrapper tint_symbol_5 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
|
||||
return tint_symbol_5;
|
||||
}
|
||||
|
||||
tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
|
||||
const tint_array_wrapper tint_symbol_6 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
|
||||
return tint_symbol_6;
|
||||
}
|
||||
|
||||
static tint_array_wrapper src_private;
|
||||
groupshared tint_array_wrapper src_workgroup;
|
||||
ConstantBuffer<S> src_uniform : register(b0, space0);
|
||||
cbuffer cbuffer_src_uniform : register(b0, space0) {
|
||||
uint4 src_uniform[4];
|
||||
};
|
||||
RWByteAddressBuffer src_storage : register(u1, space0);
|
||||
static tint_array_wrapper tint_symbol;
|
||||
|
||||
@@ -44,29 +48,29 @@ struct tint_array_wrapper_1 {
|
||||
static tint_array_wrapper_1 dst_nested;
|
||||
|
||||
tint_array_wrapper ret_arr() {
|
||||
const tint_array_wrapper tint_symbol_4 = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
return tint_symbol_4;
|
||||
const tint_array_wrapper tint_symbol_7 = {{{0}, {0}, {0}, {0}}};
|
||||
return tint_symbol_7;
|
||||
}
|
||||
|
||||
S ret_struct_arr() {
|
||||
const S tint_symbol_5 = {{{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}}};
|
||||
return tint_symbol_5;
|
||||
const S tint_symbol_8 = {{{{0}, {0}, {0}, {0}}}};
|
||||
return tint_symbol_8;
|
||||
}
|
||||
|
||||
void foo(tint_array_wrapper src_param) {
|
||||
tint_array_wrapper src_function = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
const tint_array_wrapper tint_symbol_6 = {{make_tint_padded_array_element(1), make_tint_padded_array_element(2), make_tint_padded_array_element(3), make_tint_padded_array_element(3)}};
|
||||
tint_symbol = tint_symbol_6;
|
||||
tint_array_wrapper src_function = {{{0}, {0}, {0}, {0}}};
|
||||
const tint_array_wrapper tint_symbol_9 = {{{1}, {2}, {3}, {3}}};
|
||||
tint_symbol = tint_symbol_9;
|
||||
tint_symbol = src_param;
|
||||
tint_symbol = ret_arr();
|
||||
const tint_array_wrapper src_let = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
const tint_array_wrapper src_let = {{{0}, {0}, {0}, {0}}};
|
||||
tint_symbol = src_let;
|
||||
tint_symbol = src_function;
|
||||
tint_symbol = src_private;
|
||||
tint_symbol = src_workgroup;
|
||||
tint_symbol = ret_struct_arr().arr;
|
||||
tint_symbol = src_uniform.arr;
|
||||
tint_symbol = tint_symbol_2(src_storage, 0u);
|
||||
tint_symbol = tint_symbol_2(src_uniform, 0u);
|
||||
tint_symbol = tint_symbol_4(src_storage, 0u);
|
||||
tint_array_wrapper_1 src_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
|
||||
dst_nested = src_nested;
|
||||
}
|
||||
|
||||
@@ -4,28 +4,30 @@ void unused_entry_point() {
|
||||
}
|
||||
|
||||
struct tint_padded_array_element {
|
||||
/* 0x0000 */ int el;
|
||||
/* 0x0004 */ int tint_pad_0[3];
|
||||
int el;
|
||||
};
|
||||
|
||||
tint_padded_array_element make_tint_padded_array_element(int param_0) {
|
||||
tint_padded_array_element output;
|
||||
output.el = param_0;
|
||||
return output;
|
||||
}
|
||||
struct tint_array_wrapper {
|
||||
/* 0x0000 */ tint_padded_array_element arr[4];
|
||||
tint_padded_array_element arr[4];
|
||||
};
|
||||
struct S {
|
||||
/* 0x0000 */ tint_array_wrapper arr;
|
||||
tint_array_wrapper arr;
|
||||
};
|
||||
|
||||
tint_array_wrapper tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
|
||||
const tint_array_wrapper tint_symbol_9 = {{make_tint_padded_array_element(asint(buffer.Load((offset + 0u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 16u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 32u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 48u))))}};
|
||||
return tint_symbol_9;
|
||||
tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
|
||||
const int scalar_offset = ((offset + 0u)) / 4;
|
||||
const int scalar_offset_1 = ((offset + 16u)) / 4;
|
||||
const int scalar_offset_2 = ((offset + 32u)) / 4;
|
||||
const int scalar_offset_3 = ((offset + 48u)) / 4;
|
||||
const tint_array_wrapper tint_symbol_11 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
|
||||
return tint_symbol_11;
|
||||
}
|
||||
|
||||
void tint_symbol_4(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper value) {
|
||||
tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
|
||||
const tint_array_wrapper tint_symbol_12 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
|
||||
return tint_symbol_12;
|
||||
}
|
||||
|
||||
void tint_symbol_6(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper value) {
|
||||
buffer.Store((offset + 0u), asuint(value.arr[0u].el));
|
||||
buffer.Store((offset + 16u), asuint(value.arr[1u].el));
|
||||
buffer.Store((offset + 32u), asuint(value.arr[2u].el));
|
||||
@@ -33,64 +35,66 @@ void tint_symbol_4(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper v
|
||||
}
|
||||
|
||||
struct tint_array_wrapper_3 {
|
||||
/* 0x0000 */ int arr[2];
|
||||
int arr[2];
|
||||
};
|
||||
struct tint_array_wrapper_2 {
|
||||
/* 0x0000 */ tint_array_wrapper_3 arr[3];
|
||||
tint_array_wrapper_3 arr[3];
|
||||
};
|
||||
struct tint_array_wrapper_1 {
|
||||
/* 0x0000 */ tint_array_wrapper_2 arr[4];
|
||||
tint_array_wrapper_2 arr[4];
|
||||
};
|
||||
|
||||
void tint_symbol_6(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_3 value) {
|
||||
void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_3 value) {
|
||||
buffer.Store((offset + 0u), asuint(value.arr[0u]));
|
||||
buffer.Store((offset + 4u), asuint(value.arr[1u]));
|
||||
}
|
||||
|
||||
void tint_symbol_7(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_2 value) {
|
||||
tint_symbol_6(buffer, (offset + 0u), value.arr[0u]);
|
||||
tint_symbol_6(buffer, (offset + 8u), value.arr[1u]);
|
||||
tint_symbol_6(buffer, (offset + 16u), value.arr[2u]);
|
||||
void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_2 value) {
|
||||
tint_symbol_8(buffer, (offset + 0u), value.arr[0u]);
|
||||
tint_symbol_8(buffer, (offset + 8u), value.arr[1u]);
|
||||
tint_symbol_8(buffer, (offset + 16u), value.arr[2u]);
|
||||
}
|
||||
|
||||
void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_1 value) {
|
||||
tint_symbol_7(buffer, (offset + 0u), value.arr[0u]);
|
||||
tint_symbol_7(buffer, (offset + 24u), value.arr[1u]);
|
||||
tint_symbol_7(buffer, (offset + 48u), value.arr[2u]);
|
||||
tint_symbol_7(buffer, (offset + 72u), value.arr[3u]);
|
||||
void tint_symbol_10(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_1 value) {
|
||||
tint_symbol_9(buffer, (offset + 0u), value.arr[0u]);
|
||||
tint_symbol_9(buffer, (offset + 24u), value.arr[1u]);
|
||||
tint_symbol_9(buffer, (offset + 48u), value.arr[2u]);
|
||||
tint_symbol_9(buffer, (offset + 72u), value.arr[3u]);
|
||||
}
|
||||
|
||||
static tint_array_wrapper src_private;
|
||||
groupshared tint_array_wrapper src_workgroup;
|
||||
ConstantBuffer<S> src_uniform : register(b0, space0);
|
||||
cbuffer cbuffer_src_uniform : register(b0, space0) {
|
||||
uint4 src_uniform[4];
|
||||
};
|
||||
RWByteAddressBuffer src_storage : register(u1, space0);
|
||||
RWByteAddressBuffer tint_symbol : register(u2, space0);
|
||||
RWByteAddressBuffer dst_nested : register(u3, space0);
|
||||
|
||||
tint_array_wrapper ret_arr() {
|
||||
const tint_array_wrapper tint_symbol_10 = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
return tint_symbol_10;
|
||||
const tint_array_wrapper tint_symbol_13 = {{{0}, {0}, {0}, {0}}};
|
||||
return tint_symbol_13;
|
||||
}
|
||||
|
||||
S ret_struct_arr() {
|
||||
const S tint_symbol_11 = {{{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}}};
|
||||
return tint_symbol_11;
|
||||
const S tint_symbol_14 = {{{{0}, {0}, {0}, {0}}}};
|
||||
return tint_symbol_14;
|
||||
}
|
||||
|
||||
void foo(tint_array_wrapper src_param) {
|
||||
tint_array_wrapper src_function = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
const tint_array_wrapper tint_symbol_12 = {{make_tint_padded_array_element(1), make_tint_padded_array_element(2), make_tint_padded_array_element(3), make_tint_padded_array_element(3)}};
|
||||
tint_symbol_4(tint_symbol, 0u, tint_symbol_12);
|
||||
tint_symbol_4(tint_symbol, 0u, src_param);
|
||||
tint_symbol_4(tint_symbol, 0u, ret_arr());
|
||||
const tint_array_wrapper src_let = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
tint_symbol_4(tint_symbol, 0u, src_let);
|
||||
tint_symbol_4(tint_symbol, 0u, src_function);
|
||||
tint_symbol_4(tint_symbol, 0u, src_private);
|
||||
tint_symbol_4(tint_symbol, 0u, src_workgroup);
|
||||
tint_symbol_4(tint_symbol, 0u, ret_struct_arr().arr);
|
||||
tint_symbol_4(tint_symbol, 0u, src_uniform.arr);
|
||||
tint_symbol_4(tint_symbol, 0u, tint_symbol_2(src_storage, 0u));
|
||||
tint_array_wrapper src_function = {{{0}, {0}, {0}, {0}}};
|
||||
const tint_array_wrapper tint_symbol_15 = {{{1}, {2}, {3}, {3}}};
|
||||
tint_symbol_6(tint_symbol, 0u, tint_symbol_15);
|
||||
tint_symbol_6(tint_symbol, 0u, src_param);
|
||||
tint_symbol_6(tint_symbol, 0u, ret_arr());
|
||||
const tint_array_wrapper src_let = {{{0}, {0}, {0}, {0}}};
|
||||
tint_symbol_6(tint_symbol, 0u, src_let);
|
||||
tint_symbol_6(tint_symbol, 0u, src_function);
|
||||
tint_symbol_6(tint_symbol, 0u, src_private);
|
||||
tint_symbol_6(tint_symbol, 0u, src_workgroup);
|
||||
tint_symbol_6(tint_symbol, 0u, ret_struct_arr().arr);
|
||||
tint_symbol_6(tint_symbol, 0u, tint_symbol_2(src_uniform, 0u));
|
||||
tint_symbol_6(tint_symbol, 0u, tint_symbol_4(src_storage, 0u));
|
||||
tint_array_wrapper_1 src_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
|
||||
tint_symbol_8(dst_nested, 0u, src_nested);
|
||||
tint_symbol_10(dst_nested, 0u, src_nested);
|
||||
}
|
||||
|
||||
@@ -4,30 +4,34 @@ void unused_entry_point() {
|
||||
}
|
||||
|
||||
struct tint_padded_array_element {
|
||||
/* 0x0000 */ int el;
|
||||
/* 0x0004 */ int tint_pad_0[3];
|
||||
int el;
|
||||
};
|
||||
|
||||
tint_padded_array_element make_tint_padded_array_element(int param_0) {
|
||||
tint_padded_array_element output;
|
||||
output.el = param_0;
|
||||
return output;
|
||||
}
|
||||
struct tint_array_wrapper {
|
||||
/* 0x0000 */ tint_padded_array_element arr[4];
|
||||
tint_padded_array_element arr[4];
|
||||
};
|
||||
struct S {
|
||||
/* 0x0000 */ tint_array_wrapper arr;
|
||||
tint_array_wrapper arr;
|
||||
};
|
||||
|
||||
tint_array_wrapper tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
|
||||
const tint_array_wrapper tint_symbol_3 = {{make_tint_padded_array_element(asint(buffer.Load((offset + 0u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 16u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 32u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 48u))))}};
|
||||
return tint_symbol_3;
|
||||
tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
|
||||
const int scalar_offset = ((offset + 0u)) / 4;
|
||||
const int scalar_offset_1 = ((offset + 16u)) / 4;
|
||||
const int scalar_offset_2 = ((offset + 32u)) / 4;
|
||||
const int scalar_offset_3 = ((offset + 48u)) / 4;
|
||||
const tint_array_wrapper tint_symbol_5 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
|
||||
return tint_symbol_5;
|
||||
}
|
||||
|
||||
tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
|
||||
const tint_array_wrapper tint_symbol_6 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
|
||||
return tint_symbol_6;
|
||||
}
|
||||
|
||||
static tint_array_wrapper src_private;
|
||||
groupshared tint_array_wrapper src_workgroup;
|
||||
ConstantBuffer<S> src_uniform : register(b0, space0);
|
||||
cbuffer cbuffer_src_uniform : register(b0, space0) {
|
||||
uint4 src_uniform[4];
|
||||
};
|
||||
RWByteAddressBuffer src_storage : register(u1, space0);
|
||||
groupshared tint_array_wrapper tint_symbol;
|
||||
|
||||
@@ -44,29 +48,29 @@ struct tint_array_wrapper_1 {
|
||||
groupshared tint_array_wrapper_1 dst_nested;
|
||||
|
||||
tint_array_wrapper ret_arr() {
|
||||
const tint_array_wrapper tint_symbol_4 = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
return tint_symbol_4;
|
||||
const tint_array_wrapper tint_symbol_7 = {{{0}, {0}, {0}, {0}}};
|
||||
return tint_symbol_7;
|
||||
}
|
||||
|
||||
S ret_struct_arr() {
|
||||
const S tint_symbol_5 = {{{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}}};
|
||||
return tint_symbol_5;
|
||||
const S tint_symbol_8 = {{{{0}, {0}, {0}, {0}}}};
|
||||
return tint_symbol_8;
|
||||
}
|
||||
|
||||
void foo(tint_array_wrapper src_param) {
|
||||
tint_array_wrapper src_function = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
const tint_array_wrapper tint_symbol_6 = {{make_tint_padded_array_element(1), make_tint_padded_array_element(2), make_tint_padded_array_element(3), make_tint_padded_array_element(3)}};
|
||||
tint_symbol = tint_symbol_6;
|
||||
tint_array_wrapper src_function = {{{0}, {0}, {0}, {0}}};
|
||||
const tint_array_wrapper tint_symbol_9 = {{{1}, {2}, {3}, {3}}};
|
||||
tint_symbol = tint_symbol_9;
|
||||
tint_symbol = src_param;
|
||||
tint_symbol = ret_arr();
|
||||
const tint_array_wrapper src_let = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
|
||||
const tint_array_wrapper src_let = {{{0}, {0}, {0}, {0}}};
|
||||
tint_symbol = src_let;
|
||||
tint_symbol = src_function;
|
||||
tint_symbol = src_private;
|
||||
tint_symbol = src_workgroup;
|
||||
tint_symbol = ret_struct_arr().arr;
|
||||
tint_symbol = src_uniform.arr;
|
||||
tint_symbol = tint_symbol_2(src_storage, 0u);
|
||||
tint_symbol = tint_symbol_2(src_uniform, 0u);
|
||||
tint_symbol = tint_symbol_4(src_storage, 0u);
|
||||
tint_array_wrapper_1 src_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
|
||||
dst_nested = src_nested;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user