From 2eca22f6d75388f4e8acd51c553a3ff382039644 Mon Sep 17 00:00:00 2001 From: Corentin Wallez Date: Wed, 13 May 2020 17:23:35 +0000 Subject: [PATCH] Remove ShaderModule::code/codeSize It was deprecated in favor of chaining a wgpu::ShaderModuleSPIRVDescriptor. Bug: dawn:22 Change-Id: I210cd7c21c33c6ca8dd286ea64389b774a4355e5 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/21683 Commit-Queue: Corentin Wallez Reviewed-by: Stephen White Reviewed-by: Austin Eng --- dawn.json | 4 +- src/dawn_native/ShaderModule.cpp | 26 ++--------- src/tests/end2end/DeprecatedAPITests.cpp | 58 ------------------------ 3 files changed, 6 insertions(+), 82 deletions(-) diff --git a/dawn.json b/dawn.json index 6a0b362d8f..d3d7b90d51 100644 --- a/dawn.json +++ b/dawn.json @@ -1269,9 +1269,7 @@ "category": "structure", "extensible": true, "members": [ - {"name": "label", "type": "char", "annotation": "const*", "length": "strlen", "optional": true}, - {"name": "code size", "type": "uint32_t", "default": 0}, - {"name": "code", "type": "uint32_t", "annotation": "const*", "length": "code size", "optional": true} + {"name": "label", "type": "char", "annotation": "const*", "length": "strlen", "optional": true} ] }, "shader module SPIRV descriptor": { diff --git a/src/dawn_native/ShaderModule.cpp b/src/dawn_native/ShaderModule.cpp index de3a692c8c..68da595728 100644 --- a/src/dawn_native/ShaderModule.cpp +++ b/src/dawn_native/ShaderModule.cpp @@ -318,17 +318,6 @@ namespace dawn_native { MaybeError ValidateShaderModuleDescriptor(DeviceBase* device, const ShaderModuleDescriptor* descriptor) { - if (descriptor->codeSize != 0) { - if (descriptor->nextInChain != nullptr) { - return DAWN_VALIDATION_ERROR("Cannot set both code/codeSize and nextInChain"); - } - - device->EmitDeprecationWarning( - "ShaderModuleDescriptor::code/codeSize is deprecated, chain " - "ShaderModuleSPIRVDescriptor instead."); - return ValidateSpirv(device, descriptor->code, descriptor->codeSize); - } - const ChainedStruct* chainedDescriptor = descriptor->nextInChain; if (chainedDescriptor == nullptr) { return DAWN_VALIDATION_ERROR("Shader module descriptor missing chained descriptor"); @@ -363,17 +352,12 @@ namespace dawn_native { ShaderModuleBase::ShaderModuleBase(DeviceBase* device, const ShaderModuleDescriptor* descriptor) : CachedObject(device) { - // Extract the correct SPIRV from the descriptor. - if (descriptor->codeSize != 0) { - mSpirv.assign(descriptor->code, descriptor->code + descriptor->codeSize); - } else { - ASSERT(descriptor->nextInChain != nullptr); - ASSERT(descriptor->nextInChain->sType == wgpu::SType::ShaderModuleSPIRVDescriptor); + ASSERT(descriptor->nextInChain != nullptr); + ASSERT(descriptor->nextInChain->sType == wgpu::SType::ShaderModuleSPIRVDescriptor); - const ShaderModuleSPIRVDescriptor* spirvDesc = - static_cast(descriptor->nextInChain); - mSpirv.assign(spirvDesc->code, spirvDesc->code + spirvDesc->codeSize); - } + const ShaderModuleSPIRVDescriptor* spirvDesc = + static_cast(descriptor->nextInChain); + mSpirv.assign(spirvDesc->code, spirvDesc->code + spirvDesc->codeSize); mFragmentOutputFormatBaseTypes.fill(Format::Other); if (GetDevice()->IsToggleEnabled(Toggle::UseSpvcParser)) { diff --git a/src/tests/end2end/DeprecatedAPITests.cpp b/src/tests/end2end/DeprecatedAPITests.cpp index 910965c6ae..a3ded8d770 100644 --- a/src/tests/end2end/DeprecatedAPITests.cpp +++ b/src/tests/end2end/DeprecatedAPITests.cpp @@ -56,64 +56,6 @@ class DeprecationTests : public DawnTest { } \ } while (0) -// Tests for ShaderModuleDescriptor.code/codeSize -> ShaderModuleSPIRVDescriptor - -static const char kEmptyShader[] = R"(#version 450 -void main() { -})"; - -// That creating a ShaderModule without the chained descriptor gives a warning. -TEST_P(DeprecationTests, ShaderModuleNoSubDescriptorIsDeprecated) { - std::vector spirv = - CompileGLSLToSpirv(utils::SingleShaderStage::Compute, kEmptyShader); - - wgpu::ShaderModuleDescriptor descriptor; - descriptor.codeSize = static_cast(spirv.size()); - descriptor.code = spirv.data(); - EXPECT_DEPRECATION_WARNING(device.CreateShaderModule(&descriptor)); -} - -// That creating a ShaderModule with both inline code and the chained descriptor is an error. -TEST_P(DeprecationTests, ShaderModuleBothInlinedAndChainedIsInvalid) { - std::vector spirv = - CompileGLSLToSpirv(utils::SingleShaderStage::Compute, kEmptyShader); - - wgpu::ShaderModuleSPIRVDescriptor spirvDesc; - spirvDesc.codeSize = static_cast(spirv.size()); - spirvDesc.code = spirv.data(); - - wgpu::ShaderModuleDescriptor descriptor; - descriptor.nextInChain = &spirvDesc; - descriptor.codeSize = static_cast(spirv.size()); - descriptor.code = spirv.data(); - ASSERT_DEVICE_ERROR(device.CreateShaderModule(&descriptor)); -} - -// That creating a ShaderModule with both inline code still does correct state tracking -TEST_P(DeprecationTests, ShaderModuleInlinedCodeStateTracking) { - std::vector spirv = - CompileGLSLToSpirv(utils::SingleShaderStage::Compute, kEmptyShader); - - wgpu::ShaderModuleDescriptor descriptor; - descriptor.codeSize = static_cast(spirv.size()); - descriptor.code = spirv.data(); - wgpu::ShaderModule module; - EXPECT_DEPRECATION_WARNING(module = device.CreateShaderModule(&descriptor)); - - // Creating a compute pipeline works, because it is a compute module. - wgpu::ComputePipelineDescriptor computePipelineDesc; - computePipelineDesc.layout = nullptr; - computePipelineDesc.computeStage.module = module; - computePipelineDesc.computeStage.entryPoint = "main"; - device.CreateComputePipeline(&computePipelineDesc); - - utils::ComboRenderPipelineDescriptor renderPipelineDesc(device); - renderPipelineDesc.vertexStage.module = - utils::CreateShaderModule(device, utils::SingleShaderStage::Vertex, kEmptyShader); - renderPipelineDesc.cFragmentStage.module = module; - ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&renderPipelineDesc)); -} - // Tests for BufferCopyView.rowPitch/imageHeight -> bytesPerRow/rowsPerImage class BufferCopyViewDeprecationTests : public DeprecationTests {