mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-18 09:25:25 +00:00
Removed deprecated CreateRenderPipeline path
Renames all the RenderPipeline*2 stuff to simple RenderPipeline* but keeps *2 definitionas around as typedefs and wrappers so that users can migrate away from it. Bug: dawn:22 Change-Id: If301d81a829bba0646c3a61068f2279932b191e0 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51764 Commit-Queue: Brandon Jones <bajones@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
4589de61a0
commit
41c87d973a
@@ -1101,13 +1101,13 @@ class SetBindGroupValidationTest : public ValidationTest {
|
||||
[[stage(fragment)]] fn main() {
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 pipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor pipelineDescriptor;
|
||||
pipelineDescriptor.vertex.module = vsModule;
|
||||
pipelineDescriptor.cFragment.module = fsModule;
|
||||
wgpu::PipelineLayout pipelineLayout =
|
||||
utils::MakeBasicPipelineLayout(device, &mBindGroupLayout);
|
||||
pipelineDescriptor.layout = pipelineLayout;
|
||||
return device.CreateRenderPipeline2(&pipelineDescriptor);
|
||||
return device.CreateRenderPipeline(&pipelineDescriptor);
|
||||
}
|
||||
|
||||
wgpu::ComputePipeline CreateComputePipeline() {
|
||||
@@ -1561,11 +1561,11 @@ class SetBindGroupPersistenceValidationTest : public ValidationTest {
|
||||
|
||||
wgpu::ShaderModule fsModule = utils::CreateShaderModule(device, ss.str().c_str());
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 pipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor pipelineDescriptor;
|
||||
pipelineDescriptor.vertex.module = mVsModule;
|
||||
pipelineDescriptor.cFragment.module = fsModule;
|
||||
pipelineDescriptor.layout = pipelineLayout;
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&pipelineDescriptor);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&pipelineDescriptor);
|
||||
|
||||
return std::make_tuple(bindGroupLayouts, pipeline);
|
||||
}
|
||||
@@ -1700,12 +1700,12 @@ class BindGroupLayoutCompatibilityTest : public ValidationTest {
|
||||
wgpu::PipelineLayoutDescriptor descriptor;
|
||||
descriptor.bindGroupLayoutCount = bindGroupLayout.size();
|
||||
descriptor.bindGroupLayouts = bindGroupLayout.data();
|
||||
utils::ComboRenderPipelineDescriptor2 pipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor pipelineDescriptor;
|
||||
pipelineDescriptor.vertex.module = vsModule;
|
||||
pipelineDescriptor.cFragment.module = fsModule;
|
||||
wgpu::PipelineLayout pipelineLayout = device.CreatePipelineLayout(&descriptor);
|
||||
pipelineDescriptor.layout = pipelineLayout;
|
||||
return device.CreateRenderPipeline2(&pipelineDescriptor);
|
||||
return device.CreateRenderPipeline(&pipelineDescriptor);
|
||||
}
|
||||
|
||||
wgpu::RenderPipeline CreateRenderPipeline(std::vector<wgpu::BindGroupLayout> bindGroupLayouts) {
|
||||
@@ -2070,13 +2070,13 @@ class ComparisonSamplerBindingTest : public ValidationTest {
|
||||
|
||||
wgpu::ShaderModule fsModule = utils::CreateShaderModule(device, fragmentSource);
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 pipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor pipelineDescriptor;
|
||||
pipelineDescriptor.vertex.module = vsModule;
|
||||
pipelineDescriptor.cFragment.module = fsModule;
|
||||
wgpu::PipelineLayout pipelineLayout =
|
||||
utils::MakeBasicPipelineLayout(device, bindGroupLayout);
|
||||
pipelineDescriptor.layout = pipelineLayout;
|
||||
return device.CreateRenderPipeline2(&pipelineDescriptor);
|
||||
return device.CreateRenderPipeline(&pipelineDescriptor);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -36,12 +36,12 @@ class DrawIndirectValidationTest : public ValidationTest {
|
||||
// Set up render pipeline
|
||||
wgpu::PipelineLayout pipelineLayout = utils::MakeBasicPipelineLayout(device, nullptr);
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = pipelineLayout;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
pipeline = device.CreateRenderPipeline2(&descriptor);
|
||||
pipeline = device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
void ValidateExpectation(wgpu::CommandEncoder encoder, utils::Expectation expectation) {
|
||||
|
||||
@@ -27,12 +27,12 @@ class GetBindGroupLayoutTests : public ValidationTest {
|
||||
|
||||
wgpu::ShaderModule fsModule = utils::CreateShaderModule(device, shader);
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
return device.CreateRenderPipeline2(&descriptor);
|
||||
return device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -73,12 +73,12 @@ TEST_F(GetBindGroupLayoutTests, SameObject) {
|
||||
var pos_s : mat4x4<f32> = storage3.pos;
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&descriptor);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
// The same value is returned for the same index.
|
||||
EXPECT_EQ(pipeline.GetBindGroupLayout(0).Get(), pipeline.GetBindGroupLayout(0).Get());
|
||||
@@ -491,12 +491,12 @@ TEST_F(GetBindGroupLayoutTests, DuplicateBinding) {
|
||||
var pos : vec4<f32> = uniforms.pos;
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
// Test that minBufferSize is set on the BGL and that the max of the min buffer sizes is used.
|
||||
@@ -563,14 +563,14 @@ TEST_F(GetBindGroupLayoutTests, MinBufferSize) {
|
||||
binding.buffer.minBindingSize = 64;
|
||||
wgpu::BindGroupLayout bgl64 = device.CreateBindGroupLayout(&desc);
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
|
||||
// Check with both stages using 4 bytes.
|
||||
{
|
||||
descriptor.vertex.module = vsModule4;
|
||||
descriptor.cFragment.module = fsModule4;
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&descriptor);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor);
|
||||
EXPECT_EQ(pipeline.GetBindGroupLayout(0).Get(), bgl4.Get());
|
||||
}
|
||||
|
||||
@@ -578,7 +578,7 @@ TEST_F(GetBindGroupLayoutTests, MinBufferSize) {
|
||||
{
|
||||
descriptor.vertex.module = vsModule64;
|
||||
descriptor.cFragment.module = fsModule4;
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&descriptor);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor);
|
||||
EXPECT_EQ(pipeline.GetBindGroupLayout(0).Get(), bgl64.Get());
|
||||
}
|
||||
|
||||
@@ -586,7 +586,7 @@ TEST_F(GetBindGroupLayoutTests, MinBufferSize) {
|
||||
{
|
||||
descriptor.vertex.module = vsModule4;
|
||||
descriptor.cFragment.module = fsModule64;
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&descriptor);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor);
|
||||
EXPECT_EQ(pipeline.GetBindGroupLayout(0).Get(), bgl64.Get());
|
||||
}
|
||||
}
|
||||
@@ -629,14 +629,14 @@ TEST_F(GetBindGroupLayoutTests, StageAggregation) {
|
||||
desc.entryCount = 1;
|
||||
desc.entries = &binding;
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
|
||||
// Check with only the vertex shader using the sampler
|
||||
{
|
||||
descriptor.vertex.module = vsModuleSampler;
|
||||
descriptor.cFragment.module = fsModuleNoSampler;
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&descriptor);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
binding.visibility = wgpu::ShaderStage::Vertex;
|
||||
EXPECT_EQ(pipeline.GetBindGroupLayout(0).Get(), device.CreateBindGroupLayout(&desc).Get());
|
||||
@@ -646,7 +646,7 @@ TEST_F(GetBindGroupLayoutTests, StageAggregation) {
|
||||
{
|
||||
descriptor.vertex.module = vsModuleNoSampler;
|
||||
descriptor.cFragment.module = fsModuleSampler;
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&descriptor);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
binding.visibility = wgpu::ShaderStage::Fragment;
|
||||
EXPECT_EQ(pipeline.GetBindGroupLayout(0).Get(), device.CreateBindGroupLayout(&desc).Get());
|
||||
@@ -656,7 +656,7 @@ TEST_F(GetBindGroupLayoutTests, StageAggregation) {
|
||||
{
|
||||
descriptor.vertex.module = vsModuleSampler;
|
||||
descriptor.cFragment.module = fsModuleSampler;
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&descriptor);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
binding.visibility = wgpu::ShaderStage::Fragment | wgpu::ShaderStage::Vertex;
|
||||
EXPECT_EQ(pipeline.GetBindGroupLayout(0).Get(), device.CreateBindGroupLayout(&desc).Get());
|
||||
@@ -686,12 +686,12 @@ TEST_F(GetBindGroupLayoutTests, ConflictingBindingType) {
|
||||
var pos : vec4<f32> = ssbo.pos;
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Test it is invalid to have conflicting binding texture multisampling in the shaders.
|
||||
@@ -711,12 +711,12 @@ TEST_F(GetBindGroupLayoutTests, ConflictingBindingTextureMultisampling) {
|
||||
textureDimensions(myTexture);
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Test it is invalid to have conflicting binding texture dimension in the shaders.
|
||||
@@ -736,12 +736,12 @@ TEST_F(GetBindGroupLayoutTests, ConflictingBindingViewDimension) {
|
||||
textureDimensions(myTexture);
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Test it is invalid to have conflicting binding texture component type in the shaders.
|
||||
@@ -761,12 +761,12 @@ TEST_F(GetBindGroupLayoutTests, ConflictingBindingTextureComponentType) {
|
||||
textureDimensions(myTexture);
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Test it is an error to query an out of range bind group layout.
|
||||
@@ -853,12 +853,12 @@ TEST_F(GetBindGroupLayoutTests, Reflection) {
|
||||
[[stage(fragment)]] fn main() {
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 pipelineDesc;
|
||||
utils::ComboRenderPipelineDescriptor pipelineDesc;
|
||||
pipelineDesc.layout = pipelineLayout;
|
||||
pipelineDesc.vertex.module = vsModule;
|
||||
pipelineDesc.cFragment.module = fsModule;
|
||||
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&pipelineDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&pipelineDesc);
|
||||
|
||||
EXPECT_EQ(pipeline.GetBindGroupLayout(0).Get(), bindGroupLayout.Get());
|
||||
|
||||
|
||||
@@ -32,14 +32,14 @@ class IndexBufferValidationTest : public ValidationTest {
|
||||
return vec4<f32>(0.0, 1.0, 0.0, 1.0);
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.primitive.topology = primitiveTopology;
|
||||
descriptor.primitive.stripIndexFormat = format;
|
||||
descriptor.cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
|
||||
|
||||
return device.CreateRenderPipeline2(&descriptor);
|
||||
return device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@ class MinBufferSizeTestsBase : public ValidationTest {
|
||||
|
||||
wgpu::ShaderModule fsModule = utils::CreateShaderModule(device, fragShader.c_str());
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 pipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor pipelineDescriptor;
|
||||
pipelineDescriptor.vertex.module = vsModule;
|
||||
pipelineDescriptor.cFragment.module = fsModule;
|
||||
pipelineDescriptor.layout = nullptr;
|
||||
@@ -203,7 +203,7 @@ class MinBufferSizeTestsBase : public ValidationTest {
|
||||
pipelineDescriptor.layout = device.CreatePipelineLayout(&descriptor);
|
||||
}
|
||||
|
||||
return device.CreateRenderPipeline2(&pipelineDescriptor);
|
||||
return device.CreateRenderPipeline(&pipelineDescriptor);
|
||||
}
|
||||
|
||||
// Creates render pipeline with default layout
|
||||
|
||||
@@ -184,7 +184,7 @@ namespace {
|
||||
return vec4<f32>(0.0, 1.0, 0.0, 1.0);
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
device.CreateRenderPipelineAsync(&descriptor, callback, &callbackData);
|
||||
|
||||
@@ -66,9 +66,9 @@ namespace {
|
||||
|
||||
pipelineLayout = device.CreatePipelineLayout(&pipelineLayoutDesc);
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
InitializeRenderPipelineDescriptor(&descriptor);
|
||||
pipeline = device.CreateRenderPipeline2(&descriptor);
|
||||
pipeline = device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
float data[8];
|
||||
wgpu::Buffer buffer = utils::CreateBufferFromData(device, data, 8 * sizeof(float),
|
||||
@@ -98,7 +98,7 @@ namespace {
|
||||
{1, vertexStorageBuffer, 0, sizeof(kVertices)}});
|
||||
}
|
||||
|
||||
void InitializeRenderPipelineDescriptor(utils::ComboRenderPipelineDescriptor2* descriptor) {
|
||||
void InitializeRenderPipelineDescriptor(utils::ComboRenderPipelineDescriptor* descriptor) {
|
||||
descriptor->layout = pipelineLayout;
|
||||
descriptor->vertex.module = vsModule;
|
||||
descriptor->cFragment.module = fsModule;
|
||||
@@ -729,7 +729,7 @@ TEST_F(RenderBundleValidationTest, PipelineColorFormatMismatch) {
|
||||
renderBundleDesc.cColorFormats[1] = wgpu::TextureFormat::RG16Float;
|
||||
renderBundleDesc.cColorFormats[2] = wgpu::TextureFormat::R16Sint;
|
||||
|
||||
auto SetupRenderPipelineDescForTest = [this](utils::ComboRenderPipelineDescriptor2* desc) {
|
||||
auto SetupRenderPipelineDescForTest = [this](utils::ComboRenderPipelineDescriptor* desc) {
|
||||
InitializeRenderPipelineDescriptor(desc);
|
||||
desc->cFragment.targetCount = 3;
|
||||
desc->cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
|
||||
@@ -739,38 +739,38 @@ TEST_F(RenderBundleValidationTest, PipelineColorFormatMismatch) {
|
||||
|
||||
// Test the success case.
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 desc;
|
||||
utils::ComboRenderPipelineDescriptor desc;
|
||||
SetupRenderPipelineDescForTest(&desc);
|
||||
|
||||
wgpu::RenderBundleEncoder renderBundleEncoder =
|
||||
device.CreateRenderBundleEncoder(&renderBundleDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&desc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&desc);
|
||||
renderBundleEncoder.SetPipeline(pipeline);
|
||||
renderBundleEncoder.Finish();
|
||||
}
|
||||
|
||||
// Test the failure case for mismatched format types.
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 desc;
|
||||
utils::ComboRenderPipelineDescriptor desc;
|
||||
SetupRenderPipelineDescForTest(&desc);
|
||||
desc.cTargets[1].format = wgpu::TextureFormat::RGBA8Unorm;
|
||||
|
||||
wgpu::RenderBundleEncoder renderBundleEncoder =
|
||||
device.CreateRenderBundleEncoder(&renderBundleDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&desc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&desc);
|
||||
renderBundleEncoder.SetPipeline(pipeline);
|
||||
ASSERT_DEVICE_ERROR(renderBundleEncoder.Finish());
|
||||
}
|
||||
|
||||
// Test the failure case for missing format
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 desc;
|
||||
utils::ComboRenderPipelineDescriptor desc;
|
||||
SetupRenderPipelineDescForTest(&desc);
|
||||
desc.cFragment.targetCount = 2;
|
||||
|
||||
wgpu::RenderBundleEncoder renderBundleEncoder =
|
||||
device.CreateRenderBundleEncoder(&renderBundleDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&desc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&desc);
|
||||
renderBundleEncoder.SetPipeline(pipeline);
|
||||
ASSERT_DEVICE_ERROR(renderBundleEncoder.Finish());
|
||||
}
|
||||
@@ -783,7 +783,7 @@ TEST_F(RenderBundleValidationTest, PipelineDepthStencilFormatMismatch) {
|
||||
renderBundleDesc.cColorFormats[0] = wgpu::TextureFormat::RGBA8Unorm;
|
||||
renderBundleDesc.depthStencilFormat = wgpu::TextureFormat::Depth24PlusStencil8;
|
||||
|
||||
auto SetupRenderPipelineDescForTest = [this](utils::ComboRenderPipelineDescriptor2* desc) {
|
||||
auto SetupRenderPipelineDescForTest = [this](utils::ComboRenderPipelineDescriptor* desc) {
|
||||
InitializeRenderPipelineDescriptor(desc);
|
||||
desc->cFragment.targetCount = 1;
|
||||
desc->cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
|
||||
@@ -791,39 +791,39 @@ TEST_F(RenderBundleValidationTest, PipelineDepthStencilFormatMismatch) {
|
||||
|
||||
// Test the success case.
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 desc;
|
||||
utils::ComboRenderPipelineDescriptor desc;
|
||||
SetupRenderPipelineDescForTest(&desc);
|
||||
desc.EnableDepthStencil(wgpu::TextureFormat::Depth24PlusStencil8);
|
||||
|
||||
wgpu::RenderBundleEncoder renderBundleEncoder =
|
||||
device.CreateRenderBundleEncoder(&renderBundleDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&desc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&desc);
|
||||
renderBundleEncoder.SetPipeline(pipeline);
|
||||
renderBundleEncoder.Finish();
|
||||
}
|
||||
|
||||
// Test the failure case for mismatched format.
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 desc;
|
||||
utils::ComboRenderPipelineDescriptor desc;
|
||||
SetupRenderPipelineDescForTest(&desc);
|
||||
desc.EnableDepthStencil(wgpu::TextureFormat::Depth24Plus);
|
||||
|
||||
wgpu::RenderBundleEncoder renderBundleEncoder =
|
||||
device.CreateRenderBundleEncoder(&renderBundleDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&desc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&desc);
|
||||
renderBundleEncoder.SetPipeline(pipeline);
|
||||
ASSERT_DEVICE_ERROR(renderBundleEncoder.Finish());
|
||||
}
|
||||
|
||||
// Test the failure case for missing format.
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 desc;
|
||||
utils::ComboRenderPipelineDescriptor desc;
|
||||
SetupRenderPipelineDescForTest(&desc);
|
||||
desc.depthStencil = nullptr;
|
||||
|
||||
wgpu::RenderBundleEncoder renderBundleEncoder =
|
||||
device.CreateRenderBundleEncoder(&renderBundleDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&desc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&desc);
|
||||
renderBundleEncoder.SetPipeline(pipeline);
|
||||
ASSERT_DEVICE_ERROR(renderBundleEncoder.Finish());
|
||||
}
|
||||
@@ -836,7 +836,7 @@ TEST_F(RenderBundleValidationTest, PipelineSampleCountMismatch) {
|
||||
renderBundleDesc.cColorFormats[0] = wgpu::TextureFormat::RGBA8Unorm;
|
||||
renderBundleDesc.sampleCount = 4;
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 renderPipelineDesc;
|
||||
utils::ComboRenderPipelineDescriptor renderPipelineDesc;
|
||||
InitializeRenderPipelineDescriptor(&renderPipelineDesc);
|
||||
renderPipelineDesc.cFragment.targetCount = 1;
|
||||
renderPipelineDesc.cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
|
||||
@@ -846,7 +846,7 @@ TEST_F(RenderBundleValidationTest, PipelineSampleCountMismatch) {
|
||||
{
|
||||
wgpu::RenderBundleEncoder renderBundleEncoder =
|
||||
device.CreateRenderBundleEncoder(&renderBundleDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&renderPipelineDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&renderPipelineDesc);
|
||||
renderBundleEncoder.SetPipeline(pipeline);
|
||||
renderBundleEncoder.Finish();
|
||||
}
|
||||
@@ -857,7 +857,7 @@ TEST_F(RenderBundleValidationTest, PipelineSampleCountMismatch) {
|
||||
|
||||
wgpu::RenderBundleEncoder renderBundleEncoder =
|
||||
device.CreateRenderBundleEncoder(&renderBundleDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&renderPipelineDesc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&renderPipelineDesc);
|
||||
renderBundleEncoder.SetPipeline(pipeline);
|
||||
ASSERT_DEVICE_ERROR(renderBundleEncoder.Finish());
|
||||
}
|
||||
|
||||
@@ -45,36 +45,11 @@ class RenderPipelineValidationTest : public ValidationTest {
|
||||
TEST_F(RenderPipelineValidationTest, CreationSuccess) {
|
||||
{
|
||||
// New format
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
}
|
||||
{
|
||||
// Deprecated format
|
||||
utils::ComboRenderPipelineDescriptor descriptor(device);
|
||||
descriptor.vertexStage.module = vsModule;
|
||||
descriptor.cFragmentStage.module = fsModule;
|
||||
|
||||
EXPECT_DEPRECATION_WARNING(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
{
|
||||
// Vertex input should be optional
|
||||
utils::ComboRenderPipelineDescriptor descriptor(device);
|
||||
descriptor.vertexStage.module = vsModule;
|
||||
descriptor.cFragmentStage.module = fsModule;
|
||||
descriptor.vertexState = nullptr;
|
||||
|
||||
EXPECT_DEPRECATION_WARNING(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
{
|
||||
// Rasterization state should be optional
|
||||
utils::ComboRenderPipelineDescriptor descriptor(device);
|
||||
descriptor.vertexStage.module = vsModule;
|
||||
descriptor.cFragmentStage.module = fsModule;
|
||||
descriptor.rasterizationState = nullptr;
|
||||
EXPECT_DEPRECATION_WARNING(device.CreateRenderPipeline(&descriptor));
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,49 +57,49 @@ TEST_F(RenderPipelineValidationTest, CreationSuccess) {
|
||||
TEST_F(RenderPipelineValidationTest, DepthBiasParameterNotBeNaN) {
|
||||
// Control case, depth bias parameters in ComboRenderPipeline default to 0 which is finite
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.EnableDepthStencil();
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
// Infinite depth bias clamp is valid
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
wgpu::DepthStencilState* depthStencil = descriptor.EnableDepthStencil();
|
||||
depthStencil->depthBiasClamp = INFINITY;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
// NAN depth bias clamp is invalid
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
wgpu::DepthStencilState* depthStencil = descriptor.EnableDepthStencil();
|
||||
depthStencil->depthBiasClamp = NAN;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Infinite depth bias slope is valid
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
wgpu::DepthStencilState* depthStencil = descriptor.EnableDepthStencil();
|
||||
depthStencil->depthBiasSlopeScale = INFINITY;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
// NAN depth bias slope is invalid
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
wgpu::DepthStencilState* depthStencil = descriptor.EnableDepthStencil();
|
||||
depthStencil->depthBiasSlopeScale = NAN;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,21 +107,21 @@ TEST_F(RenderPipelineValidationTest, DepthBiasParameterNotBeNaN) {
|
||||
TEST_F(RenderPipelineValidationTest, ColorTargetStateRequired) {
|
||||
{
|
||||
// This one succeeds because attachment 0 is the color attachment
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.cFragment.targetCount = 1;
|
||||
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
{ // Fail because lack of color target states (and depth/stencil state)
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.cFragment.targetCount = 0;
|
||||
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,22 +129,22 @@ TEST_F(RenderPipelineValidationTest, ColorTargetStateRequired) {
|
||||
TEST_F(RenderPipelineValidationTest, NonRenderableFormat) {
|
||||
{
|
||||
// Succeeds because RGBA8Unorm is renderable
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
|
||||
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
{
|
||||
// Fails because RG11B10Ufloat is non-renderable
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.cTargets[0].format = wgpu::TextureFormat::RG11B10Ufloat;
|
||||
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,7 +158,7 @@ TEST_F(RenderPipelineValidationTest, FragmentOutputFormatCompatibility) {
|
||||
|
||||
for (size_t i = 0; i < kNumTextureFormatBaseType; ++i) {
|
||||
for (size_t j = 0; j < kNumTextureFormatBaseType; ++j) {
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cTargets[0].format = kColorFormats[j];
|
||||
|
||||
@@ -198,9 +173,9 @@ TEST_F(RenderPipelineValidationTest, FragmentOutputFormatCompatibility) {
|
||||
descriptor.cFragment.module = utils::CreateShaderModule(device, stream.str().c_str());
|
||||
|
||||
if (i == j) {
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
} else {
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -209,21 +184,21 @@ TEST_F(RenderPipelineValidationTest, FragmentOutputFormatCompatibility) {
|
||||
/// Tests that the sample count of the render pipeline must be valid.
|
||||
TEST_F(RenderPipelineValidationTest, SampleCount) {
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.multisample.count = 4;
|
||||
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.multisample.count = 3;
|
||||
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,29 +217,29 @@ TEST_F(RenderPipelineValidationTest, SampleCountCompatibilityWithRenderPass) {
|
||||
baseTextureDescriptor.dimension = wgpu::TextureDimension::e2D;
|
||||
baseTextureDescriptor.usage = wgpu::TextureUsage::RenderAttachment;
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 nonMultisampledPipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor nonMultisampledPipelineDescriptor;
|
||||
nonMultisampledPipelineDescriptor.multisample.count = 1;
|
||||
nonMultisampledPipelineDescriptor.vertex.module = vsModule;
|
||||
nonMultisampledPipelineDescriptor.cFragment.module = fsModule;
|
||||
wgpu::RenderPipeline nonMultisampledPipeline =
|
||||
device.CreateRenderPipeline2(&nonMultisampledPipelineDescriptor);
|
||||
device.CreateRenderPipeline(&nonMultisampledPipelineDescriptor);
|
||||
|
||||
nonMultisampledPipelineDescriptor.cFragment.targetCount = 0;
|
||||
nonMultisampledPipelineDescriptor.EnableDepthStencil();
|
||||
wgpu::RenderPipeline nonMultisampledPipelineWithDepthStencilOnly =
|
||||
device.CreateRenderPipeline2(&nonMultisampledPipelineDescriptor);
|
||||
device.CreateRenderPipeline(&nonMultisampledPipelineDescriptor);
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 multisampledPipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor multisampledPipelineDescriptor;
|
||||
multisampledPipelineDescriptor.multisample.count = kMultisampledCount;
|
||||
multisampledPipelineDescriptor.vertex.module = vsModule;
|
||||
multisampledPipelineDescriptor.cFragment.module = fsModule;
|
||||
wgpu::RenderPipeline multisampledPipeline =
|
||||
device.CreateRenderPipeline2(&multisampledPipelineDescriptor);
|
||||
device.CreateRenderPipeline(&multisampledPipelineDescriptor);
|
||||
|
||||
multisampledPipelineDescriptor.cFragment.targetCount = 0;
|
||||
multisampledPipelineDescriptor.EnableDepthStencil();
|
||||
wgpu::RenderPipeline multisampledPipelineWithDepthStencilOnly =
|
||||
device.CreateRenderPipeline2(&multisampledPipelineDescriptor);
|
||||
device.CreateRenderPipeline(&multisampledPipelineDescriptor);
|
||||
|
||||
// It is not allowed to use multisampled render pass and non-multisampled render pipeline.
|
||||
{
|
||||
@@ -371,23 +346,23 @@ TEST_F(RenderPipelineValidationTest, SampleCountCompatibilityWithRenderPass) {
|
||||
// when the alphaToCoverage mode is enabled.
|
||||
TEST_F(RenderPipelineValidationTest, AlphaToCoverageAndSampleCount) {
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.multisample.count = 4;
|
||||
descriptor.multisample.alphaToCoverageEnabled = true;
|
||||
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.multisample.count = 1;
|
||||
descriptor.multisample.alphaToCoverageEnabled = true;
|
||||
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -403,7 +378,7 @@ TEST_F(RenderPipelineValidationTest, TextureComponentTypeCompatibility) {
|
||||
|
||||
for (size_t i = 0; i < kNumTextureComponentType; ++i) {
|
||||
for (size_t j = 0; j < kNumTextureComponentType; ++j) {
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
|
||||
std::ostringstream stream;
|
||||
@@ -421,9 +396,9 @@ TEST_F(RenderPipelineValidationTest, TextureComponentTypeCompatibility) {
|
||||
descriptor.layout = utils::MakeBasicPipelineLayout(device, &bgl);
|
||||
|
||||
if (i == j) {
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
} else {
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -452,7 +427,7 @@ TEST_F(RenderPipelineValidationTest, TextureViewDimensionCompatibility) {
|
||||
|
||||
for (size_t i = 0; i < kNumTextureViewDimensions; ++i) {
|
||||
for (size_t j = 0; j < kNumTextureViewDimensions; ++j) {
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
|
||||
std::ostringstream stream;
|
||||
@@ -470,9 +445,9 @@ TEST_F(RenderPipelineValidationTest, TextureViewDimensionCompatibility) {
|
||||
descriptor.layout = utils::MakeBasicPipelineLayout(device, &bgl);
|
||||
|
||||
if (i == j) {
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
} else {
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -491,11 +466,11 @@ TEST_F(RenderPipelineValidationTest, StorageBufferInVertexShaderNoLayout) {
|
||||
return vec4<f32>();
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModuleWithStorageBuffer;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Tests that strip primitive topologies require an index format
|
||||
@@ -516,7 +491,7 @@ TEST_F(RenderPipelineValidationTest, StripIndexFormatRequired) {
|
||||
|
||||
for (wgpu::PrimitiveTopology primitiveTopology : kStripTopologyTypes) {
|
||||
for (wgpu::IndexFormat indexFormat : kIndexFormatTypes) {
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.primitive.topology = primitiveTopology;
|
||||
@@ -525,17 +500,17 @@ TEST_F(RenderPipelineValidationTest, StripIndexFormatRequired) {
|
||||
if (indexFormat == wgpu::IndexFormat::Undefined) {
|
||||
// Fail because the index format is undefined and the primitive
|
||||
// topology is a strip type.
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
} else {
|
||||
// Succeeds because the index format is given.
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (wgpu::PrimitiveTopology primitiveTopology : kListTopologyTypes) {
|
||||
for (wgpu::IndexFormat indexFormat : kIndexFormatTypes) {
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.primitive.topology = primitiveTopology;
|
||||
@@ -544,9 +519,9 @@ TEST_F(RenderPipelineValidationTest, StripIndexFormatRequired) {
|
||||
if (indexFormat == wgpu::IndexFormat::Undefined) {
|
||||
// Succeeds even when the index format is undefined because the
|
||||
// primitive topology isn't a strip type.
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
} else {
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -555,39 +530,39 @@ TEST_F(RenderPipelineValidationTest, StripIndexFormatRequired) {
|
||||
// Test that specifying a clampDepth value results in an error if the feature is not enabled.
|
||||
TEST_F(RenderPipelineValidationTest, ClampDepthWithoutExtension) {
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
wgpu::PrimitiveDepthClampingState clampingState;
|
||||
clampingState.clampDepth = true;
|
||||
descriptor.primitive.nextInChain = &clampingState;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
wgpu::PrimitiveDepthClampingState clampingState;
|
||||
clampingState.clampDepth = false;
|
||||
descriptor.primitive.nextInChain = &clampingState;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
|
||||
// Test that depthStencil.depthCompare must not be undefiend.
|
||||
TEST_F(RenderPipelineValidationTest, DepthCompareUndefinedIsError) {
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
descriptor.EnableDepthStencil(wgpu::TextureFormat::Depth32Float);
|
||||
|
||||
// Control case: Always is valid.
|
||||
descriptor.cDepthStencil.depthCompare = wgpu::CompareFunction::Always;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
// Error case: Undefined is invalid.
|
||||
descriptor.cDepthStencil.depthCompare = wgpu::CompareFunction::Undefined;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Test that the entryPoint names must be present for the correct stage in the shader module.
|
||||
@@ -602,24 +577,24 @@ TEST_F(RenderPipelineValidationTest, EntryPointNameValidation) {
|
||||
}
|
||||
)");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = module;
|
||||
descriptor.vertex.entryPoint = "vertex_main";
|
||||
descriptor.cFragment.module = module;
|
||||
descriptor.cFragment.entryPoint = "fragment_main";
|
||||
|
||||
// Success case.
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
// Test for the vertex stage entryPoint name.
|
||||
{
|
||||
// The entryPoint name doesn't exist in the module.
|
||||
descriptor.vertex.entryPoint = "main";
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
|
||||
// The entryPoint name exists, but not for the correct stage.
|
||||
descriptor.vertex.entryPoint = "fragment_main";
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
descriptor.vertex.entryPoint = "vertex_main";
|
||||
@@ -628,11 +603,11 @@ TEST_F(RenderPipelineValidationTest, EntryPointNameValidation) {
|
||||
{
|
||||
// The entryPoint name doesn't exist in the module.
|
||||
descriptor.cFragment.entryPoint = "main";
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
|
||||
// The entryPoint name exists, but not for the correct stage.
|
||||
descriptor.cFragment.entryPoint = "vertex_main";
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -649,7 +624,7 @@ TEST_F(RenderPipelineValidationTest, VertexAttribCorrectEntryPoint) {
|
||||
}
|
||||
)");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = module;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
@@ -662,20 +637,20 @@ TEST_F(RenderPipelineValidationTest, VertexAttribCorrectEntryPoint) {
|
||||
// Success cases, the attribute used by the entryPoint is declared in the pipeline.
|
||||
descriptor.vertex.entryPoint = "vertex0";
|
||||
descriptor.cAttributes[0].shaderLocation = 0;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
descriptor.vertex.entryPoint = "vertex1";
|
||||
descriptor.cAttributes[0].shaderLocation = 1;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
// Error cases, the attribute used by the entryPoint isn't declared in the pipeline.
|
||||
descriptor.vertex.entryPoint = "vertex1";
|
||||
descriptor.cAttributes[0].shaderLocation = 0;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
|
||||
descriptor.vertex.entryPoint = "vertex0";
|
||||
descriptor.cAttributes[0].shaderLocation = 1;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Test that fragment output validation is for the correct entryPoint
|
||||
@@ -689,27 +664,27 @@ TEST_F(RenderPipelineValidationTest, FragmentOutputCorrectEntryPoint) {
|
||||
}
|
||||
)");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = module;
|
||||
|
||||
// Success case, the component type matches between the pipeline and the entryPoint
|
||||
descriptor.cFragment.entryPoint = "fragmentFloat";
|
||||
descriptor.cTargets[0].format = wgpu::TextureFormat::RGBA32Float;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
descriptor.cFragment.entryPoint = "fragmentUint";
|
||||
descriptor.cTargets[0].format = wgpu::TextureFormat::RGBA32Uint;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
// Error case, the component type doesn't match between the pipeline and the entryPoint
|
||||
descriptor.cFragment.entryPoint = "fragmentUint";
|
||||
descriptor.cTargets[0].format = wgpu::TextureFormat::RGBA32Float;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
|
||||
descriptor.cFragment.entryPoint = "fragmentFloat";
|
||||
descriptor.cTargets[0].format = wgpu::TextureFormat::RGBA32Uint;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Test that fragment output validation is for the correct entryPoint
|
||||
@@ -738,27 +713,27 @@ TEST_F(RenderPipelineValidationTest, DISABLED_BindingsFromCorrectEntryPoint) {
|
||||
device, {{1, wgpu::ShaderStage::Vertex, wgpu::BufferBindingType::Uniform}});
|
||||
wgpu::PipelineLayout layout1 = utils::MakeBasicPipelineLayout(device, &bgl1);
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = module;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
// Success case, the BGL matches the bindings used by the entryPoint
|
||||
descriptor.vertex.entryPoint = "vertex0";
|
||||
descriptor.layout = layout0;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
descriptor.vertex.entryPoint = "vertex1";
|
||||
descriptor.layout = layout1;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
|
||||
// Error case, the BGL doesn't match the bindings used by the entryPoint
|
||||
descriptor.vertex.entryPoint = "vertex1";
|
||||
descriptor.layout = layout0;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
|
||||
descriptor.vertex.entryPoint = "vertex0";
|
||||
descriptor.layout = layout1;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
class DepthClampingValidationTest : public RenderPipelineValidationTest {
|
||||
@@ -773,21 +748,21 @@ class DepthClampingValidationTest : public RenderPipelineValidationTest {
|
||||
// Tests that specifying a clampDepth value succeeds if the extension is enabled.
|
||||
TEST_F(DepthClampingValidationTest, Success) {
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
wgpu::PrimitiveDepthClampingState clampingState;
|
||||
clampingState.clampDepth = true;
|
||||
descriptor.primitive.nextInChain = &clampingState;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
{
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
wgpu::PrimitiveDepthClampingState clampingState;
|
||||
clampingState.clampDepth = false;
|
||||
descriptor.primitive.nextInChain = &clampingState;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,11 +54,11 @@ namespace {
|
||||
wgpu::ShaderModule fsModule = utils::CreateShaderModule(device, R"(
|
||||
[[stage(fragment)]] fn main() {
|
||||
})");
|
||||
utils::ComboRenderPipelineDescriptor2 pipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor pipelineDescriptor;
|
||||
pipelineDescriptor.vertex.module = vsModule;
|
||||
pipelineDescriptor.cFragment.module = fsModule;
|
||||
pipelineDescriptor.layout = utils::MakeBasicPipelineLayout(device, nullptr);
|
||||
return device.CreateRenderPipeline2(&pipelineDescriptor);
|
||||
return device.CreateRenderPipeline(&pipelineDescriptor);
|
||||
}
|
||||
|
||||
wgpu::ComputePipeline CreateNoOpComputePipeline(std::vector<wgpu::BindGroupLayout> bgls) {
|
||||
@@ -765,11 +765,11 @@ namespace {
|
||||
[[group(0), binding(0)]] var<storage> rBuffer : [[access(read)]] RBuffer;
|
||||
[[stage(fragment)]] fn main() {
|
||||
})");
|
||||
utils::ComboRenderPipelineDescriptor2 pipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor pipelineDescriptor;
|
||||
pipelineDescriptor.vertex.module = vsModule;
|
||||
pipelineDescriptor.cFragment.module = fsModule;
|
||||
pipelineDescriptor.layout = utils::MakeBasicPipelineLayout(device, &bgl0);
|
||||
wgpu::RenderPipeline rp = device.CreateRenderPipeline2(&pipelineDescriptor);
|
||||
wgpu::RenderPipeline rp = device.CreateRenderPipeline(&pipelineDescriptor);
|
||||
|
||||
// Resource in bg1 conflicts with resources used in bg0. However, bindings in bg1 is
|
||||
// not used in pipeline. But we still track this binding.
|
||||
@@ -1511,11 +1511,11 @@ namespace {
|
||||
[[group(0), binding(0)]] var tex : [[access(read)]] texture_storage_2d<rgba8unorm>;
|
||||
[[stage(fragment)]] fn main() {
|
||||
})");
|
||||
utils::ComboRenderPipelineDescriptor2 pipelineDescriptor;
|
||||
utils::ComboRenderPipelineDescriptor pipelineDescriptor;
|
||||
pipelineDescriptor.vertex.module = vsModule;
|
||||
pipelineDescriptor.cFragment.module = fsModule;
|
||||
pipelineDescriptor.layout = utils::MakeBasicPipelineLayout(device, &readBGL);
|
||||
wgpu::RenderPipeline rp = device.CreateRenderPipeline2(&pipelineDescriptor);
|
||||
wgpu::RenderPipeline rp = device.CreateRenderPipeline(&pipelineDescriptor);
|
||||
|
||||
// Texture binding in readBG conflicts with texture binding in writeBG. The binding
|
||||
// in writeBG is not used in pipeline. But we still track this binding.
|
||||
|
||||
@@ -127,11 +127,11 @@ TEST_F(StorageTextureValidationTests, RenderPipeline) {
|
||||
return textureLoad(image0, vec2<i32>(i32(VertexIndex), 0));
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = mDefaultFSModule;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
// Read-only storage textures can be declared in a fragment shader.
|
||||
@@ -144,11 +144,11 @@ TEST_F(StorageTextureValidationTests, RenderPipeline) {
|
||||
return textureLoad(image0, vec2<i32>(FragCoord.xy));
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = mDefaultVSModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
// Write-only storage textures cannot be declared in a vertex shader.
|
||||
@@ -159,11 +159,11 @@ TEST_F(StorageTextureValidationTests, RenderPipeline) {
|
||||
textureStore(image0, vec2<i32>(i32(vertex_index), 0), vec4<f32>(1.0, 0.0, 0.0, 1.0));
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = mDefaultFSModule;
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
}
|
||||
|
||||
// Write-only storage textures can be declared in a fragment shader.
|
||||
@@ -174,11 +174,11 @@ TEST_F(StorageTextureValidationTests, RenderPipeline) {
|
||||
textureStore(image0, vec2<i32>(position.xy), vec4<f32>(1.0, 0.0, 0.0, 1.0));
|
||||
})");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.layout = nullptr;
|
||||
descriptor.vertex.module = mDefaultVSModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -64,14 +64,14 @@ TEST_F(UnsafeAPIValidationTest, DrawIndexedIndirectDisallowed) {
|
||||
bundleDesc.colorFormatsCount = 1;
|
||||
bundleDesc.cColorFormats[0] = renderPass.attachmentFormat;
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 desc;
|
||||
utils::ComboRenderPipelineDescriptor desc;
|
||||
desc.vertex.module = utils::CreateShaderModule(
|
||||
device,
|
||||
R"([[stage(vertex)]] fn main() -> [[builtin(position)]] vec4<f32> {
|
||||
return vec4<f32>();
|
||||
})");
|
||||
desc.cFragment.module = utils::CreateShaderModule(device, "[[stage(fragment)]] fn main() {}");
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline2(&desc);
|
||||
wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&desc);
|
||||
|
||||
// Control cases: DrawIndirect and DrawIndexed are allowed inside a render pass.
|
||||
{
|
||||
|
||||
@@ -68,7 +68,7 @@ class VertexBufferValidationTest : public ValidationTest {
|
||||
|
||||
wgpu::RenderPipeline MakeRenderPipeline(const wgpu::ShaderModule& vsModule,
|
||||
unsigned int bufferCount) {
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.cFragment.module = fsModule;
|
||||
|
||||
@@ -80,7 +80,7 @@ class VertexBufferValidationTest : public ValidationTest {
|
||||
}
|
||||
descriptor.vertex.bufferCount = bufferCount;
|
||||
|
||||
return device.CreateRenderPipeline2(&descriptor);
|
||||
return device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
|
||||
wgpu::ShaderModule fsModule;
|
||||
|
||||
@@ -29,7 +29,7 @@ class VertexStateTest : public ValidationTest {
|
||||
}
|
||||
)");
|
||||
|
||||
utils::ComboRenderPipelineDescriptor2 descriptor;
|
||||
utils::ComboRenderPipelineDescriptor descriptor;
|
||||
descriptor.vertex.module = vsModule;
|
||||
descriptor.vertex.bufferCount = state.vertexBufferCount;
|
||||
descriptor.vertex.buffers = &state.cVertexBuffers[0];
|
||||
@@ -37,9 +37,9 @@ class VertexStateTest : public ValidationTest {
|
||||
descriptor.cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
|
||||
|
||||
if (!success) {
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline2(&descriptor));
|
||||
ASSERT_DEVICE_ERROR(device.CreateRenderPipeline(&descriptor));
|
||||
} else {
|
||||
device.CreateRenderPipeline2(&descriptor);
|
||||
device.CreateRenderPipeline(&descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user