diff --git a/src/dawn/tests/DawnTest.cpp b/src/dawn/tests/DawnTest.cpp
index 257c427..9404448 100644
--- a/src/dawn/tests/DawnTest.cpp
+++ b/src/dawn/tests/DawnTest.cpp
@@ -1397,7 +1397,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDescriptor;
     pipelineDescriptor.compute.module = csModule;
-    pipelineDescriptor.compute.entryPoint = "main";
 
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDescriptor);
 
diff --git a/src/dawn/tests/benchmarks/ObjectCreation.cpp b/src/dawn/tests/benchmarks/ObjectCreation.cpp
index 6cfd027..b2bb1c4 100644
--- a/src/dawn/tests/benchmarks/ObjectCreation.cpp
+++ b/src/dawn/tests/benchmarks/ObjectCreation.cpp
@@ -160,7 +160,6 @@
     computeDesc.compute.module = utils::CreateShaderModule(device, R"(
         @compute @workgroup_size(1) fn main() { _ = 0u; }
     )");
-    computeDesc.compute.entryPoint = "main";
     computeDesc.layout = utils::MakePipelineLayout(device, {});
 
     std::vector<wgpu::ComputePipeline> computePipelines;
@@ -183,7 +182,6 @@
         override x: u32 = 0u;
         @compute @workgroup_size(1) fn main() { _ = x; }
     )");
-    computeDesc.compute.entryPoint = "main";
     computeDesc.compute.constantCount = 1;
     computeDesc.compute.constants = &constant;
     computeDesc.layout = utils::MakePipelineLayout(device, {});
diff --git a/src/dawn/tests/end2end/BindGroupTests.cpp b/src/dawn/tests/end2end/BindGroupTests.cpp
index b57839b..731fd8f 100644
--- a/src/dawn/tests/end2end/BindGroupTests.cpp
+++ b/src/dawn/tests/end2end/BindGroupTests.cpp
@@ -159,7 +159,6 @@
 
     wgpu::ComputePipelineDescriptor cpDesc;
     cpDesc.compute.module = module;
-    cpDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline cp = device.CreateComputePipeline(&cpDesc);
 
     wgpu::BufferDescriptor bufferDesc;
@@ -1144,7 +1143,6 @@
         @compute @workgroup_size(1) fn main() {
             outputBuffer = vec3u(buffer0.value, buffer2.value, buffer3.value);
         })");
-    pipelineDescriptor.compute.entryPoint = "main";
     pipelineDescriptor.layout = utils::MakeBasicPipelineLayout(device, &bgl);
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDescriptor);
 
@@ -1226,7 +1224,6 @@
         @compute @workgroup_size(1) fn main() {
             outputBuffer.value = vec2u(buffer0.value, buffer1.value);
         })");
-        pipelineDescriptor.compute.entryPoint = "main";
         pipelineDescriptor.layout = utils::MakeBasicPipelineLayout(device, &bgl);
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDescriptor);
 
@@ -1444,7 +1441,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc;
     pipelineDesc.layout = utils::MakeBasicPipelineLayout(device, &bgl);
-    pipelineDesc.compute.entryPoint = "main";
     pipelineDesc.compute.module = utils::CreateShaderModule(device, R"(
         @compute @workgroup_size(1) fn main() {
         })");
diff --git a/src/dawn/tests/end2end/BufferHostMappedPointerTests.cpp b/src/dawn/tests/end2end/BufferHostMappedPointerTests.cpp
index 3fa7794..b36db5d 100644
--- a/src/dawn/tests/end2end/BufferHostMappedPointerTests.cpp
+++ b/src/dawn/tests/end2end/BufferHostMappedPointerTests.cpp
@@ -226,7 +226,6 @@
             }
         }
     )");
-    pipelineDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDesc);
     wgpu::BindGroup bindGroup = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
                                                      {
diff --git a/src/dawn/tests/end2end/BufferTests.cpp b/src/dawn/tests/end2end/BufferTests.cpp
index d065c27..876c15e 100644
--- a/src/dawn/tests/end2end/BufferTests.cpp
+++ b/src/dawn/tests/end2end/BufferTests.cpp
@@ -1607,7 +1607,6 @@
             @compute @workgroup_size(1) fn main() {
                 ssbo.value += 1u;
             })");
-        csDesc.compute.entryPoint = "main";
 
         pipeline = device.CreateComputePipeline(&csDesc);
     }
diff --git a/src/dawn/tests/end2end/BufferZeroInitTests.cpp b/src/dawn/tests/end2end/BufferZeroInitTests.cpp
index 7723e64..7ba8f2a 100644
--- a/src/dawn/tests/end2end/BufferZeroInitTests.cpp
+++ b/src/dawn/tests/end2end/BufferZeroInitTests.cpp
@@ -184,7 +184,6 @@
         wgpu::ComputePipelineDescriptor pipelineDescriptor;
         pipelineDescriptor.layout = nullptr;
         pipelineDescriptor.compute.module = module;
-        pipelineDescriptor.compute.entryPoint = "main";
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDescriptor);
 
         const uint64_t bufferSize = expectedBufferData.size() * sizeof(uint32_t);
@@ -451,7 +450,6 @@
         wgpu::ComputePipelineDescriptor pipelineDescriptor;
         pipelineDescriptor.layout = nullptr;
         pipelineDescriptor.compute.module = utils::CreateShaderModule(device, computeShader);
-        pipelineDescriptor.compute.entryPoint = "main";
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDescriptor);
 
         // Clear the color of outputTexture to green.
diff --git a/src/dawn/tests/end2end/ComputeCopyStorageBufferTests.cpp b/src/dawn/tests/end2end/ComputeCopyStorageBufferTests.cpp
index fa5d851..b2b0703 100644
--- a/src/dawn/tests/end2end/ComputeCopyStorageBufferTests.cpp
+++ b/src/dawn/tests/end2end/ComputeCopyStorageBufferTests.cpp
@@ -49,7 +49,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = module;
-    csDesc.compute.entryPoint = "main";
 
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
diff --git a/src/dawn/tests/end2end/ComputeDispatchTests.cpp b/src/dawn/tests/end2end/ComputeDispatchTests.cpp
index 2ad2361..cec2ddc 100644
--- a/src/dawn/tests/end2end/ComputeDispatchTests.cpp
+++ b/src/dawn/tests/end2end/ComputeDispatchTests.cpp
@@ -63,7 +63,6 @@
 
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.compute.module = module;
-        csDesc.compute.entryPoint = "main";
         pipeline = device.CreateComputePipeline(&csDesc);
 
         // Test the use of the compute pipelines without using @num_workgroups
@@ -375,7 +374,6 @@
         wgpu::ComputePipelineDescriptor csDesc;
         //
         csDesc.compute.module = module;
-        csDesc.compute.entryPoint = "main";
         csDesc.layout = pipelineLayout;
         pipeline = device.CreateComputePipeline(&csDesc);
 
@@ -400,7 +398,6 @@
                 }
             })");
         csDesc.compute.module = moduleWithoutNumWorkgroups;
-        csDesc.compute.entryPoint = "main";
         csDesc.layout = pipelineLayout;
         pipelineWithoutNumWorkgroups = device.CreateComputePipeline(&csDesc);
     }
diff --git a/src/dawn/tests/end2end/ComputeFlowControlTests.cpp b/src/dawn/tests/end2end/ComputeFlowControlTests.cpp
index 5c116c0..51c164e 100644
--- a/src/dawn/tests/end2end/ComputeFlowControlTests.cpp
+++ b/src/dawn/tests/end2end/ComputeFlowControlTests.cpp
@@ -51,7 +51,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = module;
-    csDesc.compute.entryPoint = "main";
 
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
diff --git a/src/dawn/tests/end2end/ComputeLayoutMemoryBufferTests.cpp b/src/dawn/tests/end2end/ComputeLayoutMemoryBufferTests.cpp
index 19321e9..fca103d 100644
--- a/src/dawn/tests/end2end/ComputeLayoutMemoryBufferTests.cpp
+++ b/src/dawn/tests/end2end/ComputeLayoutMemoryBufferTests.cpp
@@ -455,7 +455,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = module;
-    csDesc.compute.entryPoint = "main";
 
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
diff --git a/src/dawn/tests/end2end/ComputeSharedMemoryTests.cpp b/src/dawn/tests/end2end/ComputeSharedMemoryTests.cpp
index c73b980..75fd3ed 100644
--- a/src/dawn/tests/end2end/ComputeSharedMemoryTests.cpp
+++ b/src/dawn/tests/end2end/ComputeSharedMemoryTests.cpp
@@ -47,7 +47,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = module;
-    csDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
     // Set up dst storage buffer
@@ -172,7 +171,6 @@
             }
         }
     )");
-    csDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
     // Set up dst storage buffer
diff --git a/src/dawn/tests/end2end/ComputeStorageBufferBarrierTests.cpp b/src/dawn/tests/end2end/ComputeStorageBufferBarrierTests.cpp
index 295907c..729632a 100644
--- a/src/dawn/tests/end2end/ComputeStorageBufferBarrierTests.cpp
+++ b/src/dawn/tests/end2end/ComputeStorageBufferBarrierTests.cpp
@@ -63,7 +63,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc = {};
     pipelineDesc.compute.module = module;
-    pipelineDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDesc);
 
     wgpu::BindGroup bindGroup =
@@ -114,7 +113,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc = {};
     pipelineDesc.compute.module = module;
-    pipelineDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDesc);
 
     wgpu::BindGroup bindGroupA = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
@@ -180,7 +178,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc = {};
     pipelineDesc.compute.module = module;
-    pipelineDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDesc);
 
     wgpu::BindGroup bindGroupA = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
@@ -249,7 +246,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc = {};
     pipelineDesc.compute.module = module;
-    pipelineDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDesc);
 
     wgpu::BindGroup bindGroupA = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
@@ -317,7 +313,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc = {};
     pipelineDesc.compute.module = module;
-    pipelineDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDesc);
 
     wgpu::BindGroup bindGroupA = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
@@ -357,7 +352,6 @@
 //  3 - Use the indirect buffer in a Dispatch while also reading its data.
 TEST_P(ComputeStorageBufferBarrierTests, IndirectBufferCorrectBarrier) {
     wgpu::ComputePipelineDescriptor step2PipelineDesc;
-    step2PipelineDesc.compute.entryPoint = "main";
     step2PipelineDesc.compute.module = utils::CreateShaderModule(device, R"(
         struct Buf {
             data : array<u32, 3>
@@ -371,7 +365,6 @@
     wgpu::ComputePipeline step2Pipeline = device.CreateComputePipeline(&step2PipelineDesc);
 
     wgpu::ComputePipelineDescriptor step3PipelineDesc;
-    step3PipelineDesc.compute.entryPoint = "main";
     step3PipelineDesc.compute.module = utils::CreateShaderModule(device, R"(
         struct Buf {
             data : array<u32, 3>
diff --git a/src/dawn/tests/end2end/CopyTextureForBrowserTests.cpp b/src/dawn/tests/end2end/CopyTextureForBrowserTests.cpp
index abe8782..2905a2e 100644
--- a/src/dawn/tests/end2end/CopyTextureForBrowserTests.cpp
+++ b/src/dawn/tests/end2end/CopyTextureForBrowserTests.cpp
@@ -371,7 +371,6 @@
 
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.compute.module = csModule;
-        csDesc.compute.entryPoint = "main";
 
         return this->device.CreateComputePipeline(&csDesc);
     }
diff --git a/src/dawn/tests/end2end/CreatePipelineAsyncTests.cpp b/src/dawn/tests/end2end/CreatePipelineAsyncTests.cpp
index 7ed0e71..6ef400d 100644
--- a/src/dawn/tests/end2end/CreatePipelineAsyncTests.cpp
+++ b/src/dawn/tests/end2end/CreatePipelineAsyncTests.cpp
@@ -153,7 +153,6 @@
         @compute @workgroup_size(1) fn main() {
             ssbo.value = 1u;
         })");
-    csDesc.compute.entryPoint = "main";
 
     device.CreateComputePipelineAsync(
         &csDesc,
@@ -382,7 +381,6 @@
     csDesc.compute.module = utils::CreateShaderModule(device, R"(
         @compute @workgroup_size(1) fn main() {
         })");
-    csDesc.compute.entryPoint = "main";
 
     device.CreateComputePipelineAsync(
         &csDesc,
@@ -446,7 +444,6 @@
     csDesc.compute.module = utils::CreateShaderModule(device, R"(
         @compute @workgroup_size(1) fn main() {
         })");
-    csDesc.compute.entryPoint = "main";
 
     device.CreateComputePipelineAsync(
         &csDesc,
@@ -516,7 +513,6 @@
         @compute @workgroup_size(1) fn main() {
             ssbo.value = 1u;
         })");
-    csDesc.compute.entryPoint = "main";
 
     auto callback = [](WGPUCreatePipelineAsyncStatus status, WGPUComputePipeline returnPipeline,
                        const char* message, void* userdata) {
@@ -575,7 +571,6 @@
         @compute @workgroup_size(1) fn main() {
             ssbo.value = 1u;
         })");
-    csDesc.compute.entryPoint = "main";
 
     auto callback = [](WGPUCreatePipelineAsyncStatus status, WGPUComputePipeline returnPipeline,
                        const char* message, void* userdata) {
diff --git a/src/dawn/tests/end2end/D3D12CachingTests.cpp b/src/dawn/tests/end2end/D3D12CachingTests.cpp
index 1604d3d..d0f15e2 100644
--- a/src/dawn/tests/end2end/D3D12CachingTests.cpp
+++ b/src/dawn/tests/end2end/D3D12CachingTests.cpp
@@ -72,9 +72,7 @@
     {
         utils::ComboRenderPipelineDescriptor desc;
         desc.vertex.module = module;
-        desc.vertex.entryPoint = "vertex_main";
         desc.cFragment.module = module;
-        desc.cFragment.entryPoint = "fragment_main";
         EXPECT_CACHE_HIT(mMockCache, 0u, device.CreateRenderPipeline(&desc));
     }
     EXPECT_EQ(mMockCache.GetNumEntries(), 0u);
@@ -83,9 +81,7 @@
     {
         utils::ComboRenderPipelineDescriptor desc;
         desc.vertex.module = module;
-        desc.vertex.entryPoint = "vertex_main";
         desc.cFragment.module = module;
-        desc.cFragment.entryPoint = "fragment_main";
         EXPECT_CACHE_HIT(mMockCache, 0u, device.CreateRenderPipeline(&desc));
     }
     EXPECT_EQ(mMockCache.GetNumEntries(), 0u);
@@ -109,9 +105,7 @@
     {
         utils::ComboRenderPipelineDescriptor desc;
         desc.vertex.module = module;
-        desc.vertex.entryPoint = "vertex_main";
         desc.cFragment.module = module;
-        desc.cFragment.entryPoint = "fragment_main";
         EXPECT_CACHE_HIT(mMockCache, 0u, device.CreateRenderPipeline(&desc));
     }
     EXPECT_EQ(mMockCache.GetNumEntries(), 2u);
@@ -120,9 +114,7 @@
     {
         utils::ComboRenderPipelineDescriptor desc;
         desc.vertex.module = module;
-        desc.vertex.entryPoint = "vertex_main";
         desc.cFragment.module = module;
-        desc.cFragment.entryPoint = "fragment_main";
         EXPECT_CACHE_HIT(mMockCache, 2u, device.CreateRenderPipeline(&desc));
     }
     EXPECT_EQ(mMockCache.GetNumEntries(), 2u);
@@ -141,9 +133,7 @@
     {
         utils::ComboRenderPipelineDescriptor desc;
         desc.vertex.module = newModule;
-        desc.vertex.entryPoint = "vertex_main";
         desc.cFragment.module = newModule;
-        desc.cFragment.entryPoint = "fragment_main";
         EXPECT_CACHE_HIT(mMockCache, 0u, device.CreateRenderPipeline(&desc));
     }
     EXPECT_EQ(mMockCache.GetNumEntries(), 4u);
diff --git a/src/dawn/tests/end2end/DepthStencilSamplingTests.cpp b/src/dawn/tests/end2end/DepthStencilSamplingTests.cpp
index 5bf6c5d..c52dd9e 100644
--- a/src/dawn/tests/end2end/DepthStencilSamplingTests.cpp
+++ b/src/dawn/tests/end2end/DepthStencilSamplingTests.cpp
@@ -191,7 +191,6 @@
 
         wgpu::ComputePipelineDescriptor pipelineDescriptor;
         pipelineDescriptor.compute.module = csModule;
-        pipelineDescriptor.compute.entryPoint = "main";
 
         return device.CreateComputePipeline(&pipelineDescriptor);
     }
@@ -257,7 +256,6 @@
 
         wgpu::ComputePipelineDescriptor pipelineDescriptor;
         pipelineDescriptor.compute.module = csModule;
-        pipelineDescriptor.compute.entryPoint = "main";
 
         return device.CreateComputePipeline(&pipelineDescriptor);
     }
@@ -676,7 +674,6 @@
     // The first pipeline will write to the depth texture.
     utils::ComboRenderPipelineDescriptor pDesc1;
     pDesc1.vertex.module = module;
-    pDesc1.vertex.entryPoint = "vs";
     pDesc1.cFragment.module = module;
     pDesc1.cFragment.entryPoint = "fs1";
     pDesc1.cTargets[0].format = wgpu::TextureFormat::R32Float;
@@ -688,7 +685,6 @@
     // The second pipeline checks the depth texture and outputs 1 to a texel on success.
     utils::ComboRenderPipelineDescriptor pDesc2;
     pDesc2.vertex.module = module;
-    pDesc2.vertex.entryPoint = "vs";
     pDesc2.cFragment.module = module;
     pDesc2.cFragment.entryPoint = "fs2";
     pDesc2.cTargets[0].format = wgpu::TextureFormat::R32Float;
diff --git a/src/dawn/tests/end2end/DeviceLifetimeTests.cpp b/src/dawn/tests/end2end/DeviceLifetimeTests.cpp
index 8be3476..4ddb8f7 100644
--- a/src/dawn/tests/end2end/DeviceLifetimeTests.cpp
+++ b/src/dawn/tests/end2end/DeviceLifetimeTests.cpp
@@ -349,7 +349,6 @@
     desc.compute.module = utils::CreateShaderModule(device, R"(
     @compute @workgroup_size(1) fn main() {
     })");
-    desc.compute.entryPoint = "main";
 
     device.CreateComputePipelineAsync(
         &desc,
@@ -370,7 +369,6 @@
     desc.compute.module = utils::CreateShaderModule(device, R"(
     @compute @workgroup_size(1) fn main() {
     })");
-    desc.compute.entryPoint = "main";
 
     struct Userdata {
         wgpu::Device device;
@@ -407,7 +405,6 @@
     desc.compute.module = utils::CreateShaderModule(device, R"(
     @compute @workgroup_size(1) fn main() {
     })");
-    desc.compute.entryPoint = "main";
 
     // Create a pipeline ahead of time so it's in the cache.
     wgpu::ComputePipeline p = device.CreateComputePipeline(&desc);
@@ -438,7 +435,6 @@
     desc.compute.module = utils::CreateShaderModule(device, R"(
     @compute @workgroup_size(1) fn main() {
     })");
-    desc.compute.entryPoint = "main";
 
     // Create a pipeline ahead of time so it's in the cache.
     wgpu::ComputePipeline p = device.CreateComputePipeline(&desc);
@@ -480,7 +476,6 @@
     desc.compute.module = utils::CreateShaderModule(device, R"(
     @compute @workgroup_size(1) fn main() {
     })");
-    desc.compute.entryPoint = "main";
 
     device.CreateComputePipelineAsync(
         &desc,
@@ -505,7 +500,6 @@
     desc.compute.module = utils::CreateShaderModule(device, R"(
     @compute @workgroup_size(1) fn main() {
     })");
-    desc.compute.entryPoint = "main";
 
     struct Userdata {
         wgpu::Device device;
diff --git a/src/dawn/tests/end2end/DeviceLostTests.cpp b/src/dawn/tests/end2end/DeviceLostTests.cpp
index 0f7d2eb..db93da0 100644
--- a/src/dawn/tests/end2end/DeviceLostTests.cpp
+++ b/src/dawn/tests/end2end/DeviceLostTests.cpp
@@ -133,7 +133,6 @@
     wgpu::ComputePipelineDescriptor descriptor;
     descriptor.layout = nullptr;
     descriptor.compute.module = csModule;
-    descriptor.compute.entryPoint = "main";
 
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&descriptor);
 
@@ -458,7 +457,6 @@
 
     wgpu::ComputePipelineDescriptor descriptor;
     descriptor.compute.module = csModule;
-    descriptor.compute.entryPoint = "main";
 
     auto callback = [](WGPUCreatePipelineAsyncStatus status, WGPUComputePipeline returnPipeline,
                        const char* message, void* userdata) {
diff --git a/src/dawn/tests/end2end/DrawIndexedIndirectTests.cpp b/src/dawn/tests/end2end/DrawIndexedIndirectTests.cpp
index 39f42ab..333f2d7 100644
--- a/src/dawn/tests/end2end/DrawIndexedIndirectTests.cpp
+++ b/src/dawn/tests/end2end/DrawIndexedIndirectTests.cpp
@@ -735,7 +735,6 @@
 
     wgpu::ComputePipelineDescriptor computeDesc;
     computeDesc.compute.module = paramWriterModule;
-    computeDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline computePipeline = device.CreateComputePipeline(&computeDesc);
 
     wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
diff --git a/src/dawn/tests/end2end/DynamicBufferOffsetTests.cpp b/src/dawn/tests/end2end/DynamicBufferOffsetTests.cpp
index 78e7b00..8a862a7 100644
--- a/src/dawn/tests/end2end/DynamicBufferOffsetTests.cpp
+++ b/src/dawn/tests/end2end/DynamicBufferOffsetTests.cpp
@@ -211,7 +211,6 @@
 
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.compute.module = csModule;
-        csDesc.compute.entryPoint = "main";
 
         wgpu::PipelineLayoutDescriptor pipelineLayoutDescriptor;
         if (isInheritedPipeline) {
@@ -599,7 +598,6 @@
         wgpu::ComputePipelineDescriptor pipelineDesc;
         pipelineDesc.layout = layout;
         pipelineDesc.compute.module = utils::CreateShaderModule(device, shader.str().c_str());
-        pipelineDesc.compute.entryPoint = "main";
         pipeline = device.CreateComputePipeline(&pipelineDesc);
     }
 
diff --git a/src/dawn/tests/end2end/EntryPointTests.cpp b/src/dawn/tests/end2end/EntryPointTests.cpp
index e22d0cd..54a374d 100644
--- a/src/dawn/tests/end2end/EntryPointTests.cpp
+++ b/src/dawn/tests/end2end/EntryPointTests.cpp
@@ -50,9 +50,7 @@
     // Create a point pipeline from the module.
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex_main";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment_main";
     desc.cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
     desc.primitive.topology = wgpu::PrimitiveTopology::PointList;
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&desc);
diff --git a/src/dawn/tests/end2end/ExperimentalSubgroupsTests.cpp b/src/dawn/tests/end2end/ExperimentalSubgroupsTests.cpp
index 4fb577c..37b9e86 100644
--- a/src/dawn/tests/end2end/ExperimentalSubgroupsTests.cpp
+++ b/src/dawn/tests/end2end/ExperimentalSubgroupsTests.cpp
@@ -145,7 +145,6 @@
         for (bool requiresFullSubgroups : {false, true}) {
             wgpu::ComputePipelineDescriptor csDesc;
             csDesc.compute.module = shaderModule;
-            csDesc.compute.entryPoint = "main";
 
             wgpu::DawnComputePipelineFullSubgroups fullSubgroupsOption;
             fullSubgroupsOption.requiresFullSubgroups = requiresFullSubgroups;
@@ -183,7 +182,6 @@
 
             wgpu::ComputePipelineDescriptor csDesc;
             csDesc.compute.module = shaderModule;
-            csDesc.compute.entryPoint = "main";
             csDesc.compute.constants = constants.data();
             csDesc.compute.constantCount = constants.size();
 
diff --git a/src/dawn/tests/end2end/FragDepthTests.cpp b/src/dawn/tests/end2end/FragDepthTests.cpp
index d1a43b7..b98bbba 100644
--- a/src/dawn/tests/end2end/FragDepthTests.cpp
+++ b/src/dawn/tests/end2end/FragDepthTests.cpp
@@ -54,10 +54,8 @@
     // Create the pipeline that uses frag_depth to output the depth.
     utils::ComboRenderPipelineDescriptor pDesc;
     pDesc.vertex.module = module;
-    pDesc.vertex.entryPoint = "vs";
     pDesc.primitive.topology = wgpu::PrimitiveTopology::PointList;
     pDesc.cFragment.module = module;
-    pDesc.cFragment.entryPoint = "fs";
     pDesc.cFragment.targetCount = 0;
 
     wgpu::DepthStencilState* pDescDS = pDesc.EnableDepthStencil(kDepthFormat);
@@ -118,7 +116,6 @@
     // Create the pipeline and bindgroup for the pipeline layout with a uniform buffer.
     utils::ComboRenderPipelineDescriptor upDesc;
     upDesc.vertex.module = module;
-    upDesc.vertex.entryPoint = "vs";
     upDesc.primitive.topology = wgpu::PrimitiveTopology::PointList;
     upDesc.cFragment.module = module;
     upDesc.cFragment.entryPoint = "fsUniform";
@@ -137,7 +134,6 @@
     // Create the pipeline and bindgroup for the pipeline layout with a uniform buffer.
     utils::ComboRenderPipelineDescriptor spDesc;
     spDesc.vertex.module = module;
-    spDesc.vertex.entryPoint = "vs";
     spDesc.primitive.topology = wgpu::PrimitiveTopology::PointList;
     spDesc.cFragment.module = module;
     spDesc.cFragment.entryPoint = "fsStorage";
@@ -205,10 +201,8 @@
     // Create the pipeline and bindgroup for the pipeline layout with a uniform buffer.
     utils::ComboRenderPipelineDescriptor pDesc;
     pDesc.vertex.module = module;
-    pDesc.vertex.entryPoint = "vs";
     pDesc.primitive.topology = wgpu::PrimitiveTopology::PointList;
     pDesc.cFragment.module = module;
-    pDesc.cFragment.entryPoint = "fs";
     pDesc.cFragment.targetCount = 0;
 
     wgpu::DepthStencilState* pDescDS = pDesc.EnableDepthStencil(kDepthFormat);
diff --git a/src/dawn/tests/end2end/FramebufferFetchTests.cpp b/src/dawn/tests/end2end/FramebufferFetchTests.cpp
index a05bac3..29805d2 100644
--- a/src/dawn/tests/end2end/FramebufferFetchTests.cpp
+++ b/src/dawn/tests/end2end/FramebufferFetchTests.cpp
@@ -56,7 +56,6 @@
                 return vec4f(0, 0, 0, 1);
             }
         )");
-        desc->vertex.entryPoint = "vs";
         desc->primitive.topology = wgpu::PrimitiveTopology::PointList;
     }
 
diff --git a/src/dawn/tests/end2end/GpuMemorySynchronizationTests.cpp b/src/dawn/tests/end2end/GpuMemorySynchronizationTests.cpp
index 83d5e45..ab43f95 100644
--- a/src/dawn/tests/end2end/GpuMemorySynchronizationTests.cpp
+++ b/src/dawn/tests/end2end/GpuMemorySynchronizationTests.cpp
@@ -65,7 +65,6 @@
 
         wgpu::ComputePipelineDescriptor cpDesc;
         cpDesc.compute.module = csModule;
-        cpDesc.compute.entryPoint = "main";
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&cpDesc);
 
         wgpu::BindGroup bindGroup =
@@ -260,7 +259,6 @@
 
         wgpu::ComputePipelineDescriptor cpDesc;
         cpDesc.compute.module = csModule;
-        cpDesc.compute.entryPoint = "main";
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&cpDesc);
 
         wgpu::BindGroup bindGroup =
@@ -466,7 +464,6 @@
 
     wgpu::ComputePipelineDescriptor cpDesc;
     cpDesc.compute.module = csModule;
-    cpDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline cp = device.CreateComputePipeline(&cpDesc);
     wgpu::Buffer vertexBuffer = CreateZeroedBuffer(
         kVertexBufferStride * 4,
@@ -581,7 +578,6 @@
 
     wgpu::ComputePipelineDescriptor cpDesc;
     cpDesc.compute.module = csModule;
-    cpDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline cp = device.CreateComputePipeline(&cpDesc);
     struct Data {
         float pos[4][4];
diff --git a/src/dawn/tests/end2end/MaxLimitTests.cpp b/src/dawn/tests/end2end/MaxLimitTests.cpp
index 20ea5fd..b54648a 100644
--- a/src/dawn/tests/end2end/MaxLimitTests.cpp
+++ b/src/dawn/tests/end2end/MaxLimitTests.cpp
@@ -89,7 +89,6 @@
     )";
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = utils::CreateShaderModule(device, shader.c_str());
-    csDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
     // Set up dst storage buffer
@@ -241,7 +240,6 @@
 
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.compute.module = utils::CreateShaderModule(device, shader.c_str());
-        csDesc.compute.entryPoint = "main";
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
         wgpu::BindGroup bindGroup = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
@@ -394,9 +392,7 @@
     pipelineDesc.layout = utils::MakePipelineLayout(device, {bgl});
     pipelineDesc.primitive.topology = wgpu::PrimitiveTopology::PointList;
     pipelineDesc.vertex.module = shaderModule;
-    pipelineDesc.vertex.entryPoint = "vert_main";
     pipelineDesc.cFragment.module = shaderModule;
-    pipelineDesc.cFragment.entryPoint = "frag_main";
     pipelineDesc.cTargets[0].format = renderTargetDesc.format;
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&pipelineDesc);
 
@@ -521,9 +517,7 @@
     pipelineDesc.layout = utils::MakePipelineLayout(device, {bgl});
     pipelineDesc.primitive.topology = wgpu::PrimitiveTopology::PointList;
     pipelineDesc.vertex.module = shaderModule;
-    pipelineDesc.vertex.entryPoint = "vert_main";
     pipelineDesc.cFragment.module = shaderModule;
-    pipelineDesc.cFragment.entryPoint = "frag_main";
     pipelineDesc.cTargets[0].format = renderTargetDesc.format;
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&pipelineDesc);
 
@@ -670,7 +664,6 @@
         interface.str() + "@compute @workgroup_size(1) fn main() {\n" + body.str() + "}\n";
     wgpu::ComputePipelineDescriptor cpDesc;
     cpDesc.compute.module = utils::CreateShaderModule(device, shader.c_str());
-    cpDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline cp = device.CreateComputePipeline(&cpDesc);
 
     wgpu::BindGroupDescriptor bgDesc = {};
@@ -757,10 +750,8 @@
         @vertex fn main() -> @builtin(position) vec4f {
             return vec4f(0.0, 0.0, 0.0, 1.0);
         })");
-    pipelineDesc.vertex.entryPoint = "main";
     pipelineDesc.primitive.topology = wgpu::PrimitiveTopology::PointList;
     pipelineDesc.cFragment.module = CreateShader();
-    pipelineDesc.cFragment.entryPoint = "main";
     pipelineDesc.cTargets.fill(kColorTargetState);
     pipelineDesc.cFragment.targetCount = attachmentCount;
     wgpu::RenderPipeline renderPipeline = device.CreateRenderPipeline(&pipelineDesc);
@@ -1072,9 +1063,7 @@
         wgpu::ShaderModule shaderModule = GetShaderModuleForTest(spec);
         utils::ComboRenderPipelineDescriptor descriptor;
         descriptor.vertex.module = shaderModule;
-        descriptor.vertex.entryPoint = "vs_main";
         descriptor.cFragment.module = shaderModule;
-        descriptor.cFragment.entryPoint = "fs_main";
         descriptor.vertex.bufferCount = 0;
         descriptor.cBuffers[0].attributeCount = 0;
         descriptor.cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
diff --git a/src/dawn/tests/end2end/MultisampledSamplingTests.cpp b/src/dawn/tests/end2end/MultisampledSamplingTests.cpp
index 001ea81..4917c4d 100644
--- a/src/dawn/tests/end2end/MultisampledSamplingTests.cpp
+++ b/src/dawn/tests/end2end/MultisampledSamplingTests.cpp
@@ -109,7 +109,6 @@
         }
         {
             wgpu::ComputePipelineDescriptor desc = {};
-            desc.compute.entryPoint = "main";
             desc.compute.module = utils::CreateShaderModule(device, R"(
                 @group(0) @binding(0) var texture0 : texture_multisampled_2d<f32>;
                 @group(0) @binding(1) var texture1 : texture_depth_multisampled_2d;
diff --git a/src/dawn/tests/end2end/MultithreadTests.cpp b/src/dawn/tests/end2end/MultithreadTests.cpp
index c9cfd00..9a938eb 100644
--- a/src/dawn/tests/end2end/MultithreadTests.cpp
+++ b/src/dawn/tests/end2end/MultithreadTests.cpp
@@ -268,7 +268,6 @@
     utils::RunInParallel(static_cast<uint32_t>(pipelines.size()), [&](uint32_t index) {
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.compute.module = utils::CreateShaderModule(device, shaderSources[index].c_str());
-        csDesc.compute.entryPoint = "main";
 
         struct Task {
             wgpu::ComputePipeline computePipeline;
@@ -467,7 +466,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = csModule;
-    csDesc.compute.entryPoint = "main";
     csDesc.layout = pipelineLayout;
 
     utils::RunInParallel(100, [&, this](uint32_t) {
@@ -636,7 +634,6 @@
             })");
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = module;
-    csDesc.compute.entryPoint = "main";
     auto pipeline = device.CreateComputePipeline(&csDesc);
 
     wgpu::Buffer dstBuffer =
diff --git a/src/dawn/tests/end2end/OpArrayLengthTests.cpp b/src/dawn/tests/end2end/OpArrayLengthTests.cpp
index 435ebdc..6ca47b2 100644
--- a/src/dawn/tests/end2end/OpArrayLengthTests.cpp
+++ b/src/dawn/tests/end2end/OpArrayLengthTests.cpp
@@ -139,7 +139,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc;
     pipelineDesc.layout = pl;
-    pipelineDesc.compute.entryPoint = "main";
     pipelineDesc.compute.module = utils::CreateShaderModule(device, (R"(
         struct ResultBuffer {
             data : array<u32, 3>
diff --git a/src/dawn/tests/end2end/Packed4x8IntegerDotProductTests.cpp b/src/dawn/tests/end2end/Packed4x8IntegerDotProductTests.cpp
index e187d72..8154bde 100644
--- a/src/dawn/tests/end2end/Packed4x8IntegerDotProductTests.cpp
+++ b/src/dawn/tests/end2end/Packed4x8IntegerDotProductTests.cpp
@@ -77,7 +77,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = utils::CreateShaderModule(device, computeShader);
-    csDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
     wgpu::BindGroup bindGroup = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
@@ -149,7 +148,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = utils::CreateShaderModule(device, computeShader);
-    csDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
     wgpu::BindGroup bindGroup = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
@@ -221,7 +219,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = utils::CreateShaderModule(device, computeShader);
-    csDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
     wgpu::BindGroup bindGroup = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
diff --git a/src/dawn/tests/end2end/PipelineLayoutTests.cpp b/src/dawn/tests/end2end/PipelineLayoutTests.cpp
index cc256bd..70c0fc4 100644
--- a/src/dawn/tests/end2end/PipelineLayoutTests.cpp
+++ b/src/dawn/tests/end2end/PipelineLayoutTests.cpp
@@ -111,7 +111,6 @@
         wgpu::ComputePipelineDescriptor desc = {};
         desc.layout = pl;
         desc.compute.module = shaderModule;
-        desc.compute.entryPoint = "computeMain";
         computePipeline = device.CreateComputePipeline(&desc);
     }
     wgpu::RenderPipeline renderPipeline;
@@ -119,12 +118,10 @@
         wgpu::RenderPipelineDescriptor desc = {};
         desc.layout = pl;
         desc.vertex.module = shaderModule;
-        desc.vertex.entryPoint = "vertexMain";
 
         wgpu::FragmentState fragment = {};
         desc.fragment = &fragment;
         fragment.module = shaderModule;
-        fragment.entryPoint = "fragmentMain";
         fragment.targetCount = 1;
 
         wgpu::ColorTargetState colorTargetState = {};
diff --git a/src/dawn/tests/end2end/PixelLocalStorageTests.cpp b/src/dawn/tests/end2end/PixelLocalStorageTests.cpp
index b4fb274..b205986 100644
--- a/src/dawn/tests/end2end/PixelLocalStorageTests.cpp
+++ b/src/dawn/tests/end2end/PixelLocalStorageTests.cpp
@@ -367,7 +367,6 @@
             utils::ComboRenderPipelineDescriptor desc;
             desc.layout = MakeTestLayout(spec);
             desc.vertex.module = module;
-            desc.vertex.entryPoint = "vs";
             desc.cFragment.module = module;
             desc.cFragment.entryPoint = "accumulator";
             desc.primitive.topology = wgpu::PrimitiveTopology::PointList;
@@ -387,7 +386,6 @@
             utils::ComboRenderPipelineDescriptor desc;
             desc.layout = MakeTestLayout(spec, bgl);
             desc.vertex.module = module;
-            desc.vertex.entryPoint = "vs";
             desc.cFragment.module = module;
             desc.cFragment.entryPoint = "readbackToStorageBuffer";
             desc.primitive.topology = wgpu::PrimitiveTopology::PointList;
@@ -406,7 +404,6 @@
             utils::ComboRenderPipelineDescriptor desc;
             desc.layout = MakeTestLayout(spec);
             desc.vertex.module = module;
-            desc.vertex.entryPoint = "vs";
             desc.cFragment.module = module;
             desc.cFragment.entryPoint = "copyToColorAttachment";
             desc.primitive.topology = wgpu::PrimitiveTopology::PointList;
@@ -686,7 +683,6 @@
     utils::ComboRenderPipelineDescriptor pipelineDescriptor;
     {
         pipelineDescriptor.vertex.module = wgslModule;
-        pipelineDescriptor.vertex.entryPoint = "vsMain";
         pipelineDescriptor.cFragment.module = wgslModule;
         pipelineDescriptor.cFragment.entryPoint = "accumulate";
         pipelineDescriptor.cFragment.targetCount = 1;
diff --git a/src/dawn/tests/end2end/QueryTests.cpp b/src/dawn/tests/end2end/QueryTests.cpp
index dc86062..0752729 100644
--- a/src/dawn/tests/end2end/QueryTests.cpp
+++ b/src/dawn/tests/end2end/QueryTests.cpp
@@ -635,7 +635,6 @@
 
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.compute.module = module;
-        csDesc.compute.entryPoint = "main";
         computePipeline = device.CreateComputePipeline(&csDesc);
     }
 
diff --git a/src/dawn/tests/end2end/ShaderF16Tests.cpp b/src/dawn/tests/end2end/ShaderF16Tests.cpp
index 72a6c6c..ae5cc49 100644
--- a/src/dawn/tests/end2end/ShaderF16Tests.cpp
+++ b/src/dawn/tests/end2end/ShaderF16Tests.cpp
@@ -128,7 +128,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = utils::CreateShaderModule(device, computeShader);
-    csDesc.compute.entryPoint = "CSMain";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
     wgpu::BindGroup bindGroup = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
@@ -181,10 +180,8 @@
         utils::ComboRenderPipelineDescriptor descriptor;
 
         descriptor.vertex.module = shaderModule;
-        descriptor.vertex.entryPoint = "VSMain";
 
         descriptor.cFragment.module = shaderModule;
-        descriptor.cFragment.entryPoint = "FSMain";
         descriptor.primitive.topology = wgpu::PrimitiveTopology::TriangleList;
         descriptor.cTargets[0].format = kFormat;
 
@@ -267,10 +264,8 @@
         utils::ComboRenderPipelineDescriptor descriptor;
 
         descriptor.vertex.module = shaderModule;
-        descriptor.vertex.entryPoint = "VSMain";
 
         descriptor.cFragment.module = shaderModule;
-        descriptor.cFragment.entryPoint = "FSMain";
         descriptor.primitive.topology = wgpu::PrimitiveTopology::TriangleList;
         descriptor.cTargets[0].format = kFormat;
 
@@ -385,7 +380,6 @@
         utils::ComboRenderPipelineDescriptor descriptor;
 
         descriptor.vertex.module = shaderModule;
-        descriptor.vertex.entryPoint = "VSMain";
         descriptor.vertex.bufferCount = 2;
         // Interprete the vertex buffer data as Float32x2 and Float32x4, and the result should be
         // converted to vec2<f16> and vec4<f16>
@@ -405,7 +399,6 @@
         descriptor.cBuffers[1].attributes = &descriptor.cAttributes[1];
 
         descriptor.cFragment.module = shaderModule;
-        descriptor.cFragment.entryPoint = "FSMain";
         descriptor.primitive.topology = wgpu::PrimitiveTopology::PointList;
         descriptor.cTargets[0].format = kFormat;
 
diff --git a/src/dawn/tests/end2end/ShaderTests.cpp b/src/dawn/tests/end2end/ShaderTests.cpp
index 4035668..c2293e3 100644
--- a/src/dawn/tests/end2end/ShaderTests.cpp
+++ b/src/dawn/tests/end2end/ShaderTests.cpp
@@ -321,9 +321,7 @@
 
     utils::ComboRenderPipelineDescriptor rpDesc;
     rpDesc.vertex.module = shaderModule;
-    rpDesc.vertex.entryPoint = "vertexMain";
     rpDesc.cFragment.module = shaderModule;
-    rpDesc.cFragment.entryPoint = "fragmentMain";
     rpDesc.vertex.bufferCount = 1;
     rpDesc.cBuffers[0].attributeCount = 2;
     rpDesc.cBuffers[0].arrayStride = 28;
@@ -362,9 +360,7 @@
 
     utils::ComboRenderPipelineDescriptor rpDesc;
     rpDesc.vertex.module = shaderModule;
-    rpDesc.vertex.entryPoint = "vertexMain";
     rpDesc.cFragment.module = shaderModule;
-    rpDesc.cFragment.entryPoint = "fragmentMain";
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&rpDesc);
 }
 
@@ -406,9 +402,7 @@
 
     utils::ComboRenderPipelineDescriptor rpDesc;
     rpDesc.vertex.module = shaderModule;
-    rpDesc.vertex.entryPoint = "vertexMain";
     rpDesc.cFragment.module = shaderModule;
-    rpDesc.cFragment.entryPoint = "fragmentMain";
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&rpDesc);
 }
 
@@ -446,9 +440,7 @@
 
     utils::ComboRenderPipelineDescriptor rpDesc;
     rpDesc.vertex.module = shaderModule;
-    rpDesc.vertex.entryPoint = "vertexMain";
     rpDesc.cFragment.module = shaderModule;
-    rpDesc.cFragment.entryPoint = "fragmentMain";
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&rpDesc);
 }
 
@@ -486,9 +478,7 @@
 
     utils::ComboRenderPipelineDescriptor rpDesc;
     rpDesc.vertex.module = shaderModule;
-    rpDesc.vertex.entryPoint = "vertexMain";
     rpDesc.cFragment.module = shaderModule;
-    rpDesc.cFragment.entryPoint = "fragmentMain";
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&rpDesc);
 }
 
@@ -525,9 +515,7 @@
 
     utils::ComboRenderPipelineDescriptor rpDesc;
     rpDesc.vertex.module = shaderModule;
-    rpDesc.vertex.entryPoint = "vertexMain";
     rpDesc.cFragment.module = shaderModule;
-    rpDesc.cFragment.entryPoint = "fragmentMain";
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&rpDesc);
 }
 
@@ -559,9 +547,7 @@
 
     utils::ComboRenderPipelineDescriptor rpDesc;
     rpDesc.vertex.module = shaderModule;
-    rpDesc.vertex.entryPoint = "vertexMain";
     rpDesc.cFragment.module = shaderModule;
-    rpDesc.cFragment.entryPoint = "fragmentMain";
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&rpDesc);
 }
 
@@ -595,9 +581,7 @@
 
     utils::ComboRenderPipelineDescriptor rpDesc;
     rpDesc.vertex.module = shaderModule;
-    rpDesc.vertex.entryPoint = "vertexMain";
     rpDesc.cFragment.module = shaderModule;
-    rpDesc.cFragment.entryPoint = "fragmentMain";
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&rpDesc);
 }
 
@@ -631,9 +615,7 @@
 
     utils::ComboRenderPipelineDescriptor rpDesc;
     rpDesc.vertex.module = module;
-    rpDesc.vertex.entryPoint = "vsMain";
     rpDesc.cFragment.module = module;
-    rpDesc.cFragment.entryPoint = "fsMain";
     rpDesc.vertex.bufferCount = 1;
     rpDesc.cBuffers[0].attributeCount = 1;
     rpDesc.cBuffers[0].arrayStride = 16;
@@ -1143,9 +1125,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -1199,7 +1179,6 @@
             result = values[index];
         }
     )");
-    cDesc.compute.entryPoint = "little_bobby_tables";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&cDesc);
 
     // Test 4-byte buffer that will receive the result.
@@ -1869,9 +1848,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -1903,9 +1880,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -1943,9 +1918,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = vsModule;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = fsModule;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -1970,9 +1943,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -1999,9 +1970,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -2028,9 +1997,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -2059,9 +2026,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -2093,9 +2058,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -2125,9 +2088,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = vsModule;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = fsModule;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -2152,9 +2113,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -2181,9 +2140,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
@@ -2210,9 +2167,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertex";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragment";
 
     device.CreateRenderPipeline(&desc);
 }
diff --git a/src/dawn/tests/end2end/ShaderValidationTests.cpp b/src/dawn/tests/end2end/ShaderValidationTests.cpp
index 95c185e..72506e8 100644
--- a/src/dawn/tests/end2end/ShaderValidationTests.cpp
+++ b/src/dawn/tests/end2end/ShaderValidationTests.cpp
@@ -87,7 +87,6 @@
     void TestCreatePipeline(const wgpu::ShaderModule& module) {
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.compute.module = module;
-        csDesc.compute.entryPoint = "main";
         csDesc.compute.constants = nullptr;
         csDesc.compute.constantCount = 0;
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
@@ -97,7 +96,6 @@
                             const std::vector<wgpu::ConstantEntry>& constants) {
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.compute.module = module;
-        csDesc.compute.entryPoint = "main";
         csDesc.compute.constants = constants.data();
         csDesc.compute.constantCount = constants.size();
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
@@ -139,7 +137,6 @@
         ss << "@compute @workgroup_size(" << x << "," << y << "," << z << ") fn main() {}";
 
         wgpu::ComputePipelineDescriptor desc;
-        desc.compute.entryPoint = "main";
         desc.compute.module = utils::CreateShaderModule(device, ss.str().c_str());
 
         if (success) {
@@ -195,7 +192,6 @@
         ss << "@compute @workgroup_size(1) fn main() { " << body.str() << " }";
 
         wgpu::ComputePipelineDescriptor desc;
-        desc.compute.entryPoint = "main";
         desc.compute.module = utils::CreateShaderModule(device, ss.str().c_str());
 
         if (success) {
@@ -374,7 +370,6 @@
         ss << "@compute @workgroup_size(1) fn main() { " << body.str() << " }";
 
         wgpu::ComputePipelineDescriptor desc;
-        desc.compute.entryPoint = "main";
         desc.compute.module = utils::CreateShaderModule(device, ss.str().c_str());
         desc.compute.constants = constants.data();
         desc.compute.constantCount = constants.size();
diff --git a/src/dawn/tests/end2end/StorageTextureTests.cpp b/src/dawn/tests/end2end/StorageTextureTests.cpp
index aa81fc5..ffbf1f0 100644
--- a/src/dawn/tests/end2end/StorageTextureTests.cpp
+++ b/src/dawn/tests/end2end/StorageTextureTests.cpp
@@ -466,7 +466,6 @@
         wgpu::ComputePipelineDescriptor computeDescriptor;
         computeDescriptor.layout = nullptr;
         computeDescriptor.compute.module = csModule;
-        computeDescriptor.compute.entryPoint = "main";
         return device.CreateComputePipeline(&computeDescriptor);
     }
 
@@ -828,7 +827,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc = {};
     pipelineDesc.compute.module = module;
-    pipelineDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDesc);
 
     // In bindGroupA storageTexture1 is bound as read-only storage texture and storageTexture2 is
@@ -1308,7 +1306,6 @@
     wgpu::ComputePipelineDescriptor computeDescriptor;
     computeDescriptor.layout = utils::MakePipelineLayout(device, {bindGroupLayout});
     computeDescriptor.compute.module = utils::CreateShaderModule(device, sstream.str().c_str());
-    computeDescriptor.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&computeDescriptor);
 
     wgpu::BindGroup bindGroup =
diff --git a/src/dawn/tests/end2end/Texture3DTests.cpp b/src/dawn/tests/end2end/Texture3DTests.cpp
index c1c41cb..ec2c6fc 100644
--- a/src/dawn/tests/end2end/Texture3DTests.cpp
+++ b/src/dawn/tests/end2end/Texture3DTests.cpp
@@ -157,7 +157,6 @@
             _ = t;
         }
     )");
-    pDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pDesc);
 
     wgpu::BindGroup bg = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0), {{0, v}});
diff --git a/src/dawn/tests/end2end/TextureShaderBuiltinTests.cpp b/src/dawn/tests/end2end/TextureShaderBuiltinTests.cpp
index bdb7455..9c10dc3 100644
--- a/src/dawn/tests/end2end/TextureShaderBuiltinTests.cpp
+++ b/src/dawn/tests/end2end/TextureShaderBuiltinTests.cpp
@@ -175,7 +175,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDescriptor;
     pipelineDescriptor.compute.module = utils::CreateShaderModule(device, shaderSource.str());
-    pipelineDescriptor.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDescriptor);
 
     wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
@@ -247,7 +246,6 @@
     dstBuf[4] = f_nested(tex1, 100u);
 }
     )");
-    pipelineDescriptor.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDescriptor);
 
     wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
@@ -350,7 +348,6 @@
     {
         wgpu::ComputePipelineDescriptor pipelineDescriptor;
         pipelineDescriptor.compute.module = utils::CreateShaderModule(device, shader);
-        pipelineDescriptor.compute.entryPoint = "main";
         pipeline = device.CreateComputePipeline(&pipelineDescriptor);
     }
 
diff --git a/src/dawn/tests/end2end/TextureViewTests.cpp b/src/dawn/tests/end2end/TextureViewTests.cpp
index 484043f..2120fc8 100644
--- a/src/dawn/tests/end2end/TextureViewTests.cpp
+++ b/src/dawn/tests/end2end/TextureViewTests.cpp
@@ -1139,9 +1139,7 @@
     )");
     utils::ComboRenderPipelineDescriptor pDesc;
     pDesc.vertex.module = module;
-    pDesc.vertex.entryPoint = "vs";
     pDesc.cFragment.module = module;
-    pDesc.cFragment.entryPoint = "fs";
     pDesc.cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&pDesc);
 
diff --git a/src/dawn/tests/end2end/TextureZeroInitTests.cpp b/src/dawn/tests/end2end/TextureZeroInitTests.cpp
index fb76296..318da89 100644
--- a/src/dawn/tests/end2end/TextureZeroInitTests.cpp
+++ b/src/dawn/tests/end2end/TextureZeroInitTests.cpp
@@ -1182,7 +1182,6 @@
         }
     )";
     computePipelineDescriptor.compute.module = utils::CreateShaderModule(device, cs);
-    computePipelineDescriptor.compute.entryPoint = "main";
     wgpu::ComputePipeline computePipeline =
         device.CreateComputePipeline(&computePipelineDescriptor);
 
diff --git a/src/dawn/tests/perf_tests/ShaderRobustnessPerf.cpp b/src/dawn/tests/perf_tests/ShaderRobustnessPerf.cpp
index a45c78c..cdecf41 100644
--- a/src/dawn/tests/perf_tests/ShaderRobustnessPerf.cpp
+++ b/src/dawn/tests/perf_tests/ShaderRobustnessPerf.cpp
@@ -457,7 +457,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = module;
-    csDesc.compute.entryPoint = "main";
     mPipeline = device.CreateComputePipeline(&csDesc);
 
     mBindGroup = utils::MakeBindGroup(device, mPipeline.GetBindGroupLayout(0),
diff --git a/src/dawn/tests/perf_tests/VulkanZeroInitializeWorkgroupMemoryPerf.cpp b/src/dawn/tests/perf_tests/VulkanZeroInitializeWorkgroupMemoryPerf.cpp
index 9ee007b..77fa7d5 100644
--- a/src/dawn/tests/perf_tests/VulkanZeroInitializeWorkgroupMemoryPerf.cpp
+++ b/src/dawn/tests/perf_tests/VulkanZeroInitializeWorkgroupMemoryPerf.cpp
@@ -93,7 +93,6 @@
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.layout = utils::MakePipelineLayout(device, {bindGroupLayout});
     csDesc.compute.module = utils::CreateShaderModule(device, ostream.str().c_str());
-    csDesc.compute.entryPoint = "main";
     mPipeline = device.CreateComputePipeline(&csDesc);
 
     std::array<float, kWorkgroupArraySize * kNumIterations> data;
diff --git a/src/dawn/tests/unittests/native/AllowedErrorTests.cpp b/src/dawn/tests/unittests/native/AllowedErrorTests.cpp
index c6f3ae7..2527fb0 100644
--- a/src/dawn/tests/unittests/native/AllowedErrorTests.cpp
+++ b/src/dawn/tests/unittests/native/AllowedErrorTests.cpp
@@ -218,7 +218,6 @@
 
     ComputePipelineDescriptor desc = {};
     desc.compute.module = csModule.Get();
-    desc.compute.entryPoint = "main";
 
     Ref<ComputePipelineMock> computePipelineMock = ComputePipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*computePipelineMock.Get(), Initialize)
@@ -239,7 +238,6 @@
 
     RenderPipelineDescriptor desc = {};
     desc.vertex.module = vsModule.Get();
-    desc.vertex.entryPoint = "main";
 
     Ref<RenderPipelineMock> renderPipelineMock = RenderPipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*renderPipelineMock.Get(), Initialize)
@@ -261,7 +259,6 @@
 
     ComputePipelineDescriptor desc = {};
     desc.compute.module = csModule.Get();
-    desc.compute.entryPoint = "main";
 
     Ref<ComputePipelineMock> computePipelineMock = ComputePipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*computePipelineMock.Get(), Initialize)
@@ -286,7 +283,6 @@
 
     RenderPipelineDescriptor desc = {};
     desc.vertex.module = vsModule.Get();
-    desc.vertex.entryPoint = "main";
 
     Ref<RenderPipelineMock> renderPipelineMock = RenderPipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*renderPipelineMock.Get(), Initialize)
@@ -314,7 +310,6 @@
 
     ComputePipelineDescriptor desc = {};
     desc.compute.module = csModule.Get();
-    desc.compute.entryPoint = "main";
 
     Ref<ComputePipelineMock> computePipelineMock = ComputePipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*computePipelineMock.Get(), Initialize)
@@ -340,7 +335,6 @@
 
     RenderPipelineDescriptor desc = {};
     desc.vertex.module = vsModule.Get();
-    desc.vertex.entryPoint = "main";
 
     Ref<RenderPipelineMock> renderPipelineMock = RenderPipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*renderPipelineMock.Get(), Initialize)
@@ -367,7 +361,6 @@
 
     ComputePipelineDescriptor desc = {};
     desc.compute.module = csModule.Get();
-    desc.compute.entryPoint = "main";
 
     Ref<ComputePipelineMock> computePipelineMock = ComputePipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*computePipelineMock.Get(), Initialize)
@@ -394,7 +387,6 @@
 
     RenderPipelineDescriptor desc = {};
     desc.vertex.module = vsModule.Get();
-    desc.vertex.entryPoint = "main";
 
     Ref<RenderPipelineMock> renderPipelineMock = RenderPipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*renderPipelineMock.Get(), Initialize)
diff --git a/src/dawn/tests/unittests/native/CommandBufferEncodingTests.cpp b/src/dawn/tests/unittests/native/CommandBufferEncodingTests.cpp
index 3634c89..1ad37e0 100644
--- a/src/dawn/tests/unittests/native/CommandBufferEncodingTests.cpp
+++ b/src/dawn/tests/unittests/native/CommandBufferEncodingTests.cpp
@@ -77,7 +77,6 @@
         @compute @workgroup_size(1, 1, 1)
         fn main() {
         })");
-    csDesc.compute.entryPoint = "main";
 
     wgpu::PipelineLayout pl0 = utils::MakePipelineLayout(device, {staticLayout, dynamicLayout});
     csDesc.layout = pl0;
@@ -307,7 +306,6 @@
         @compute @workgroup_size(1, 1, 1)
         fn main() {
         })");
-    csDesc.compute.entryPoint = "main";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
 
     // Set the pipeline.
diff --git a/src/dawn/tests/unittests/native/CreatePipelineAsyncTaskTests.cpp b/src/dawn/tests/unittests/native/CreatePipelineAsyncTaskTests.cpp
index 74ce683..766db23 100644
--- a/src/dawn/tests/unittests/native/CreatePipelineAsyncTaskTests.cpp
+++ b/src/dawn/tests/unittests/native/CreatePipelineAsyncTaskTests.cpp
@@ -60,7 +60,6 @@
 TEST_F(CreatePipelineAsyncTaskTests, InitializationValidationErrorInCreateRenderPipelineAsync) {
     wgpu::RenderPipelineDescriptor desc = {};
     desc.vertex.module = utils::CreateShaderModule(device, kVertexShader.data());
-    desc.vertex.entryPoint = "main";
     Ref<RenderPipelineMock> renderPipelineMock =
         RenderPipelineMock::Create(mDeviceMock, FromCppAPI(&desc));
 
@@ -88,7 +87,6 @@
 TEST_F(CreatePipelineAsyncTaskTests, InitializationInternalErrorInCreateRenderPipelineAsync) {
     wgpu::RenderPipelineDescriptor desc = {};
     desc.vertex.module = utils::CreateShaderModule(device, kVertexShader.data());
-    desc.vertex.entryPoint = "main";
     Ref<RenderPipelineMock> renderPipelineMock =
         RenderPipelineMock::Create(mDeviceMock, FromCppAPI(&desc));
 
@@ -116,7 +114,6 @@
 TEST_F(CreatePipelineAsyncTaskTests, InitializationValidationErrorInCreateComputePipelineAsync) {
     wgpu::ComputePipelineDescriptor desc = {};
     desc.compute.module = utils::CreateShaderModule(device, kComputeShader.data());
-    desc.compute.entryPoint = "main";
     Ref<ComputePipelineMock> computePipelineMock =
         ComputePipelineMock::Create(mDeviceMock, FromCppAPI(&desc));
 
@@ -144,7 +141,6 @@
 TEST_F(CreatePipelineAsyncTaskTests, InitializationInternalErrorInCreateComputePipelineAsync) {
     wgpu::ComputePipelineDescriptor desc = {};
     desc.compute.module = utils::CreateShaderModule(device, kComputeShader.data());
-    desc.compute.entryPoint = "main";
     Ref<ComputePipelineMock> computePipelineMock =
         ComputePipelineMock::Create(mDeviceMock, FromCppAPI(&desc));
 
@@ -172,7 +168,6 @@
 TEST_F(CreatePipelineAsyncTaskTests, LongAsyncTaskFinishesBeforeDeviceIsDropped) {
     wgpu::RenderPipelineDescriptor desc = {};
     desc.vertex.module = utils::CreateShaderModule(device, kVertexShader.data());
-    desc.vertex.entryPoint = "main";
     Ref<RenderPipelineMock> renderPipelineMock =
         RenderPipelineMock::Create(mDeviceMock, FromCppAPI(&desc));
 
diff --git a/src/dawn/tests/unittests/native/DestroyObjectTests.cpp b/src/dawn/tests/unittests/native/DestroyObjectTests.cpp
index 48f3753..9ccdffe 100644
--- a/src/dawn/tests/unittests/native/DestroyObjectTests.cpp
+++ b/src/dawn/tests/unittests/native/DestroyObjectTests.cpp
@@ -325,7 +325,6 @@
         ShaderModuleMock::Create(mDeviceMock, kComputeShader.data());
     ComputePipelineDescriptor desc = {};
     desc.compute.module = csModuleMock.Get();
-    desc.compute.entryPoint = "main";
 
     Ref<ComputePipelineMock> computePipelineMock = ComputePipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*computePipelineMock.Get(), DestroyImpl).Times(1);
@@ -342,7 +341,6 @@
         ShaderModuleMock::Create(mDeviceMock, kComputeShader.data());
     ComputePipelineDescriptor desc = {};
     desc.compute.module = csModuleMock.Get();
-    desc.compute.entryPoint = "main";
 
     // Compute pipelines are initialized during their creation via the device.
     Ref<ComputePipelineMock> computePipelineMock = ComputePipelineMock::Create(mDeviceMock, &desc);
@@ -552,7 +550,6 @@
         ShaderModuleMock::Create(mDeviceMock, kVertexShader.data());
     RenderPipelineDescriptor desc = {};
     desc.vertex.module = vsModuleMock.Get();
-    desc.vertex.entryPoint = "main";
 
     Ref<RenderPipelineMock> renderPipelineMock = RenderPipelineMock::Create(mDeviceMock, &desc);
     EXPECT_CALL(*renderPipelineMock.Get(), DestroyImpl).Times(1);
@@ -569,7 +566,6 @@
         ShaderModuleMock::Create(mDeviceMock, kVertexShader.data());
     RenderPipelineDescriptor desc = {};
     desc.vertex.module = vsModuleMock.Get();
-    desc.vertex.entryPoint = "main";
 
     // Render pipelines are initialized during their creation via the device.
     Ref<RenderPipelineMock> renderPipelineMock = RenderPipelineMock::Create(mDeviceMock, &desc);
@@ -884,7 +880,6 @@
     {
         ComputePipelineDescriptor desc = {};
         desc.compute.module = csModuleMock.Get();
-        desc.compute.entryPoint = "main";
 
         ScopedRawPtrExpectation scoped(mDeviceMock);
         computePipelineMock = ComputePipelineMock::Create(mDeviceMock, &desc);
@@ -927,7 +922,6 @@
     {
         RenderPipelineDescriptor desc = {};
         desc.vertex.module = vsModuleMock.Get();
-        desc.vertex.entryPoint = "main";
 
         ScopedRawPtrExpectation scoped(mDeviceMock);
         renderPipelineMock = RenderPipelineMock::Create(mDeviceMock, &desc);
@@ -1063,10 +1057,8 @@
     ::dawn::utils::ComboRenderPipelineDescriptor pipelineDesc;
     pipelineDesc.cTargets[0].writeMask = wgpu::ColorWriteMask::None;
     pipelineDesc.vertex.module = ::dawn::utils::CreateShaderModule(device, kVertexShader.data());
-    pipelineDesc.vertex.entryPoint = "main";
     pipelineDesc.cFragment.module =
         ::dawn::utils::CreateShaderModule(device, kFragmentShader.data());
-    pipelineDesc.cFragment.entryPoint = "main";
     renderEncoder.SetPipeline(device.CreateRenderPipeline(&pipelineDesc));
 
     device.Destroy();
@@ -1081,7 +1073,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc;
     pipelineDesc.compute.module = ::dawn::utils::CreateShaderModule(device, kComputeShader.data());
-    pipelineDesc.compute.entryPoint = "main";
     computeEncoder.SetPipeline(device.CreateComputePipeline(&pipelineDesc));
 
     device.Destroy();
diff --git a/src/dawn/tests/unittests/validation/BindGroupValidationTests.cpp b/src/dawn/tests/unittests/validation/BindGroupValidationTests.cpp
index f046e1e..766a1a7 100644
--- a/src/dawn/tests/unittests/validation/BindGroupValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/BindGroupValidationTests.cpp
@@ -1833,7 +1833,6 @@
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.layout = pipelineLayout;
         csDesc.compute.module = csModule;
-        csDesc.compute.entryPoint = "main";
 
         return device.CreateComputePipeline(&csDesc);
     }
@@ -2357,7 +2356,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc;
     pipelineDesc.layout = pl;
-    pipelineDesc.compute.entryPoint = "main";
     pipelineDesc.compute.module = utils::CreateShaderModule(device, R"(
         @compute @workgroup_size(1) fn main() {
         }
@@ -2648,7 +2646,6 @@
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.layout = pipelineLayout;
         csDesc.compute.module = csModule;
-        csDesc.compute.entryPoint = "main";
 
         return device.CreateComputePipeline(&csDesc);
     }
diff --git a/src/dawn/tests/unittests/validation/CompatValidationTests.cpp b/src/dawn/tests/unittests/validation/CompatValidationTests.cpp
index 04555f9..6b90bc1 100644
--- a/src/dawn/tests/unittests/validation/CompatValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/CompatValidationTests.cpp
@@ -126,9 +126,7 @@
     utils::ComboRenderPipelineDescriptor testDescriptor;
     testDescriptor.layout = {};
     testDescriptor.vertex.module = module;
-    testDescriptor.vertex.entryPoint = "vs";
     testDescriptor.cFragment.module = module;
-    testDescriptor.cFragment.entryPoint = "fs";
     testDescriptor.cFragment.targetCount = 3;
     testDescriptor.cTargets[1].format = wgpu::TextureFormat::Undefined;
 
@@ -210,7 +208,6 @@
     {
         utils::ComboRenderPipelineDescriptor descriptor;
         descriptor.vertex.module = moduleSampleMaskOutput;
-        descriptor.vertex.entryPoint = "vs";
         descriptor.cFragment.module = moduleSampleMaskOutput;
         descriptor.cFragment.entryPoint = "fsWithoutSampleMaskUsage";
         descriptor.multisample.count = 4;
@@ -223,7 +220,6 @@
     {
         utils::ComboRenderPipelineDescriptor descriptor;
         descriptor.vertex.module = moduleSampleMaskOutput;
-        descriptor.vertex.entryPoint = "vs";
         descriptor.cFragment.module = moduleSampleMaskOutput;
         descriptor.cFragment.entryPoint = "fsWithSampleMaskUsage";
         descriptor.multisample.count = 4;
@@ -277,7 +273,6 @@
         for (auto entryPoint : entryPoints) {
             utils::ComboRenderPipelineDescriptor descriptor;
             descriptor.vertex.module = moduleInterpolationLinear;
-            descriptor.vertex.entryPoint = "vs";
             descriptor.cFragment.module = moduleInterpolationLinear;
             descriptor.cFragment.entryPoint = entryPoint;
 
@@ -383,9 +378,7 @@
 
     utils::ComboRenderPipelineDescriptor pDesc;
     pDesc.vertex.module = module;
-    pDesc.vertex.entryPoint = "vs";
     pDesc.cFragment.module = module;
-    pDesc.cFragment.entryPoint = "fs";
     pDesc.cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
     wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&pDesc);
 
@@ -634,7 +627,6 @@
 
     wgpu::ComputePipelineDescriptor pDesc;
     pDesc.compute.module = module;
-    pDesc.compute.entryPoint = "cs";
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pDesc);
 
     fn(device, texture, pipeline,
@@ -1336,9 +1328,7 @@
 
         utils::ComboRenderPipelineDescriptor descriptor;
         descriptor.layout = {};
-        descriptor.vertex.entryPoint = "vs";
         descriptor.vertex.bufferCount = 1;
-        descriptor.cFragment.entryPoint = "fs";
         descriptor.cBuffers[0].arrayStride = 16;
         descriptor.cBuffers[0].attributeCount = numAttributes;
 
diff --git a/src/dawn/tests/unittests/validation/ComputeIndirectValidationTests.cpp b/src/dawn/tests/unittests/validation/ComputeIndirectValidationTests.cpp
index 81985c1..52b042d 100644
--- a/src/dawn/tests/unittests/validation/ComputeIndirectValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/ComputeIndirectValidationTests.cpp
@@ -48,7 +48,6 @@
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.layout = pl;
         csDesc.compute.module = computeModule;
-        csDesc.compute.entryPoint = "main";
         pipeline = device.CreateComputePipeline(&csDesc);
     }
 
diff --git a/src/dawn/tests/unittests/validation/ComputeValidationTests.cpp b/src/dawn/tests/unittests/validation/ComputeValidationTests.cpp
index 1793b6b..0b9f71a 100644
--- a/src/dawn/tests/unittests/validation/ComputeValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/ComputeValidationTests.cpp
@@ -56,7 +56,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = computeModule;
-    csDesc.compute.entryPoint = "main";
     device.CreateComputePipeline(&csDesc);
 }
 
@@ -77,7 +76,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = computeModule;
-    csDesc.compute.entryPoint = "main";
 
     wgpu::DawnComputePipelineFullSubgroups subgroupOptions;
     subgroupOptions.requiresFullSubgroups = false;
@@ -126,7 +124,6 @@
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.layout = pl;
     csDesc.compute.module = computeModule;
-    csDesc.compute.entryPoint = "main";
 
     wgpu::DawnComputePipelineFullSubgroups subgroupOptions;
     subgroupOptions.requiresFullSubgroups = false;
@@ -146,7 +143,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = computeModule;
-    csDesc.compute.entryPoint = "main";
 
     wgpu::DawnComputePipelineFullSubgroups subgroupOptions;
     subgroupOptions.requiresFullSubgroups = true;
@@ -166,7 +162,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = computeModule;
-    csDesc.compute.entryPoint = "main";
 
     wgpu::DawnComputePipelineFullSubgroups subgroupOptions;
     subgroupOptions.requiresFullSubgroups = true;
@@ -192,7 +187,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = computeModule;
-    csDesc.compute.entryPoint = "main";
     csDesc.compute.constants = constants.data();
     csDesc.compute.constantCount = constants.size();
 
@@ -220,7 +214,6 @@
 
     wgpu::ComputePipelineDescriptor csDesc;
     csDesc.compute.module = computeModule;
-    csDesc.compute.entryPoint = "main";
     csDesc.compute.constants = constants.data();
     csDesc.compute.constantCount = constants.size();
 
@@ -249,7 +242,6 @@
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.layout = pl;
         csDesc.compute.module = computeModule;
-        csDesc.compute.entryPoint = "main";
         pipeline = device.CreateComputePipeline(&csDesc);
     }
 
diff --git a/src/dawn/tests/unittests/validation/GetBindGroupLayoutValidationTests.cpp b/src/dawn/tests/unittests/validation/GetBindGroupLayoutValidationTests.cpp
index bd6b8c0..b2a0de7 100644
--- a/src/dawn/tests/unittests/validation/GetBindGroupLayoutValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/GetBindGroupLayoutValidationTests.cpp
@@ -319,7 +319,6 @@
     wgpu::ComputePipelineDescriptor descriptor;
     descriptor.layout = nullptr;
     descriptor.compute.module = csModule;
-    descriptor.compute.entryPoint = "main";
 
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&descriptor);
 
@@ -1184,7 +1183,6 @@
 
     wgpu::ComputePipelineDescriptor pipelineDesc;
     pipelineDesc.layout = pl;
-    pipelineDesc.compute.entryPoint = "main";
     pipelineDesc.compute.module = utils::CreateShaderModule(device, R"(
         @compute @workgroup_size(1) fn main() {
         }
diff --git a/src/dawn/tests/unittests/validation/LabelTests.cpp b/src/dawn/tests/unittests/validation/LabelTests.cpp
index 1e2cf68..e7cc4ef 100644
--- a/src/dawn/tests/unittests/validation/LabelTests.cpp
+++ b/src/dawn/tests/unittests/validation/LabelTests.cpp
@@ -594,7 +594,6 @@
     wgpu::ComputePipelineDescriptor descriptor;
     descriptor.layout = pl;
     descriptor.compute.module = computeModule;
-    descriptor.compute.entryPoint = "main";
 
     // The label should be empty if one was not set.
     {
diff --git a/src/dawn/tests/unittests/validation/MinimumBufferSizeValidationTests.cpp b/src/dawn/tests/unittests/validation/MinimumBufferSizeValidationTests.cpp
index 869e30d..45ff0f3 100644
--- a/src/dawn/tests/unittests/validation/MinimumBufferSizeValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/MinimumBufferSizeValidationTests.cpp
@@ -190,7 +190,6 @@
             csDesc.layout = device.CreatePipelineLayout(&descriptor);
         }
         csDesc.compute.module = csModule;
-        csDesc.compute.entryPoint = "main";
 
         return device.CreateComputePipeline(&csDesc);
     }
diff --git a/src/dawn/tests/unittests/validation/MultipleDeviceTests.cpp b/src/dawn/tests/unittests/validation/MultipleDeviceTests.cpp
index 915323b..f679b87 100644
--- a/src/dawn/tests/unittests/validation/MultipleDeviceTests.cpp
+++ b/src/dawn/tests/unittests/validation/MultipleDeviceTests.cpp
@@ -64,7 +64,6 @@
 
         wgpu::ComputePipelineDescriptor pipelineDesc = {};
         pipelineDesc.compute.module = shaderModule;
-        pipelineDesc.compute.entryPoint = "main";
 
         StrictMock<MockCallback<WGPUCreateComputePipelineAsyncCallback>> creationCallback;
         EXPECT_CALL(creationCallback,
@@ -84,7 +83,6 @@
 
         wgpu::ComputePipelineDescriptor pipelineDesc = {};
         pipelineDesc.compute.module = shaderModule;
-        pipelineDesc.compute.entryPoint = "main";
 
         StrictMock<MockCallback<WGPUCreateComputePipelineAsyncCallback>> creationCallback;
         EXPECT_CALL(creationCallback,
diff --git a/src/dawn/tests/unittests/validation/ObjectCachingTests.cpp b/src/dawn/tests/unittests/validation/ObjectCachingTests.cpp
index f4acbe3..adf157e 100644
--- a/src/dawn/tests/unittests/validation/ObjectCachingTests.cpp
+++ b/src/dawn/tests/unittests/validation/ObjectCachingTests.cpp
@@ -172,7 +172,6 @@
     wgpu::PipelineLayout layout = utils::MakeBasicPipelineLayout(device, nullptr);
 
     wgpu::ComputePipelineDescriptor desc;
-    desc.compute.entryPoint = "main";
     desc.layout = layout;
 
     desc.compute.module = module;
@@ -200,7 +199,6 @@
     wgpu::PipelineLayout layout = utils::MakeBasicPipelineLayout(device, nullptr);
 
     wgpu::ComputePipelineDescriptor desc;
-    desc.compute.entryPoint = "main";
     desc.layout = layout;
     desc.compute.module = module;
 
@@ -243,7 +241,6 @@
     EXPECT_EQ(pl.Get(), samePl.Get());
 
     wgpu::ComputePipelineDescriptor desc;
-    desc.compute.entryPoint = "main";
     desc.compute.module = utils::CreateShaderModule(device, R"(
             var<workgroup> i : u32;
             @compute @workgroup_size(1) fn main() {
@@ -386,9 +383,7 @@
 
     utils::ComboRenderPipelineDescriptor desc;
     desc.vertex.module = module;
-    desc.vertex.entryPoint = "vertexMain";
     desc.cFragment.module = module;
-    desc.cFragment.entryPoint = "fragmentMain";
     desc.cTargets[0].writeMask = wgpu::ColorWriteMask::None;
 
     std::vector<wgpu::ConstantEntry> constants{{nullptr, "a", 0.5}};
diff --git a/src/dawn/tests/unittests/validation/OverridableConstantsValidationTests.cpp b/src/dawn/tests/unittests/validation/OverridableConstantsValidationTests.cpp
index 33f7eaa..78a0a17 100644
--- a/src/dawn/tests/unittests/validation/OverridableConstantsValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/OverridableConstantsValidationTests.cpp
@@ -138,7 +138,6 @@
     void TestCreatePipeline(const std::vector<wgpu::ConstantEntry>& constants) {
         wgpu::ComputePipelineDescriptor csDesc;
         csDesc.compute.module = computeModule;
-        csDesc.compute.entryPoint = "main";
         csDesc.compute.constants = constants.data();
         csDesc.compute.constantCount = constants.size();
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
diff --git a/src/dawn/tests/unittests/validation/PixelLocalStorageTests.cpp b/src/dawn/tests/unittests/validation/PixelLocalStorageTests.cpp
index 9200c02..7961287 100644
--- a/src/dawn/tests/unittests/validation/PixelLocalStorageTests.cpp
+++ b/src/dawn/tests/unittests/validation/PixelLocalStorageTests.cpp
@@ -349,13 +349,11 @@
         utils::ComboRenderPipelineDescriptor desc;
         desc.layout = MakePipelineLayout(spec);
         desc.cFragment.module = utils::CreateShaderModule(device, fsStream.str().c_str());
-        desc.cFragment.entryPoint = "fs";
         desc.vertex.module = utils::CreateShaderModule(device, R"(
             @vertex fn vs() -> @builtin(position) vec4f {
                 return vec4f();
             }
         )");
-        desc.vertex.entryPoint = "vs";
         desc.cTargets[0].format = kColorAttachmentFormat;
         return device.CreateRenderPipeline(&desc);
     }
@@ -389,9 +387,7 @@
         utils::ComboRenderPipelineDescriptor desc;
         desc.layout = layout;
         desc.cFragment.module = fsModule;
-        desc.cFragment.entryPoint = "fs";
         desc.vertex.module = vsModule;
-        desc.vertex.entryPoint = "vs";
         desc.cTargets[0].format = kColorAttachmentFormat;
         desc.cTargets[0].writeMask = wgpu::ColorWriteMask::None;
 
@@ -1118,9 +1114,7 @@
     utils::ComboRenderPipelineDescriptor pDesc;
     pDesc.layout = pl;
     pDesc.vertex.module = module;
-    pDesc.vertex.entryPoint = "vs";
     pDesc.cFragment.module = module;
-    pDesc.cFragment.entryPoint = "fs";
     pDesc.cFragment.targetCount = 0;
 
     // Success case: a render pipeline with just a storage attachment is valid.
diff --git a/src/dawn/tests/unittests/validation/QueueSubmitValidationTests.cpp b/src/dawn/tests/unittests/validation/QueueSubmitValidationTests.cpp
index a84d435..2d9c3cb 100644
--- a/src/dawn/tests/unittests/validation/QueueSubmitValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/QueueSubmitValidationTests.cpp
@@ -227,7 +227,6 @@
     descriptor.compute.module = utils::CreateShaderModule(device, R"(
             @compute @workgroup_size(1) fn main() {
             })");
-    descriptor.compute.entryPoint = "main";
     device.CreateComputePipelineAsync(&descriptor, callback, &callbackData);
 
     WaitForAllOperations(device);
@@ -248,7 +247,6 @@
     // BindGroup 2. This is to provide coverage of for loops in validation code.
     wgpu::ComputePipelineDescriptor cpDesc;
     cpDesc.layout = utils::MakePipelineLayout(device, {emptyBGL, testBGL});
-    cpDesc.compute.entryPoint = "main";
     cpDesc.compute.module =
         utils::CreateShaderModule(device, "@compute @workgroup_size(1) fn main() {}");
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&cpDesc);
@@ -316,7 +314,6 @@
 
     wgpu::ComputePipelineDescriptor cpDesc;
     cpDesc.layout = utils::MakePipelineLayout(device, {emptyBGL, emptyBGL, testBGL});
-    cpDesc.compute.entryPoint = "main";
     cpDesc.compute.module =
         utils::CreateShaderModule(device, "@compute @workgroup_size(1) fn main() {}");
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&cpDesc);
@@ -387,7 +384,6 @@
 
     wgpu::ComputePipelineDescriptor cpDesc;
     cpDesc.layout = utils::MakePipelineLayout(device, {testBGL});
-    cpDesc.compute.entryPoint = "main";
     cpDesc.compute.module =
         utils::CreateShaderModule(device, "@compute @workgroup_size(1) fn main() {}");
     wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&cpDesc);
diff --git a/src/dawn/tests/unittests/validation/RenderPipelineValidationTests.cpp b/src/dawn/tests/unittests/validation/RenderPipelineValidationTests.cpp
index da9c81a..c1dec20 100644
--- a/src/dawn/tests/unittests/validation/RenderPipelineValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/RenderPipelineValidationTests.cpp
@@ -1847,9 +1847,7 @@
     for (const TestCase& testCase : kTestCases) {
         utils::ComboRenderPipelineDescriptor descriptor;
         descriptor.vertex.module = vsModule;
-        descriptor.vertex.entryPoint = "main";
         descriptor.cFragment.module = CreateShader(testCase.formats);
-        descriptor.cFragment.entryPoint = "main";
         descriptor.cFragment.targetCount = testCase.formats.size();
         for (size_t i = 0; i < testCase.formats.size(); i++) {
             descriptor.cTargets[i].format = testCase.formats.at(i);
@@ -2631,9 +2629,7 @@
 
         utils::ComboRenderPipelineDescriptor desc;
         desc.vertex.module = vsModule;
-        desc.vertex.entryPoint = "main";
         desc.cFragment.module = utils::CreateShaderModule(device, fsStream.str().c_str());
-        desc.cFragment.entryPoint = "main";
         desc.cFragment.targetCount = 2;
         desc.cTargets[0].format = wgpu::TextureFormat::Undefined;
         desc.cTargets[1].format = wgpu::TextureFormat::RGBA8Unorm;
@@ -2686,9 +2682,7 @@
 
             utils::ComboRenderPipelineDescriptor desc;
             desc.vertex.module = vsModule;
-            desc.vertex.entryPoint = "main";
             desc.cFragment.module = utils::CreateShaderModule(device, fsStream.str().c_str());
-            desc.cFragment.entryPoint = "main";
             desc.cTargets[0].format = format;
 
             if (i == j) {
diff --git a/src/dawn/tests/unittests/validation/ResourceUsageTrackingTests.cpp b/src/dawn/tests/unittests/validation/ResourceUsageTrackingTests.cpp
index 915655c..c0119d2 100644
--- a/src/dawn/tests/unittests/validation/ResourceUsageTrackingTests.cpp
+++ b/src/dawn/tests/unittests/validation/ResourceUsageTrackingTests.cpp
@@ -86,7 +86,6 @@
         wgpu::ComputePipelineDescriptor pipelineDescriptor;
         pipelineDescriptor.layout = utils::MakePipelineLayout(device, std::move(bgls));
         pipelineDescriptor.compute.module = csModule;
-        pipelineDescriptor.compute.entryPoint = "main";
         return device.CreateComputePipeline(&pipelineDescriptor);
     }
 
diff --git a/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp b/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
index c8dc9bd..bf07372 100644
--- a/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
@@ -592,7 +592,6 @@
     static_assert(kMaxBindingsPerBindGroup == 1000);
 
     wgpu::ComputePipelineDescriptor desc;
-    desc.compute.entryPoint = "main";
 
     // kMaxBindingsPerBindGroup-1 is valid.
     desc.compute.module = utils::CreateShaderModule(device, R"(
diff --git a/src/dawn/tests/unittests/validation/StorageTextureValidationTests.cpp b/src/dawn/tests/unittests/validation/StorageTextureValidationTests.cpp
index fc3b9c3..0a9c34f 100644
--- a/src/dawn/tests/unittests/validation/StorageTextureValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/StorageTextureValidationTests.cpp
@@ -232,7 +232,6 @@
         wgpu::ComputePipelineDescriptor descriptor;
         descriptor.layout = nullptr;
         descriptor.compute.module = csModule;
-        descriptor.compute.entryPoint = "main";
 
         device.CreateComputePipeline(&descriptor);
     }
@@ -391,7 +390,6 @@
         // Set common fields of compute pipeline descriptor.
         wgpu::ComputePipelineDescriptor defaultComputePipelineDescriptor;
         defaultComputePipelineDescriptor.compute.module = csModule;
-        defaultComputePipelineDescriptor.compute.entryPoint = "main";
 
         for (utils::BindingLayoutEntryInitializationHelper bindingLayoutEntry :
              kSupportedBindingTypes) {
@@ -495,7 +493,6 @@
             // Set common fields of compute pipeline descriptor.
             wgpu::ComputePipelineDescriptor defaultComputePipelineDescriptor;
             defaultComputePipelineDescriptor.compute.module = csModule;
-            defaultComputePipelineDescriptor.compute.entryPoint = "main";
 
             // Set common fileds of bind group layout binding.
             utils::BindingLayoutEntryInitializationHelper defaultBindGroupLayoutEntry = {
@@ -551,7 +548,6 @@
             // Set common fields of compute pipeline descriptor.
             wgpu::ComputePipelineDescriptor defaultComputePipelineDescriptor;
             defaultComputePipelineDescriptor.compute.module = csModule;
-            defaultComputePipelineDescriptor.compute.entryPoint = "main";
 
             // Set common fields of bind group layout binding.
             utils::BindingLayoutEntryInitializationHelper defaultBindGroupLayoutEntry = {
@@ -940,7 +936,6 @@
             std::string computeShader = CreateComputeShaderWithStorageTexture(access, format);
             wgpu::ComputePipelineDescriptor computeDesc;
             computeDesc.compute.module = utils::CreateShaderModule(device, computeShader.c_str());
-            computeDesc.compute.entryPoint = "main";
 
             switch (access) {
                 case wgpu::StorageTextureAccess::ReadOnly:
@@ -979,7 +974,6 @@
             wgpu::ComputePipelineDescriptor computePipelineDescriptor;
             computePipelineDescriptor.compute.module =
                 utils::CreateShaderModule(device, computeShader.c_str());
-            computePipelineDescriptor.compute.entryPoint = "main";
             computePipelineDescriptor.layout =
                 utils::MakePipelineLayout(device, {{bindGroupLayout}});
             if (accessInShader == accessInBindGroupLayout ||
@@ -1133,7 +1127,6 @@
             pipelineDescriptor.layout = utils::MakePipelineLayout(
                 device, {{bindGroupLayouts[bindingType1], bindGroupLayouts[bindingType2]}});
             pipelineDescriptor.compute.module = csModule;
-            pipelineDescriptor.compute.entryPoint = "main";
             wgpu::ComputePipeline computePipeline =
                 device.CreateComputePipeline(&pipelineDescriptor);
 
diff --git a/src/dawn/tests/unittests/validation/WritableBufferBindingAliasingValidationTests.cpp b/src/dawn/tests/unittests/validation/WritableBufferBindingAliasingValidationTests.cpp
index 9ef0db6..281d531 100644
--- a/src/dawn/tests/unittests/validation/WritableBufferBindingAliasingValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/WritableBufferBindingAliasingValidationTests.cpp
@@ -144,7 +144,6 @@
         descriptor.bindGroupLayouts = layouts.data();
         csDesc.layout = device.CreatePipelineLayout(&descriptor);
         csDesc.compute.module = csModule;
-        csDesc.compute.entryPoint = "main";
 
         return device.CreateComputePipeline(&csDesc);
     }
diff --git a/src/dawn/tests/unittests/validation/WritableTextureBindingAliasingValidationTests.cpp b/src/dawn/tests/unittests/validation/WritableTextureBindingAliasingValidationTests.cpp
index 3fc27b5..32f592c 100644
--- a/src/dawn/tests/unittests/validation/WritableTextureBindingAliasingValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/WritableTextureBindingAliasingValidationTests.cpp
@@ -140,7 +140,6 @@
         descriptor.bindGroupLayouts = layouts.data();
         csDesc.layout = device.CreatePipelineLayout(&descriptor);
         csDesc.compute.module = csModule;
-        csDesc.compute.entryPoint = "main";
 
         return device.CreateComputePipeline(&csDesc);
     }
diff --git a/src/dawn/tests/unittests/wire/WireCreatePipelineAsyncTests.cpp b/src/dawn/tests/unittests/wire/WireCreatePipelineAsyncTests.cpp
index dec4d57..c0f488b 100644
--- a/src/dawn/tests/unittests/wire/WireCreatePipelineAsyncTests.cpp
+++ b/src/dawn/tests/unittests/wire/WireCreatePipelineAsyncTests.cpp
@@ -124,7 +124,6 @@
 
     WGPUComputePipelineDescriptor descriptor{};
     descriptor.compute.module = csModule;
-    descriptor.compute.entryPoint = "main";
 
     wgpuDeviceCreateComputePipelineAsync(device, &descriptor,
                                          ToMockCreateComputePipelineAsyncCallback, this);
@@ -153,7 +152,6 @@
 
     WGPUComputePipelineDescriptor descriptor{};
     descriptor.compute.module = csModule;
-    descriptor.compute.entryPoint = "main";
 
     wgpuDeviceCreateComputePipelineAsync(device, &descriptor,
                                          ToMockCreateComputePipelineAsyncCallback, this);
@@ -184,11 +182,9 @@
 
     WGPURenderPipelineDescriptor pipelineDescriptor{};
     pipelineDescriptor.vertex.module = vsModule;
-    pipelineDescriptor.vertex.entryPoint = "main";
 
     WGPUFragmentState fragment = {};
     fragment.module = vsModule;
-    fragment.entryPoint = "main";
     pipelineDescriptor.fragment = &fragment;
 
     wgpuDeviceCreateRenderPipelineAsync(device, &pipelineDescriptor,
@@ -217,11 +213,9 @@
 
     WGPURenderPipelineDescriptor pipelineDescriptor{};
     pipelineDescriptor.vertex.module = vsModule;
-    pipelineDescriptor.vertex.entryPoint = "main";
 
     WGPUFragmentState fragment = {};
     fragment.module = vsModule;
-    fragment.entryPoint = "main";
     pipelineDescriptor.fragment = &fragment;
 
     wgpuDeviceCreateRenderPipelineAsync(device, &pipelineDescriptor,
@@ -253,11 +247,9 @@
 
     WGPUFragmentState fragment = {};
     fragment.module = vsModule;
-    fragment.entryPoint = "main";
 
     WGPURenderPipelineDescriptor pipelineDescriptor{};
     pipelineDescriptor.vertex.module = vsModule;
-    pipelineDescriptor.vertex.entryPoint = "main";
     pipelineDescriptor.fragment = &fragment;
 
     wgpuDeviceCreateRenderPipelineAsync(device, &pipelineDescriptor,
@@ -286,7 +278,6 @@
 
     WGPUComputePipelineDescriptor descriptor{};
     descriptor.compute.module = csModule;
-    descriptor.compute.entryPoint = "main";
 
     wgpuDeviceCreateComputePipelineAsync(device, &descriptor,
                                          ToMockCreateComputePipelineAsyncCallback, this);
@@ -314,11 +305,9 @@
 
     WGPUFragmentState fragment = {};
     fragment.module = vsModule;
-    fragment.entryPoint = "main";
 
     WGPURenderPipelineDescriptor pipelineDescriptor{};
     pipelineDescriptor.vertex.module = vsModule;
-    pipelineDescriptor.vertex.entryPoint = "main";
     pipelineDescriptor.fragment = &fragment;
 
     FlushClient();
@@ -342,7 +331,6 @@
 
     WGPUComputePipelineDescriptor descriptor{};
     descriptor.compute.module = csModule;
-    descriptor.compute.entryPoint = "main";
 
     FlushClient();
 
@@ -364,11 +352,9 @@
 
     WGPURenderPipelineDescriptor pipelineDescriptor{};
     pipelineDescriptor.vertex.module = module;
-    pipelineDescriptor.vertex.entryPoint = "main";
 
     WGPUFragmentState fragment = {};
     fragment.module = module;
-    fragment.entryPoint = "main";
     pipelineDescriptor.fragment = &fragment;
 
     wgpuDeviceCreateRenderPipelineAsync(device, &pipelineDescriptor,
@@ -459,7 +445,6 @@
 
     WGPUComputePipelineDescriptor computeDesc = {};
     computeDesc.compute.module = sm;
-    computeDesc.compute.entryPoint = "main";
 
     WGPUComputePipeline pipeline = nullptr;
     wgpuDeviceCreateComputePipelineAsync(
diff --git a/src/dawn/tests/unittests/wire/WireExtensionTests.cpp b/src/dawn/tests/unittests/wire/WireExtensionTests.cpp
index b8e78e7..f0215f1 100644
--- a/src/dawn/tests/unittests/wire/WireExtensionTests.cpp
+++ b/src/dawn/tests/unittests/wire/WireExtensionTests.cpp
@@ -57,7 +57,6 @@
 
     WGPURenderPipelineDescriptor renderPipelineDesc = {};
     renderPipelineDesc.vertex.module = shaderModule;
-    renderPipelineDesc.vertex.entryPoint = "main";
     renderPipelineDesc.primitive.nextInChain = &clientExt.chain;
 
     wgpuDeviceCreateRenderPipeline(device, &renderPipelineDesc);
@@ -95,7 +94,6 @@
 
     WGPURenderPipelineDescriptor renderPipelineDesc = {};
     renderPipelineDesc.vertex.module = shaderModule;
-    renderPipelineDesc.vertex.entryPoint = "main";
     renderPipelineDesc.primitive.nextInChain = &clientExt1.chain;
 
     wgpuDeviceCreateRenderPipeline(device, &renderPipelineDesc);
@@ -156,7 +154,6 @@
 
     WGPURenderPipelineDescriptor renderPipelineDesc = {};
     renderPipelineDesc.vertex.module = shaderModule;
-    renderPipelineDesc.vertex.entryPoint = "main";
     renderPipelineDesc.primitive.nextInChain = &clientExt.chain;
 
     wgpuDeviceCreateRenderPipeline(device, &renderPipelineDesc);
@@ -184,7 +181,6 @@
 
     WGPURenderPipelineDescriptor renderPipelineDesc = {};
     renderPipelineDesc.vertex.module = shaderModule;
-    renderPipelineDesc.vertex.entryPoint = "main";
     renderPipelineDesc.primitive.nextInChain = &clientExt.chain;
 
     wgpuDeviceCreateRenderPipeline(device, &renderPipelineDesc);
@@ -218,7 +214,6 @@
 
     WGPURenderPipelineDescriptor renderPipelineDesc = {};
     renderPipelineDesc.vertex.module = shaderModule;
-    renderPipelineDesc.vertex.entryPoint = "main";
     renderPipelineDesc.primitive.nextInChain = &clientExt1.chain;
 
     wgpuDeviceCreateRenderPipeline(device, &renderPipelineDesc);
diff --git a/src/dawn/tests/unittests/wire/WireOptionalTests.cpp b/src/dawn/tests/unittests/wire/WireOptionalTests.cpp
index 18ab3d5..8a9e646 100644
--- a/src/dawn/tests/unittests/wire/WireOptionalTests.cpp
+++ b/src/dawn/tests/unittests/wire/WireOptionalTests.cpp
@@ -130,13 +130,11 @@
     WGPURenderPipelineDescriptor pipelineDescriptor = {};
 
     pipelineDescriptor.vertex.module = vsModule;
-    pipelineDescriptor.vertex.entryPoint = "main";
     pipelineDescriptor.vertex.bufferCount = 0;
     pipelineDescriptor.vertex.buffers = nullptr;
 
     WGPUFragmentState fragment = {};
     fragment.module = vsModule;
-    fragment.entryPoint = "main";
     fragment.targetCount = 1;
     fragment.targets = &colorTargetState;
     pipelineDescriptor.fragment = &fragment;
diff --git a/src/dawn/tests/white_box/D3D11BufferTests.cpp b/src/dawn/tests/white_box/D3D11BufferTests.cpp
index 597ff31..1ac1458 100644
--- a/src/dawn/tests/white_box/D3D11BufferTests.cpp
+++ b/src/dawn/tests/white_box/D3D11BufferTests.cpp
@@ -247,7 +247,6 @@
 
         wgpu::ComputePipelineDescriptor pipelineDesc = {};
         pipelineDesc.compute.module = module;
-        pipelineDesc.compute.entryPoint = "main";
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDesc);
 
         wgpu::BindGroup bindGroupA = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
@@ -293,7 +292,6 @@
 
         wgpu::ComputePipelineDescriptor pipelineDesc = {};
         pipelineDesc.compute.module = module;
-        pipelineDesc.compute.entryPoint = "main";
         wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&pipelineDesc);
 
         wgpu::BindGroup bindGroupA = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
diff --git a/src/dawn/tests/white_box/GPUTimestampCalibrationTests.cpp b/src/dawn/tests/white_box/GPUTimestampCalibrationTests.cpp
index e591801..fcf60c1 100644
--- a/src/dawn/tests/white_box/GPUTimestampCalibrationTests.cpp
+++ b/src/dawn/tests/white_box/GPUTimestampCalibrationTests.cpp
@@ -138,7 +138,6 @@
 
         wgpu::ComputePipelineDescriptor descriptor;
         descriptor.compute.module = module;
-        descriptor.compute.entryPoint = "main";
 
         return device.CreateComputePipeline(&descriptor);
     }
diff --git a/src/dawn/tests/white_box/InternalStorageBufferBindingTests.cpp b/src/dawn/tests/white_box/InternalStorageBufferBindingTests.cpp
index b5743ab..4cd37c9 100644
--- a/src/dawn/tests/white_box/InternalStorageBufferBindingTests.cpp
+++ b/src/dawn/tests/white_box/InternalStorageBufferBindingTests.cpp
@@ -86,7 +86,6 @@
         wgpu::ComputePipelineDescriptor pipelineDesc = {};
         pipelineDesc.layout = layout;
         pipelineDesc.compute.module = module;
-        pipelineDesc.compute.entryPoint = "main";
 
         return device.CreateComputePipeline(&pipelineDesc);
     }
diff --git a/src/dawn/tests/white_box/SharedTextureMemoryTests.cpp b/src/dawn/tests/white_box/SharedTextureMemoryTests.cpp
index 3293b2d..c35bc85 100644
--- a/src/dawn/tests/white_box/SharedTextureMemoryTests.cpp
+++ b/src/dawn/tests/white_box/SharedTextureMemoryTests.cpp
@@ -376,9 +376,7 @@
 
     utils::ComboRenderPipelineDescriptor pipelineDesc;
     pipelineDesc.vertex.module = module;
-    pipelineDesc.vertex.entryPoint = "vert_main";
     pipelineDesc.cFragment.module = module;
-    pipelineDesc.cFragment.entryPoint = "frag_main";
     pipelineDesc.cTargets[0].format = texture.GetFormat();
 
     wgpu::RenderPipeline pipeline = deviceObj.CreateRenderPipeline(&pipelineDesc);
@@ -424,7 +422,6 @@
     )";
     wgpu::ComputePipelineDescriptor pipelineDesc;
     pipelineDesc.compute.module = utils::CreateShaderModule(deviceObj, shader.c_str());
-    pipelineDesc.compute.entryPoint = "main";
 
     wgpu::ComputePipeline pipeline = deviceObj.CreateComputePipeline(&pipelineDesc);
 
@@ -472,9 +469,7 @@
 
     utils::ComboRenderPipelineDescriptor pipelineDesc;
     pipelineDesc.vertex.module = module;
-    pipelineDesc.vertex.entryPoint = "vert_main";
     pipelineDesc.cFragment.module = module;
-    pipelineDesc.cFragment.entryPoint = "frag_main";
     pipelineDesc.cTargets[0].format = colorTarget.GetFormat();
 
     wgpu::RenderPipeline pipeline = deviceObj.CreateRenderPipeline(&pipelineDesc);
diff --git a/src/dawn/utils/ComboRenderPipelineDescriptor.cpp b/src/dawn/utils/ComboRenderPipelineDescriptor.cpp
index 846c821..3f653d7 100644
--- a/src/dawn/utils/ComboRenderPipelineDescriptor.cpp
+++ b/src/dawn/utils/ComboRenderPipelineDescriptor.cpp
@@ -63,7 +63,6 @@
     {
         wgpu::VertexState* vertex = &descriptor->vertex;
         vertex->module = nullptr;
-        vertex->entryPoint = "main";
         vertex->bufferCount = 0;
 
         // Fill the default values for vertexBuffers and vertexAttributes in buffers.
@@ -127,7 +126,6 @@
     // Set the defaults for the fragment state
     {
         cFragment.module = nullptr;
-        cFragment.entryPoint = "main";
         cFragment.targetCount = 1;
         cFragment.targets = &cTargets[0];
         descriptor->fragment = &cFragment;
