mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-14 15:46:28 +00:00
Allow Clearing Integer Formats To Large Values
Removes validation preventing integer formats from being cleared to >2^24. Adds a test that clears to the largest values for UINT32 and SINT32 formats. Bug: dawn:537 Change-Id: I8aabd36608138725c8ddbbedd50192c0978da99c Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30300 Reviewed-by: Austin Eng <enga@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
This commit is contained in:
committed by
Commit Bot service account
parent
cb055303b5
commit
a63a00cd65
@@ -762,94 +762,6 @@ namespace {
|
||||
}
|
||||
}
|
||||
|
||||
// Tests that values that require more than 24 bits to express are not allowed for integer
|
||||
// formats.
|
||||
TEST_F(RenderPassDescriptorValidationTest, ExceedValidColorClearRange) {
|
||||
std::array<wgpu::TextureFormat, 2> formats = {wgpu::TextureFormat::RGBA32Sint,
|
||||
wgpu::TextureFormat::RGBA32Uint};
|
||||
|
||||
constexpr double k2toThe24 = 16777216.0;
|
||||
double kLargerThan2toPower24 = nextafter(k2toThe24, k2toThe24 + 1);
|
||||
|
||||
for (wgpu::TextureFormat format : formats) {
|
||||
wgpu::TextureView color = Create2DAttachment(device, 1, 1, format);
|
||||
|
||||
// Tests that 16777216.0 is a valid clear color.
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.r = k2toThe24;
|
||||
renderPass.cColorAttachments[0].clearColor.g = k2toThe24;
|
||||
renderPass.cColorAttachments[0].clearColor.b = k2toThe24;
|
||||
renderPass.cColorAttachments[0].clearColor.a = k2toThe24;
|
||||
AssertBeginRenderPassSuccess(&renderPass);
|
||||
}
|
||||
|
||||
// Tests that 16777216.01 cannot be used as a clear color.
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.r = kLargerThan2toPower24;
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.g = kLargerThan2toPower24;
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.b = kLargerThan2toPower24;
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.a = kLargerThan2toPower24;
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
|
||||
// Tests that -16777216.0 is a valid clear color for Sint, but not for Uint
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.r = -k2toThe24;
|
||||
renderPass.cColorAttachments[0].clearColor.g = -k2toThe24;
|
||||
renderPass.cColorAttachments[0].clearColor.b = -k2toThe24;
|
||||
renderPass.cColorAttachments[0].clearColor.a = -k2toThe24;
|
||||
if (format == wgpu::TextureFormat::RGBA32Sint) {
|
||||
AssertBeginRenderPassSuccess(&renderPass);
|
||||
} else if (format == wgpu::TextureFormat::RGBA32Uint) {
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
}
|
||||
|
||||
// Tests that -16777216.01 cannot be used as a clear color.
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.r = -kLargerThan2toPower24;
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.g = -kLargerThan2toPower24;
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.b = -kLargerThan2toPower24;
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({color}, nullptr);
|
||||
renderPass.cColorAttachments[0].clearColor.a = -kLargerThan2toPower24;
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(RenderPassDescriptorValidationTest, ValidateDepthStencilReadOnly) {
|
||||
wgpu::TextureView colorView =
|
||||
Create2DAttachment(device, 1, 1, wgpu::TextureFormat::RGBA8Unorm);
|
||||
|
||||
Reference in New Issue
Block a user