Update CreateReadyPipelineTests to use WGSL

Bug: dawn:572
Change-Id: If9c35023a62a1506fe968b30d822ced86c8a1465
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/32507
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/tests/end2end/CreateReadyPipelineTests.cpp b/src/tests/end2end/CreateReadyPipelineTests.cpp
index 6311b46..f48fb7f 100644
--- a/src/tests/end2end/CreateReadyPipelineTests.cpp
+++ b/src/tests/end2end/CreateReadyPipelineTests.cpp
@@ -33,16 +33,16 @@
 
 // Verify the basic use of CreateReadyComputePipeline works on all backends.
 TEST_P(CreateReadyPipelineTest, BasicUseOfCreateReadyComputePipeline) {
-    const char* computeShader = R"(
-        #version 450
-        layout(std140, set = 0, binding = 0) buffer SSBO { uint value; } ssbo;
-        void main() {
-            ssbo.value = 1u;
-        })";
-
     wgpu::ComputePipelineDescriptor csDesc;
-    csDesc.computeStage.module =
-        utils::CreateShaderModule(device, utils::SingleShaderStage::Compute, computeShader);
+    csDesc.computeStage.module = utils::CreateShaderModuleFromWGSL(device, R"(
+        [[block]] struct SSBO {
+            [[offset(0)]] value : u32;
+        };
+        [[set(0), binding(0)]] var<storage_buffer> ssbo : SSBO;
+
+        [[stage(compute)]] fn main() -> void {
+            ssbo.value = 1u;
+        })");
     csDesc.computeStage.entryPoint = "main";
 
     device.CreateReadyComputePipeline(
@@ -100,16 +100,16 @@
 TEST_P(CreateReadyPipelineTest, CreateComputePipelineFailed) {
     DAWN_SKIP_TEST_IF(HasToggleEnabled("skip_validation"));
 
-    const char* computeShader = R"(
-        #version 450
-        layout(std140, set = 0, binding = 0) buffer SSBO { uint value; } ssbo;
-        void main() {
-            ssbo.value = 1u;
-        })";
-
     wgpu::ComputePipelineDescriptor csDesc;
-    csDesc.computeStage.module =
-        utils::CreateShaderModule(device, utils::SingleShaderStage::Compute, computeShader);
+    csDesc.computeStage.module = utils::CreateShaderModuleFromWGSL(device, R"(
+        [[block]] struct SSBO {
+            [[offset(0)]] value : u32;
+        };
+        [[set(0), binding(0)]] var<storage_buffer> ssbo : SSBO;
+
+        [[stage(compute)]] fn main() -> void {
+            ssbo.value = 1u;
+        })");
     csDesc.computeStage.entryPoint = "main0";
 
     device.CreateReadyComputePipeline(
@@ -140,24 +140,17 @@
 
     constexpr wgpu::TextureFormat kRenderAttachmentFormat = wgpu::TextureFormat::RGBA8Unorm;
 
-    const char* vertexShader = R"(
-        #version 450
-        void main() {
-            gl_Position = vec4(0.f, 0.f, 0.f, 1.f);
-            gl_PointSize = 1.0f;
-        })";
-    const char* fragmentShader = R"(
-        #version 450
-        layout(location = 0) out vec4 o_color;
-        void main() {
-            o_color = vec4(0.f, 1.f, 0.f, 1.f);
-        })";
-
     utils::ComboRenderPipelineDescriptor renderPipelineDescriptor(device);
-    wgpu::ShaderModule vsModule =
-        utils::CreateShaderModule(device, utils::SingleShaderStage::Vertex, vertexShader);
-    wgpu::ShaderModule fsModule =
-        utils::CreateShaderModule(device, utils::SingleShaderStage::Fragment, fragmentShader);
+    wgpu::ShaderModule vsModule = utils::CreateShaderModuleFromWGSL(device, R"(
+        [[builtin(position)]] var<out> Position : vec4<f32>;
+        [[stage(vertex)]] fn main() -> void {
+            Position = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+        })");
+    wgpu::ShaderModule fsModule = utils::CreateShaderModuleFromWGSL(device, R"(
+        [[location(0)]] var<out> o_color : vec4<f32>;
+        [[stage(fragment)]] fn main() -> void {
+            o_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
+        })");
     renderPipelineDescriptor.vertexStage.module = vsModule;
     renderPipelineDescriptor.cFragmentStage.module = fsModule;
     renderPipelineDescriptor.cColorStates[0].format = kRenderAttachmentFormat;
@@ -220,24 +213,17 @@
 
     constexpr wgpu::TextureFormat kRenderAttachmentFormat = wgpu::TextureFormat::Depth32Float;
 
-    const char* vertexShader = R"(
-        #version 450
-        void main() {
-            gl_Position = vec4(0.f, 0.f, 0.f, 1.f);
-            gl_PointSize = 1.0f;
-        })";
-    const char* fragmentShader = R"(
-        #version 450
-        layout(location = 0) out vec4 o_color;
-        void main() {
-            o_color = vec4(0.f, 1.f, 0.f, 1.f);
-        })";
-
     utils::ComboRenderPipelineDescriptor renderPipelineDescriptor(device);
-    wgpu::ShaderModule vsModule =
-        utils::CreateShaderModule(device, utils::SingleShaderStage::Vertex, vertexShader);
-    wgpu::ShaderModule fsModule =
-        utils::CreateShaderModule(device, utils::SingleShaderStage::Fragment, fragmentShader);
+    wgpu::ShaderModule vsModule = utils::CreateShaderModuleFromWGSL(device, R"(
+        [[builtin(position)]] var<out> Position : vec4<f32>;
+        [[stage(vertex)]] fn main() -> void {
+            Position = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+        })");
+    wgpu::ShaderModule fsModule = utils::CreateShaderModuleFromWGSL(device, R"(
+        [[location(0)]] var<out> o_color : vec4<f32>;
+        [[stage(fragment)]] fn main() -> void {
+            o_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
+        })");
     renderPipelineDescriptor.vertexStage.module = vsModule;
     renderPipelineDescriptor.cFragmentStage.module = fsModule;
     renderPipelineDescriptor.cColorStates[0].format = kRenderAttachmentFormat;
@@ -267,14 +253,10 @@
 // Verify there is no error when the device is released before the callback of
 // CreateReadyComputePipeline() is called.
 TEST_P(CreateReadyPipelineTest, ReleaseDeviceBeforeCallbackOfCreateReadyComputePipeline) {
-    const char* computeShader = R"(
-        #version 450
-        void main() {
-        })";
-
     wgpu::ComputePipelineDescriptor csDesc;
-    csDesc.computeStage.module =
-        utils::CreateShaderModule(device, utils::SingleShaderStage::Compute, computeShader);
+    csDesc.computeStage.module = utils::CreateShaderModuleFromWGSL(device, R"(
+        [[stage(compute)]] fn main() -> void {
+        })");
     csDesc.computeStage.entryPoint = "main";
 
     device.CreateReadyComputePipeline(
@@ -295,27 +277,17 @@
 // Verify there is no error when the device is released before the callback of
 // CreateReadyRenderPipeline() is called.
 TEST_P(CreateReadyPipelineTest, ReleaseDeviceBeforeCallbackOfCreateReadyRenderPipeline) {
-    // TODO(crbug.com/tint/398): GLSL builtins don't work with SPIR-V reader.
-    DAWN_SKIP_TEST_IF(HasToggleEnabled("use_tint_generator"));
-
-    const char* vertexShader = R"(
-        #version 450
-        void main() {
-            gl_Position = vec4(0.f, 0.f, 0.f, 1.f);
-            gl_PointSize = 1.0f;
-        })";
-    const char* fragmentShader = R"(
-        #version 450
-        layout(location = 0) out vec4 o_color;
-        void main() {
-            o_color = vec4(0.f, 1.f, 0.f, 1.f);
-        })";
-
     utils::ComboRenderPipelineDescriptor renderPipelineDescriptor(device);
-    wgpu::ShaderModule vsModule =
-        utils::CreateShaderModule(device, utils::SingleShaderStage::Vertex, vertexShader);
-    wgpu::ShaderModule fsModule =
-        utils::CreateShaderModule(device, utils::SingleShaderStage::Fragment, fragmentShader);
+    wgpu::ShaderModule vsModule = utils::CreateShaderModuleFromWGSL(device, R"(
+        [[builtin(position)]] var<out> Position : vec4<f32>;
+        [[stage(vertex)]] fn main() -> void {
+            Position = vec4<f32>(0.0, 0.0, 0.0, 1.0);
+        })");
+    wgpu::ShaderModule fsModule = utils::CreateShaderModuleFromWGSL(device, R"(
+        [[location(0)]] var<out> o_color : vec4<f32>;
+        [[stage(fragment)]] fn main() -> void {
+            o_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
+        })");
     renderPipelineDescriptor.vertexStage.module = vsModule;
     renderPipelineDescriptor.cFragmentStage.module = fsModule;
     renderPipelineDescriptor.cColorStates[0].format = wgpu::TextureFormat::RGBA8Unorm;