[hlsl-writer] Add support for read-write textures
Bug: tint:2007
Change-Id: I106527f50fbb87db4172f3f42c57736047a34c26
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/146245
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/test/tint/builtins/gen/literal/textureLoad/cdccd2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/cdccd2.wgsl.expected.fxc.hlsl
index 481e1db..349dff1 100644
--- a/test/tint/builtins/gen/literal/textureLoad/cdccd2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/cdccd2.wgsl.expected.fxc.hlsl
@@ -1,34 +1,34 @@
-SKIP: FAILED
+RWTexture2DArray<uint4> arg_0 : register(u0, space1);
+RWByteAddressBuffer prevent_dce : register(u0, space2);
-
-enable chromium_experimental_read_write_storage_texture;
-
-@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, read_write>;
-
-fn textureLoad_cdccd2() {
- var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(1i), 1u);
- prevent_dce = res;
+void textureLoad_cdccd2() {
+ uint4 res = arg_0.Load(int4(int3((1).xx, int(1u)), 0));
+ prevent_dce.Store4(0u, asuint(res));
}
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
+struct tint_symbol {
+ float4 value : SV_Position;
+};
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
+float4 vertex_main_inner() {
textureLoad_cdccd2();
- return vec4<f32>();
+ return (0.0f).xxxx;
}
-@fragment
-fn fragment_main() {
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
textureLoad_cdccd2();
+ return;
}
-@compute @workgroup_size(1)
-fn compute_main() {
+[numthreads(1, 1, 1)]
+void compute_main() {
textureLoad_cdccd2();
+ return;
}
-
-Failed to generate: builtins/gen/literal/textureLoad/cdccd2.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-