[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/d7996a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/d7996a.wgsl.expected.dxc.hlsl
index b2c1e55..9296880 100644
--- a/test/tint/builtins/gen/literal/textureLoad/d7996a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/d7996a.wgsl.expected.dxc.hlsl
@@ -1,34 +1,34 @@
-SKIP: FAILED
+RWTexture3D<int4> 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_3d<rgba32sint, read_write>;
-
-fn textureLoad_d7996a() {
-  var res : vec4<i32> = textureLoad(arg_0, vec3<i32>(1i));
-  prevent_dce = res;
+void textureLoad_d7996a() {
+  int4 res = arg_0.Load(int4((1).xxx, 0));
+  prevent_dce.Store4(0u, asuint(res));
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
+struct tint_symbol {
+  float4 value : SV_Position;
+};
 
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
+float4 vertex_main_inner() {
   textureLoad_d7996a();
-  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_d7996a();
+  return;
 }
 
-@compute @workgroup_size(1)
-fn compute_main() {
+[numthreads(1, 1, 1)]
+void compute_main() {
   textureLoad_d7996a();
+  return;
 }
-
-Failed to generate: builtins/gen/literal/textureLoad/d7996a.wgsl:24:8 error: HLSL backend does not support extension 'chromium_experimental_read_write_storage_texture'
-enable chromium_experimental_read_write_storage_texture;
-       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-