mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-14 23:56:16 +00:00
Deprecate ShaderModuleDescriptor.code in favor of chained descriptor
This also adds the definition of the WGSL sub descriptor but forbids using it for now. Bug: dawn:22 Change-Id: I0514eec95bbcda28911547d6bda4d5257b62432b Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19865 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
21744d0fb8
commit
fee2783cb0
@@ -19,6 +19,7 @@
|
||||
|
||||
#include "tests/DawnTest.h"
|
||||
|
||||
#include "utils/ComboRenderPipelineDescriptor.h"
|
||||
#include "utils/WGPUHelpers.h"
|
||||
|
||||
class DeprecationTests : public DawnTest {
|
||||
@@ -307,6 +308,70 @@ TEST_P(DeprecationTests, BGDescBindingStateTracking) {
|
||||
EXPECT_DEPRECATION_WARNING(ASSERT_DEVICE_ERROR(device.CreateBindGroup(&bgDesc)));
|
||||
}
|
||||
|
||||
// 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<uint32_t> spirv =
|
||||
CompileGLSLToSpirv(utils::SingleShaderStage::Compute, kEmptyShader);
|
||||
|
||||
wgpu::ShaderModuleDescriptor descriptor = {
|
||||
.codeSize = static_cast<uint32_t>(spirv.size()),
|
||||
.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<uint32_t> spirv =
|
||||
CompileGLSLToSpirv(utils::SingleShaderStage::Compute, kEmptyShader);
|
||||
|
||||
wgpu::ShaderModuleSPIRVDescriptor spirvDesc;
|
||||
spirvDesc.codeSize = static_cast<uint32_t>(spirv.size());
|
||||
spirvDesc.code = spirv.data();
|
||||
|
||||
wgpu::ShaderModuleDescriptor descriptor = {
|
||||
.nextInChain = &spirvDesc,
|
||||
.codeSize = static_cast<uint32_t>(spirv.size()),
|
||||
.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<uint32_t> spirv =
|
||||
CompileGLSLToSpirv(utils::SingleShaderStage::Compute, kEmptyShader);
|
||||
|
||||
wgpu::ShaderModuleDescriptor descriptor = {
|
||||
.codeSize = static_cast<uint32_t>(spirv.size()),
|
||||
.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 = {
|
||||
.computeStage =
|
||||
{
|
||||
.module = module,
|
||||
.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));
|
||||
}
|
||||
|
||||
DAWN_INSTANTIATE_TEST(DeprecationTests,
|
||||
D3D12Backend(),
|
||||
MetalBackend(),
|
||||
|
||||
@@ -96,7 +96,6 @@ TEST_F(WireArgumentTests, ValueArrayArgument) {
|
||||
TEST_F(WireArgumentTests, CStringArgument) {
|
||||
// Create shader module
|
||||
WGPUShaderModuleDescriptor vertexDescriptor = {};
|
||||
vertexDescriptor.codeSize = 0;
|
||||
WGPUShaderModule vsModule = wgpuDeviceCreateShaderModule(device, &vertexDescriptor);
|
||||
WGPUShaderModule apiVsModule = api.GetNewShaderModule();
|
||||
EXPECT_CALL(api, DeviceCreateShaderModule(apiDevice, _)).WillOnce(Return(apiVsModule));
|
||||
|
||||
@@ -66,7 +66,6 @@ TEST_F(WireOptionalTests, OptionalObjectValue) {
|
||||
TEST_F(WireOptionalTests, OptionalStructPointer) {
|
||||
// Create shader module
|
||||
WGPUShaderModuleDescriptor vertexDescriptor = {};
|
||||
vertexDescriptor.codeSize = 0;
|
||||
WGPUShaderModule vsModule = wgpuDeviceCreateShaderModule(device, &vertexDescriptor);
|
||||
WGPUShaderModule apiVsModule = api.GetNewShaderModule();
|
||||
EXPECT_CALL(api, DeviceCreateShaderModule(apiDevice, _)).WillOnce(Return(apiVsModule));
|
||||
|
||||
Reference in New Issue
Block a user