[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;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-