Support "length" in dawn.json could be a integer
Struct member defined in dawn.json could have a 'length' attribute
defines the length of the member if it is an array.
In previous, the 'length' could only be 'strlen' or other variable
which has 'uint32_t' types. It cannot support constant length.
CopyTextureForBrowserOptions transfers conversion parameters and
conversion matrix with a constant length. This CL adds this ability
to meet such requirements.
Bug: dawn:1140
Change-Id: I6eeabbc55cc3853fe15e33bdd44060b16f6096bf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/72580
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Shaobo Yan <shaobo.yan@intel.com>
diff --git a/src/tests/unittests/validation/CopyTextureForBrowserTests.cpp b/src/tests/unittests/validation/CopyTextureForBrowserTests.cpp
index 395d19c..74041d9 100644
--- a/src/tests/unittests/validation/CopyTextureForBrowserTests.cpp
+++ b/src/tests/unittests/validation/CopyTextureForBrowserTests.cpp
@@ -265,19 +265,17 @@
wgpu::TextureUsage::CopyDst | wgpu::TextureUsage::RenderAttachment);
wgpu::CopyTextureForBrowserOptions options = {};
- std::array<float, 7> srcTransferFunctionParameters = {};
- std::array<float, 7> dstTransferFunctionParameters = {};
- std::array<float, 9> conversionMatrix = {};
options.needsColorSpaceConversion = true;
- options.srcTransferFunctionParameters = srcTransferFunctionParameters.data();
- options.dstTransferFunctionParameters = dstTransferFunctionParameters.data();
- options.conversionMatrix = conversionMatrix.data();
- options.conversionMatrixElementsCount = 9;
- options.transferFunctionParametersCount = 7;
// Valid cases
{
wgpu::CopyTextureForBrowserOptions validOptions = options;
+ std::array<float, 7> srcTransferFunctionParameters = {};
+ std::array<float, 7> dstTransferFunctionParameters = {};
+ std::array<float, 9> conversionMatrix = {};
+ validOptions.srcTransferFunctionParameters = srcTransferFunctionParameters.data();
+ validOptions.dstTransferFunctionParameters = dstTransferFunctionParameters.data();
+ validOptions.conversionMatrix = conversionMatrix.data();
TestCopyTextureForBrowser(utils::Expectation::Success, source, 0, {0, 0, 0}, destination, 0,
{0, 0, 0}, {4, 4, 1}, wgpu::TextureAspect::All, validOptions);
@@ -289,51 +287,51 @@
noColorSpaceConversion);
}
- // Invalid cases: wrong transferFunctionParametersCount
- {
- // wrong: transferFunctionParametersCount must be 7
- wgpu::CopyTextureForBrowserOptions invalidOptions = options;
- invalidOptions.transferFunctionParametersCount = 6;
- TestCopyTextureForBrowser(utils::Expectation::Failure, source, 0, {0, 0, 0}, destination, 0,
- {0, 0, 0}, {4, 4, 1}, wgpu::TextureAspect::All, invalidOptions);
- }
-
- // Invalid cases: wrong conversionMatrixElementsCount
- {
- // wrong: conversionMatrixElementsCount
- wgpu::CopyTextureForBrowserOptions invalidOptions = options;
- invalidOptions.transferFunctionParametersCount = 10;
- TestCopyTextureForBrowser(utils::Expectation::Failure, source, 0, {0, 0, 0}, destination, 0,
- {0, 0, 0}, {4, 4, 1}, wgpu::TextureAspect::All, invalidOptions);
- }
-
// Invalid cases: srcTransferFunctionParameters, dstTransferFunctionParameters or
- // conversionMatrix is nullptr
+ // conversionMatrix is nullptr or not set
{
+ // not set srcTransferFunctionParameters
wgpu::CopyTextureForBrowserOptions invalidOptions = options;
- if (UsesWire()) {
- invalidOptions.transferFunctionParametersCount = 0;
- }
+ std::array<float, 7> dstTransferFunctionParameters = {};
+ std::array<float, 9> conversionMatrix = {};
+ invalidOptions.dstTransferFunctionParameters = dstTransferFunctionParameters.data();
+ invalidOptions.conversionMatrix = conversionMatrix.data();
+ TestCopyTextureForBrowser(utils::Expectation::Failure, source, 0, {0, 0, 0}, destination, 0,
+ {0, 0, 0}, {4, 4, 1}, wgpu::TextureAspect::All, invalidOptions);
+
+ // set to nullptr
invalidOptions.srcTransferFunctionParameters = nullptr;
TestCopyTextureForBrowser(utils::Expectation::Failure, source, 0, {0, 0, 0}, destination, 0,
{0, 0, 0}, {4, 4, 1}, wgpu::TextureAspect::All, invalidOptions);
}
{
+ // not set dstTransferFunctionParameters
wgpu::CopyTextureForBrowserOptions invalidOptions = options;
- if (UsesWire()) {
- invalidOptions.transferFunctionParametersCount = 0;
- }
+ std::array<float, 7> srcTransferFunctionParameters = {};
+ std::array<float, 9> conversionMatrix = {};
+ invalidOptions.srcTransferFunctionParameters = srcTransferFunctionParameters.data();
+ invalidOptions.conversionMatrix = conversionMatrix.data();
+ TestCopyTextureForBrowser(utils::Expectation::Failure, source, 0, {0, 0, 0}, destination, 0,
+ {0, 0, 0}, {4, 4, 1}, wgpu::TextureAspect::All, invalidOptions);
+
+ // set to nullptr
invalidOptions.dstTransferFunctionParameters = nullptr;
TestCopyTextureForBrowser(utils::Expectation::Failure, source, 0, {0, 0, 0}, destination, 0,
{0, 0, 0}, {4, 4, 1}, wgpu::TextureAspect::All, invalidOptions);
}
{
+ // not set conversionMatrix
wgpu::CopyTextureForBrowserOptions invalidOptions = options;
- if (UsesWire()) {
- invalidOptions.conversionMatrixElementsCount = 0;
- }
+ std::array<float, 7> srcTransferFunctionParameters = {};
+ std::array<float, 7> dstTransferFunctionParameters = {};
+ invalidOptions.srcTransferFunctionParameters = srcTransferFunctionParameters.data();
+ invalidOptions.dstTransferFunctionParameters = dstTransferFunctionParameters.data();
+ TestCopyTextureForBrowser(utils::Expectation::Failure, source, 0, {0, 0, 0}, destination, 0,
+ {0, 0, 0}, {4, 4, 1}, wgpu::TextureAspect::All, invalidOptions);
+
+ // set to nullptr
invalidOptions.conversionMatrix = nullptr;
TestCopyTextureForBrowser(utils::Expectation::Failure, source, 0, {0, 0, 0}, destination, 0,
{0, 0, 0}, {4, 4, 1}, wgpu::TextureAspect::All, invalidOptions);