Commit 0bb02368 by Frank Henigman Committed by Commit Bot

Vulkan: add SCALED vertex formats to table.

Add SCALED formats, which correspond to non-normalized integers, to Vulkan format table. Adjust test expectations accordingly. For now these new formats only work when the native Vulkan supports them. BUG=angleproject:2405 Change-Id: Ia6fdcbec61774536e6396cf713e46f28f49585c1 Reviewed-on: https://chromium-review.googlesource.com/1110710 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 0265e1ec
...@@ -37,16 +37,22 @@ ...@@ -37,16 +37,22 @@
"R8_SNORM": "VK_FORMAT_R8_SNORM", "R8_SNORM": "VK_FORMAT_R8_SNORM",
"R8_UINT": "VK_FORMAT_R8_UINT", "R8_UINT": "VK_FORMAT_R8_UINT",
"R8_SINT": "VK_FORMAT_R8_SINT", "R8_SINT": "VK_FORMAT_R8_SINT",
"R8_USCALED": "VK_FORMAT_R8_USCALED",
"R8_SSCALED": "VK_FORMAT_R8_SSCALED",
"R8_SRGB": "VK_FORMAT_R8_SRGB", "R8_SRGB": "VK_FORMAT_R8_SRGB",
"R8G8_UNORM": "VK_FORMAT_R8G8_UNORM", "R8G8_UNORM": "VK_FORMAT_R8G8_UNORM",
"R8G8_SNORM": "VK_FORMAT_R8G8_SNORM", "R8G8_SNORM": "VK_FORMAT_R8G8_SNORM",
"R8G8_UINT": "VK_FORMAT_R8G8_UINT", "R8G8_UINT": "VK_FORMAT_R8G8_UINT",
"R8G8_SINT": "VK_FORMAT_R8G8_SINT", "R8G8_SINT": "VK_FORMAT_R8G8_SINT",
"R8G8_USCALED": "VK_FORMAT_R8G8_USCALED",
"R8G8_SSCALED": "VK_FORMAT_R8G8_SSCALED",
"R8G8_SRGB": "VK_FORMAT_R8G8_SRGB", "R8G8_SRGB": "VK_FORMAT_R8G8_SRGB",
"R8G8B8_UNORM": "VK_FORMAT_R8G8B8_UNORM", "R8G8B8_UNORM": "VK_FORMAT_R8G8B8_UNORM",
"R8G8B8_SNORM": "VK_FORMAT_R8G8B8_SNORM", "R8G8B8_SNORM": "VK_FORMAT_R8G8B8_SNORM",
"R8G8B8_UINT": "VK_FORMAT_R8G8B8_UINT", "R8G8B8_UINT": "VK_FORMAT_R8G8B8_UINT",
"R8G8B8_SINT": "VK_FORMAT_R8G8B8_SINT", "R8G8B8_SINT": "VK_FORMAT_R8G8B8_SINT",
"R8G8B8_USCALED": "VK_FORMAT_R8G8B8_USCALED",
"R8G8B8_SSCALED": "VK_FORMAT_R8G8B8_SSCALED",
"R8G8B8_SRGB": "VK_FORMAT_R8G8B8_SRGB", "R8G8B8_SRGB": "VK_FORMAT_R8G8B8_SRGB",
"B8G8R8_UNORM": "VK_FORMAT_B8G8R8_UNORM", "B8G8R8_UNORM": "VK_FORMAT_B8G8R8_UNORM",
"B8G8R8_SNORM": "VK_FORMAT_B8G8R8_SNORM", "B8G8R8_SNORM": "VK_FORMAT_B8G8R8_SNORM",
...@@ -57,6 +63,8 @@ ...@@ -57,6 +63,8 @@
"R8G8B8A8_SNORM": "VK_FORMAT_R8G8B8A8_SNORM", "R8G8B8A8_SNORM": "VK_FORMAT_R8G8B8A8_SNORM",
"R8G8B8A8_UINT": "VK_FORMAT_R8G8B8A8_UINT", "R8G8B8A8_UINT": "VK_FORMAT_R8G8B8A8_UINT",
"R8G8B8A8_SINT": "VK_FORMAT_R8G8B8A8_SINT", "R8G8B8A8_SINT": "VK_FORMAT_R8G8B8A8_SINT",
"R8G8B8A8_USCALED": "VK_FORMAT_R8G8B8A8_USCALED",
"R8G8B8A8_SSCALED": "VK_FORMAT_R8G8B8A8_SSCALED",
"R8G8B8A8_SRGB": "VK_FORMAT_R8G8B8A8_SRGB", "R8G8B8A8_SRGB": "VK_FORMAT_R8G8B8A8_SRGB",
"B8G8R8A8_UNORM": "VK_FORMAT_B8G8R8A8_UNORM", "B8G8R8A8_UNORM": "VK_FORMAT_B8G8R8A8_UNORM",
"B8G8R8A8_SNORM": "VK_FORMAT_B8G8R8A8_SNORM", "B8G8R8A8_SNORM": "VK_FORMAT_B8G8R8A8_SNORM",
...@@ -79,21 +87,29 @@ ...@@ -79,21 +87,29 @@
"A2B10G10R10_SINT_PACK32": "VK_FORMAT_A2B10G10R10_SINT_PACK32", "A2B10G10R10_SINT_PACK32": "VK_FORMAT_A2B10G10R10_SINT_PACK32",
"R16_UNORM": "VK_FORMAT_R16_UNORM", "R16_UNORM": "VK_FORMAT_R16_UNORM",
"R16_SNORM": "VK_FORMAT_R16_SNORM", "R16_SNORM": "VK_FORMAT_R16_SNORM",
"R16_USCALED": "VK_FORMAT_R16_USCALED",
"R16_SSCALED": "VK_FORMAT_R16_SSCALED",
"R16_UINT": "VK_FORMAT_R16_UINT", "R16_UINT": "VK_FORMAT_R16_UINT",
"R16_SINT": "VK_FORMAT_R16_SINT", "R16_SINT": "VK_FORMAT_R16_SINT",
"R16_FLOAT": "VK_FORMAT_R16_SFLOAT", "R16_FLOAT": "VK_FORMAT_R16_SFLOAT",
"R16G16_UNORM": "VK_FORMAT_R16G16_UNORM", "R16G16_UNORM": "VK_FORMAT_R16G16_UNORM",
"R16G16_SNORM": "VK_FORMAT_R16G16_SNORM", "R16G16_SNORM": "VK_FORMAT_R16G16_SNORM",
"R16G16_USCALED": "VK_FORMAT_R16G16_USCALED",
"R16G16_SSCALED": "VK_FORMAT_R16G16_SSCALED",
"R16G16_UINT": "VK_FORMAT_R16G16_UINT", "R16G16_UINT": "VK_FORMAT_R16G16_UINT",
"R16G16_SINT": "VK_FORMAT_R16G16_SINT", "R16G16_SINT": "VK_FORMAT_R16G16_SINT",
"R16G16_FLOAT": "VK_FORMAT_R16G16_SFLOAT", "R16G16_FLOAT": "VK_FORMAT_R16G16_SFLOAT",
"R16G16B16_UNORM": "VK_FORMAT_R16G16B16_UNORM", "R16G16B16_UNORM": "VK_FORMAT_R16G16B16_UNORM",
"R16G16B16_SNORM": "VK_FORMAT_R16G16B16_SNORM", "R16G16B16_SNORM": "VK_FORMAT_R16G16B16_SNORM",
"R16G16B16_USCALED": "VK_FORMAT_R16G16B16_USCALED",
"R16G16B16_SSCALED": "VK_FORMAT_R16G16B16_SSCALED",
"R16G16B16_UINT": "VK_FORMAT_R16G16B16_UINT", "R16G16B16_UINT": "VK_FORMAT_R16G16B16_UINT",
"R16G16B16_SINT": "VK_FORMAT_R16G16B16_SINT", "R16G16B16_SINT": "VK_FORMAT_R16G16B16_SINT",
"R16G16B16_FLOAT": "VK_FORMAT_R16G16B16_SFLOAT", "R16G16B16_FLOAT": "VK_FORMAT_R16G16B16_SFLOAT",
"R16G16B16A16_UNORM": "VK_FORMAT_R16G16B16A16_UNORM", "R16G16B16A16_UNORM": "VK_FORMAT_R16G16B16A16_UNORM",
"R16G16B16A16_SNORM": "VK_FORMAT_R16G16B16A16_SNORM", "R16G16B16A16_SNORM": "VK_FORMAT_R16G16B16A16_SNORM",
"R16G16B16A16_USCALED": "VK_FORMAT_R16G16B16A16_USCALED",
"R16G16B16A16_SSCALED": "VK_FORMAT_R16G16B16A16_SSCALED",
"R16G16B16A16_UINT": "VK_FORMAT_R16G16B16A16_UINT", "R16G16B16A16_UINT": "VK_FORMAT_R16G16B16A16_UINT",
"R16G16B16A16_SINT": "VK_FORMAT_R16G16B16A16_SINT", "R16G16B16A16_SINT": "VK_FORMAT_R16G16B16A16_SINT",
"R16G16B16A16_FLOAT": "VK_FORMAT_R16G16B16A16_SFLOAT", "R16G16B16A16_FLOAT": "VK_FORMAT_R16G16B16A16_SFLOAT",
......
...@@ -388,17 +388,21 @@ void AttributeLayoutTest::GetTestCases(void) ...@@ -388,17 +388,21 @@ void AttributeLayoutTest::GetTestCases(void)
// 5. stride != size // 5. stride != size
mTestCases.push_back({Float(B0, 0, 16, mCoord), Float(B1, 0, 12, mColor)}); mTestCases.push_back({Float(B0, 0, 16, mCoord), Float(B1, 0, 12, mColor)});
// 6-7. normalized byte/short // 6-9. byte/short
if (IsVulkan() && (IsAndroid() || (IsWindows() && IsAMD()))) if (IsVulkan() && (IsAndroid() || (IsWindows() && IsAMD())))
{ {
// empty test cases preserve the numbering // empty test cases preserve the numbering
mTestCases.push_back({}); mTestCases.push_back({});
mTestCases.push_back({}); mTestCases.push_back({});
mTestCases.push_back({});
mTestCases.push_back({});
} }
else else
{ {
// TODO(fjhenigman): Enable these once vertex format conversion is implemented. // TODO(fjhenigman): Enable these once vertex format conversion is implemented.
// anglebug.com/2405 // anglebug.com/2405
mTestCases.push_back({SByte(M0, 0, 20, mCoord), UByte(M0, 10, 20, mColor)});
mTestCases.push_back({SShort(M0, 0, 20, mCoord), UShort(M0, 8, 20, mColor)});
mTestCases.push_back({NormSByte(M0, 0, 8, mCoord), NormUByte(M0, 4, 8, mColor)}); mTestCases.push_back({NormSByte(M0, 0, 8, mCoord), NormUByte(M0, 4, 8, mColor)});
mTestCases.push_back({NormSShort(M0, 0, 20, mCoord), NormUShort(M0, 8, 20, mColor)}); mTestCases.push_back({NormSShort(M0, 0, 20, mCoord), NormUShort(M0, 8, 20, mColor)});
} }
...@@ -411,23 +415,19 @@ void AttributeLayoutTest::GetTestCases(void) ...@@ -411,23 +415,19 @@ void AttributeLayoutTest::GetTestCases(void)
return; return;
} }
// 8. one buffer, sequential // 10. one buffer, sequential
mTestCases.push_back({Float(B0, 0, 8, mCoord), Float(B0, 96, 12, mColor)}); mTestCases.push_back({Fixed(B0, 0, 8, mCoord), Float(B0, 96, 12, mColor)});
// 9. one buffer, interleaved // 11. one buffer, interleaved
mTestCases.push_back({Float(B0, 0, 20, mCoord), Float(B0, 8, 20, mColor)}); mTestCases.push_back({Fixed(B0, 0, 20, mCoord), Float(B0, 8, 20, mColor)});
// 10. memory and buffer, float and integer // 12. memory and buffer, float and integer
mTestCases.push_back({Float(M0, 0, 8, mCoord), SByte(B0, 0, 12, mColor)}); mTestCases.push_back({Float(M0, 0, 8, mCoord), SByte(B0, 0, 12, mColor)});
// 11. buffer and memory, unusual offset and stride // 13. buffer and memory, unusual offset and stride
mTestCases.push_back({Float(B0, 11, 13, mCoord), Float(M0, 23, 17, mColor)}); mTestCases.push_back({Float(B0, 11, 13, mCoord), Float(M0, 23, 17, mColor)});
// 12-13. unnormalized // 14-15. remaining ES3 formats
mTestCases.push_back({Fixed(M0, 0, 20, mCoord), UByte(M0, 16, 20, mColor)});
mTestCases.push_back({SShort(M0, 0, 20, mCoord), UShort(M0, 8, 20, mColor)});
// 14-15. remaining ES3 types
if (es3) if (es3)
{ {
mTestCases.push_back({SInt(M0, 0, 40, mCoord), UInt(M0, 16, 40, mColor)}); mTestCases.push_back({SInt(M0, 0, 40, mCoord), UInt(M0, 16, 40, mColor)});
...@@ -468,42 +468,21 @@ class AttributeLayoutBufferIndexed : public AttributeLayoutTest ...@@ -468,42 +468,21 @@ class AttributeLayoutBufferIndexed : public AttributeLayoutTest
TEST_P(AttributeLayoutNonIndexed, Test) TEST_P(AttributeLayoutNonIndexed, Test)
{ {
Run(true); Run(true);
ANGLE_SKIP_TEST_IF(IsWindows() && IsAMD() && IsOpenGL());
if (IsWindows() && IsAMD() && IsOpenGL())
{
std::cout << "test skipped on Windows ATI OpenGL: non-indexed non-zero vertex start"
<< std::endl;
return;
}
Run(false); Run(false);
} }
TEST_P(AttributeLayoutMemoryIndexed, Test) TEST_P(AttributeLayoutMemoryIndexed, Test)
{ {
Run(true); Run(true);
ANGLE_SKIP_TEST_IF(IsWindows() && IsAMD() && (IsOpenGL() || IsD3D11_FL93()));
if (IsWindows() && IsAMD() && (IsOpenGL() || GetParam() == ES2_D3D11_FL9_3()))
{
std::cout << "test skipped on Windows ATI OpenGL and D3D11_9_3: indexed non-zero vertex start"
<< std::endl;
return;
}
Run(false); Run(false);
} }
TEST_P(AttributeLayoutBufferIndexed, Test) TEST_P(AttributeLayoutBufferIndexed, Test)
{ {
Run(true); Run(true);
ANGLE_SKIP_TEST_IF(IsWindows() && IsAMD() && (IsOpenGL() || IsD3D11_FL93()));
if (IsWindows() && IsAMD() && (IsOpenGL() || GetParam() == ES2_D3D11_FL9_3()))
{
std::cout << "test skipped on Windows ATI OpenGL and D3D11_9_3: indexed non-zero vertex start"
<< std::endl;
return;
}
Run(false); Run(false);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment