Commit 2806a898 by James Dong Committed by Commit Bot

Vulkan: implement primitive restart

Implements ES 3.0 feature GL_PRIMITIVE_RESTART_FIXED_INDEX, which allows the application to use a fixed "restart" index to restart the primitive during a single draw call. This change does't handle GL_LINE_LOOP primitives, which requires a bit of special handling. Bug: angleproject:3215 Change-Id: I2388852683fd17328a6a76c48d70a24d67ce8b67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650301Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
parent 4316e064
...@@ -274,7 +274,9 @@ ...@@ -274,7 +274,9 @@
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000B.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000B.inc":
"065aaa20cdad29b5f5d2916eb3d096fc", "065aaa20cdad29b5f5d2916eb3d096fc",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc":
"449ed947f0a7923a26b9fe1fa9c02a47", "7ab9d6aa6dba8271f68df9c6f5355e44",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc":
"4726c9620a56bee224983d28d979fd39",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc":
"d4e48d64aa66fcf3c09330c4234ba349", "d4e48d64aa66fcf3c09330c4234ba349",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc":
...@@ -400,7 +402,7 @@ ...@@ -400,7 +402,7 @@
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BufferUtils.comp": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BufferUtils.comp":
"0c8c050841543da0d7faca2559212aa8", "0c8c050841543da0d7faca2559212aa8",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp":
"f7675f4b3c966022e5bd222823b5a094", "ca35df77d258baa0636529d1f0f446a9",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp":
"93649f61036c2fa4739988ad71f413df", "93649f61036c2fa4739988ad71f413df",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/FullScreenQuad.vert": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/FullScreenQuad.vert":
...@@ -410,9 +412,9 @@ ...@@ -410,9 +412,9 @@
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag":
"20c83ade1efb48a802dc34ca838a2be6", "20c83ade1efb48a802dc34ca838a2be6",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp":
"75538dc8198ce0c1c3f41d351fb6f5a2", "7891716bf0c429ddacfbb2823f166dc6",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h":
"bb6cb68410a9e8f0143046f1e034ceaf", "63e63b37508787d66a0e4aab7e36ffd8",
"Vulkan internal shader programs:tools/glslang/glslang_validator.exe.sha1": "Vulkan internal shader programs:tools/glslang/glslang_validator.exe.sha1":
"9f1f0fc61116a657e065c40f9296e5ab", "9f1f0fc61116a657e065c40f9296e5ab",
"Vulkan internal shader programs:tools/glslang/glslang_validator.sha1": "Vulkan internal shader programs:tools/glslang/glslang_validator.sha1":
......
...@@ -1504,6 +1504,8 @@ angle::Result ContextVk::syncState(const gl::Context *context, ...@@ -1504,6 +1504,8 @@ angle::Result ContextVk::syncState(const gl::Context *context,
glState.getLineWidth()); glState.getLineWidth());
break; break;
case gl::State::DIRTY_BIT_PRIMITIVE_RESTART_ENABLED: case gl::State::DIRTY_BIT_PRIMITIVE_RESTART_ENABLED:
mGraphicsPipelineDesc->updatePrimitiveRestartEnabled(
&mGraphicsPipelineTransition, glState.isPrimitiveRestartEnabled());
break; break;
case gl::State::DIRTY_BIT_CLEAR_COLOR: case gl::State::DIRTY_BIT_CLEAR_COLOR:
mClearColorValue.color.float32[0] = glState.getColorClearValue().red; mClearColorValue.color.float32[0] = glState.getColorClearValue().red;
......
...@@ -647,11 +647,17 @@ angle::Result UtilsVk::convertIndexBuffer(ContextVk *contextVk, ...@@ -647,11 +647,17 @@ angle::Result UtilsVk::convertIndexBuffer(ContextVk *contextVk,
ConvertIndexShaderParams shaderParams = {params.srcOffset, params.dstOffset >> 2, ConvertIndexShaderParams shaderParams = {params.srcOffset, params.dstOffset >> 2,
params.maxIndex, 0}; params.maxIndex, 0};
uint32_t flags = 0;
if (contextVk->getState().isPrimitiveRestartEnabled())
{
flags |= vk::InternalShader::ConvertIndex_comp::kIsPrimitiveRestartEnabled;
}
vk::RefCounted<vk::ShaderAndSerial> *shader = nullptr; vk::RefCounted<vk::ShaderAndSerial> *shader = nullptr;
ANGLE_TRY(contextVk->getShaderLibrary().getConvertIndex_comp(contextVk, 0, &shader)); ANGLE_TRY(contextVk->getShaderLibrary().getConvertIndex_comp(contextVk, flags, &shader));
ANGLE_TRY(setupProgram(contextVk, Function::ConvertIndexBuffer, shader, nullptr, ANGLE_TRY(setupProgram(contextVk, Function::ConvertIndexBuffer, shader, nullptr,
&mConvertIndexPrograms[0], nullptr, descriptorSet, &shaderParams, &mConvertIndexPrograms[flags], nullptr, descriptorSet, &shaderParams,
sizeof(ConvertIndexShaderParams), commandBuffer)); sizeof(ConvertIndexShaderParams), commandBuffer));
constexpr uint32_t kInvocationsPerGroup = 64; constexpr uint32_t kInvocationsPerGroup = 64;
......
...@@ -189,13 +189,37 @@ angle::Result VertexArrayVk::convertIndexBufferCPU(ContextVk *contextVk, ...@@ -189,13 +189,37 @@ angle::Result VertexArrayVk::convertIndexBufferCPU(ContextVk *contextVk,
// memory to a GLushort. // memory to a GLushort.
const GLubyte *in = static_cast<const GLubyte *>(sourcePointer); const GLubyte *in = static_cast<const GLubyte *>(sourcePointer);
GLushort *expandedDst = reinterpret_cast<GLushort *>(dst); GLushort *expandedDst = reinterpret_cast<GLushort *>(dst);
bool primitiveRestart = contextVk->getState().isPrimitiveRestartEnabled();
constexpr GLubyte kUnsignedByteRestartValue = 0xFF;
constexpr GLushort kUnsignedShortRestartValue = 0xFFFF;
if (primitiveRestart)
{
for (size_t index = 0; index < indexCount; index++)
{
GLushort value = static_cast<GLushort>(in[index]);
if (in[index] == kUnsignedByteRestartValue)
{
// Convert from 8-bit restart value to 16-bit restart value
value = kUnsignedShortRestartValue;
}
expandedDst[index] = value;
}
}
else
{
// Fast path for common case.
for (size_t index = 0; index < indexCount; index++) for (size_t index = 0; index < indexCount; index++)
{ {
expandedDst[index] = static_cast<GLushort>(in[index]); expandedDst[index] = static_cast<GLushort>(in[index]);
} }
} }
}
else else
{ {
// The primitive restart value is the same for OpenGL and Vulkan,
// so there's no need to perform any conversion.
memcpy(dst, sourcePointer, amount); memcpy(dst, sourcePointer, amount);
} }
ANGLE_TRY(dynamicBuffer->flush(contextVk)); ANGLE_TRY(dynamicBuffer->flush(contextVk));
......
// 7.12.3226 // 7.12.3226
#pragma once #pragma once
const uint32_t kConvertIndex_comp_00000000[] = { const uint32_t kConvertIndex_comp_00000000[] = {
0x07230203,0x00010000,0x00080007,0x0000007b,0x00000000,0x00020011,0x00000001,0x0006000b, 0x07230203,0x00010000,0x00080007,0x0000007d,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000003f,0x00060010,0x00000004, 0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000041,0x00060010,0x00000004,
0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005, 0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005,
0x00000004,0x6e69616d,0x00000000,0x00060005,0x0000000a,0x6c6c7550,0x65646e49,0x31752878, 0x00000004,0x6e69616d,0x00000000,0x00060005,0x0000000a,0x6c6c7550,0x65646e49,0x31752878,
0x0000003b,0x00040005,0x00000009,0x65646e69,0x00000078,0x00090005,0x00000010,0x6b636150, 0x0000003b,0x00040005,0x00000009,0x65646e69,0x00000078,0x00090005,0x00000010,0x6b636150,
...@@ -17,96 +17,98 @@ const uint32_t kConvertIndex_comp_00000000[] = { ...@@ -17,96 +17,98 @@ const uint32_t kConvertIndex_comp_00000000[] = {
0x00000000,0x00030005,0x00000016,0x00000000,0x00050005,0x0000001d,0x42637273,0x6b636f6c, 0x00000000,0x00030005,0x00000016,0x00000000,0x00050005,0x0000001d,0x42637273,0x6b636f6c,
0x00000000,0x00030005,0x0000001f,0x00637273,0x00050006,0x0000001f,0x00000000,0x44637273, 0x00000000,0x00030005,0x0000001f,0x00637273,0x00050006,0x0000001f,0x00000000,0x44637273,
0x00617461,0x00030005,0x00000021,0x00000000,0x00060005,0x00000028,0x43637273,0x6f706d6f, 0x00617461,0x00030005,0x00000021,0x00000000,0x00060005,0x00000028,0x43637273,0x6f706d6f,
0x746e656e,0x00000000,0x00040005,0x0000003c,0x65646e69,0x00000078,0x00080005,0x0000003f, 0x746e656e,0x00000000,0x00040005,0x0000002c,0x756c6176,0x00000065,0x00040005,0x0000003e,
0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005,0x0000004e, 0x65646e69,0x00000078,0x00080005,0x00000041,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,
0x56747364,0x65756c61,0x00000000,0x00050005,0x0000004f,0x56637273,0x65756c61,0x00000000, 0x496e6f69,0x00000044,0x00050005,0x00000050,0x56747364,0x65756c61,0x00000000,0x00050005,
0x00040005,0x00000050,0x61726170,0x0000006d,0x00040005,0x00000053,0x61726170,0x0000006d, 0x00000051,0x56637273,0x65756c61,0x00000000,0x00040005,0x00000052,0x61726170,0x0000006d,
0x00040005,0x00000055,0x61726170,0x0000006d,0x00040005,0x00000056,0x61726170,0x0000006d, 0x00040005,0x00000055,0x61726170,0x0000006d,0x00040005,0x00000057,0x61726170,0x0000006d,
0x00050005,0x00000062,0x56637273,0x65756c61,0x00000000,0x00040005,0x00000065,0x61726170, 0x00040005,0x00000058,0x61726170,0x0000006d,0x00050005,0x00000064,0x56637273,0x65756c61,
0x0000006d,0x00040005,0x00000067,0x61726170,0x0000006d,0x00040005,0x00000069,0x61726170, 0x00000000,0x00040005,0x00000067,0x61726170,0x0000006d,0x00040005,0x00000069,0x61726170,
0x0000006d,0x00040005,0x0000006a,0x61726170,0x0000006d,0x00030005,0x0000006f,0x00747364, 0x0000006d,0x00040005,0x0000006b,0x61726170,0x0000006d,0x00040005,0x0000006c,0x61726170,
0x00050006,0x0000006f,0x00000000,0x44747364,0x00617461,0x00030005,0x00000071,0x00000000, 0x0000006d,0x00030005,0x00000071,0x00747364,0x00050006,0x00000071,0x00000000,0x44747364,
0x00050048,0x00000014,0x00000000,0x00000023,0x00000000,0x00050048,0x00000014,0x00000001, 0x00617461,0x00030005,0x00000073,0x00000000,0x00050048,0x00000014,0x00000000,0x00000023,
0x00000023,0x00000004,0x00050048,0x00000014,0x00000002,0x00000023,0x00000008,0x00050048, 0x00000000,0x00050048,0x00000014,0x00000001,0x00000023,0x00000004,0x00050048,0x00000014,
0x00000014,0x00000003,0x00000023,0x0000000c,0x00030047,0x00000014,0x00000002,0x00040047, 0x00000002,0x00000023,0x00000008,0x00050048,0x00000014,0x00000003,0x00000023,0x0000000c,
0x0000001e,0x00000006,0x00000004,0x00040048,0x0000001f,0x00000000,0x00000018,0x00050048, 0x00030047,0x00000014,0x00000002,0x00040047,0x0000001e,0x00000006,0x00000004,0x00040048,
0x0000001f,0x00000000,0x00000023,0x00000000,0x00030047,0x0000001f,0x00000003,0x00040047, 0x0000001f,0x00000000,0x00000018,0x00050048,0x0000001f,0x00000000,0x00000023,0x00000000,
0x00000021,0x00000022,0x00000000,0x00040047,0x00000021,0x00000021,0x00000001,0x00040047, 0x00030047,0x0000001f,0x00000003,0x00040047,0x00000021,0x00000022,0x00000000,0x00040047,
0x0000003f,0x0000000b,0x0000001c,0x00040047,0x0000006e,0x00000006,0x00000004,0x00050048, 0x00000021,0x00000021,0x00000001,0x00040047,0x00000041,0x0000000b,0x0000001c,0x00040047,
0x0000006f,0x00000000,0x00000023,0x00000000,0x00030047,0x0000006f,0x00000003,0x00040047, 0x00000070,0x00000006,0x00000004,0x00050048,0x00000071,0x00000000,0x00000023,0x00000000,
0x00000071,0x00000022,0x00000000,0x00040047,0x00000071,0x00000021,0x00000000,0x00040047, 0x00030047,0x00000071,0x00000003,0x00040047,0x00000073,0x00000022,0x00000000,0x00040047,
0x0000007a,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002, 0x00000073,0x00000021,0x00000000,0x00040047,0x0000007c,0x0000000b,0x00000019,0x00020013,
0x00040015,0x00000006,0x00000020,0x00000000,0x00040020,0x00000007,0x00000007,0x00000006, 0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000000,
0x00040021,0x00000008,0x00000006,0x00000007,0x00060021,0x0000000c,0x00000002,0x00000007, 0x00040020,0x00000007,0x00000007,0x00000006,0x00040021,0x00000008,0x00000006,0x00000007,
0x00000007,0x00000007,0x0006001e,0x00000014,0x00000006,0x00000006,0x00000006,0x00000006, 0x00060021,0x0000000c,0x00000002,0x00000007,0x00000007,0x00000007,0x0006001e,0x00000014,
0x00040020,0x00000015,0x00000009,0x00000014,0x0004003b,0x00000015,0x00000016,0x00000009, 0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000015,0x00000009,0x00000014,
0x00040015,0x00000017,0x00000020,0x00000001,0x0004002b,0x00000017,0x00000018,0x00000000, 0x0004003b,0x00000015,0x00000016,0x00000009,0x00040015,0x00000017,0x00000020,0x00000001,
0x00040020,0x00000019,0x00000009,0x00000006,0x0003001d,0x0000001e,0x00000006,0x0003001e, 0x0004002b,0x00000017,0x00000018,0x00000000,0x00040020,0x00000019,0x00000009,0x00000006,
0x0000001f,0x0000001e,0x00040020,0x00000020,0x00000002,0x0000001f,0x0004003b,0x00000020, 0x0003001d,0x0000001e,0x00000006,0x0003001e,0x0000001f,0x0000001e,0x00040020,0x00000020,
0x00000021,0x00000002,0x0004002b,0x00000017,0x00000023,0x00000002,0x00040020,0x00000025, 0x00000002,0x0000001f,0x0004003b,0x00000020,0x00000021,0x00000002,0x0004002b,0x00000017,
0x00000002,0x00000006,0x0004002b,0x00000006,0x0000002a,0x00000003,0x0004002b,0x00000017, 0x00000023,0x00000002,0x00040020,0x00000025,0x00000002,0x00000006,0x0004002b,0x00000006,
0x0000002e,0x00000003,0x0004002b,0x00000006,0x00000031,0x000000ff,0x0004002b,0x00000017, 0x0000002a,0x00000003,0x0004002b,0x00000017,0x0000002f,0x00000003,0x0004002b,0x00000006,
0x00000037,0x00000004,0x00040017,0x0000003d,0x00000006,0x00000003,0x00040020,0x0000003e, 0x00000032,0x000000ff,0x0004002b,0x00000017,0x00000039,0x00000004,0x00040017,0x0000003f,
0x00000001,0x0000003d,0x0004003b,0x0000003e,0x0000003f,0x00000001,0x0004002b,0x00000006, 0x00000006,0x00000003,0x00040020,0x00000040,0x00000001,0x0000003f,0x0004003b,0x00000040,
0x00000040,0x00000000,0x00040020,0x00000041,0x00000001,0x00000006,0x0004002b,0x00000017, 0x00000041,0x00000001,0x0004002b,0x00000006,0x00000042,0x00000000,0x00040020,0x00000043,
0x00000044,0x00000001,0x00020014,0x00000049,0x0004002b,0x00000006,0x0000005b,0x00000001, 0x00000001,0x00000006,0x0004002b,0x00000017,0x00000046,0x00000001,0x00020014,0x0000004b,
0x0003001d,0x0000006e,0x00000006,0x0003001e,0x0000006f,0x0000006e,0x00040020,0x00000070, 0x0004002b,0x00000006,0x0000005d,0x00000001,0x0003001d,0x00000070,0x00000006,0x0003001e,
0x00000002,0x0000006f,0x0004003b,0x00000070,0x00000071,0x00000002,0x0004002b,0x00000006, 0x00000071,0x00000070,0x00040020,0x00000072,0x00000002,0x00000071,0x0004003b,0x00000072,
0x00000079,0x00000040,0x0006002c,0x0000003d,0x0000007a,0x00000079,0x0000005b,0x0000005b, 0x00000073,0x00000002,0x0004002b,0x00000006,0x0000007b,0x00000040,0x0006002c,0x0000003f,
0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b, 0x0000007c,0x0000007b,0x0000005d,0x0000005d,0x00050036,0x00000002,0x00000004,0x00000000,
0x00000007,0x0000003c,0x00000007,0x0004003b,0x00000007,0x0000004e,0x00000007,0x0004003b, 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x0000003e,0x00000007,0x0004003b,
0x00000007,0x0000004f,0x00000007,0x0004003b,0x00000007,0x00000050,0x00000007,0x0004003b, 0x00000007,0x00000050,0x00000007,0x0004003b,0x00000007,0x00000051,0x00000007,0x0004003b,
0x00000007,0x00000053,0x00000007,0x0004003b,0x00000007,0x00000055,0x00000007,0x0004003b, 0x00000007,0x00000052,0x00000007,0x0004003b,0x00000007,0x00000055,0x00000007,0x0004003b,
0x00000007,0x00000056,0x00000007,0x0004003b,0x00000007,0x00000062,0x00000007,0x0004003b, 0x00000007,0x00000057,0x00000007,0x0004003b,0x00000007,0x00000058,0x00000007,0x0004003b,
0x00000007,0x00000065,0x00000007,0x0004003b,0x00000007,0x00000067,0x00000007,0x0004003b, 0x00000007,0x00000064,0x00000007,0x0004003b,0x00000007,0x00000067,0x00000007,0x0004003b,
0x00000007,0x00000069,0x00000007,0x0004003b,0x00000007,0x0000006a,0x00000007,0x00050041, 0x00000007,0x00000069,0x00000007,0x0004003b,0x00000007,0x0000006b,0x00000007,0x0004003b,
0x00000041,0x00000042,0x0000003f,0x00000040,0x0004003d,0x00000006,0x00000043,0x00000042, 0x00000007,0x0000006c,0x00000007,0x00050041,0x00000043,0x00000044,0x00000041,0x00000042,
0x000500c4,0x00000006,0x00000045,0x00000043,0x00000044,0x0003003e,0x0000003c,0x00000045, 0x0004003d,0x00000006,0x00000045,0x00000044,0x000500c4,0x00000006,0x00000047,0x00000045,
0x0004003d,0x00000006,0x00000046,0x0000003c,0x00050041,0x00000019,0x00000047,0x00000016, 0x00000046,0x0003003e,0x0000003e,0x00000047,0x0004003d,0x00000006,0x00000048,0x0000003e,
0x00000023,0x0004003d,0x00000006,0x00000048,0x00000047,0x000500ae,0x00000049,0x0000004a, 0x00050041,0x00000019,0x00000049,0x00000016,0x00000023,0x0004003d,0x00000006,0x0000004a,
0x00000046,0x00000048,0x000300f7,0x0000004c,0x00000000,0x000400fa,0x0000004a,0x0000004b, 0x00000049,0x000500ae,0x0000004b,0x0000004c,0x00000048,0x0000004a,0x000300f7,0x0000004e,
0x0000004c,0x000200f8,0x0000004b,0x000100fd,0x000200f8,0x0000004c,0x0003003e,0x0000004e, 0x00000000,0x000400fa,0x0000004c,0x0000004d,0x0000004e,0x000200f8,0x0000004d,0x000100fd,
0x00000040,0x0004003d,0x00000006,0x00000051,0x0000003c,0x0003003e,0x00000050,0x00000051, 0x000200f8,0x0000004e,0x0003003e,0x00000050,0x00000042,0x0004003d,0x00000006,0x00000053,
0x00050039,0x00000006,0x00000052,0x0000000a,0x00000050,0x0003003e,0x0000004f,0x00000052, 0x0000003e,0x0003003e,0x00000052,0x00000053,0x00050039,0x00000006,0x00000054,0x0000000a,
0x0004003d,0x00000006,0x00000054,0x0000004f,0x0003003e,0x00000053,0x00000054,0x0003003e, 0x00000052,0x0003003e,0x00000051,0x00000054,0x0004003d,0x00000006,0x00000056,0x00000051,
0x00000055,0x00000040,0x0004003d,0x00000006,0x00000057,0x0000004e,0x0003003e,0x00000056, 0x0003003e,0x00000055,0x00000056,0x0003003e,0x00000057,0x00000042,0x0004003d,0x00000006,
0x00000057,0x00070039,0x00000002,0x00000058,0x00000010,0x00000053,0x00000055,0x00000056, 0x00000059,0x00000050,0x0003003e,0x00000058,0x00000059,0x00070039,0x00000002,0x0000005a,
0x0004003d,0x00000006,0x00000059,0x00000056,0x0003003e,0x0000004e,0x00000059,0x0004003d, 0x00000010,0x00000055,0x00000057,0x00000058,0x0004003d,0x00000006,0x0000005b,0x00000058,
0x00000006,0x0000005a,0x0000003c,0x00050080,0x00000006,0x0000005c,0x0000005a,0x0000005b, 0x0003003e,0x00000050,0x0000005b,0x0004003d,0x00000006,0x0000005c,0x0000003e,0x00050080,
0x00050041,0x00000019,0x0000005d,0x00000016,0x00000023,0x0004003d,0x00000006,0x0000005e, 0x00000006,0x0000005e,0x0000005c,0x0000005d,0x00050041,0x00000019,0x0000005f,0x00000016,
0x0000005d,0x000500b0,0x00000049,0x0000005f,0x0000005c,0x0000005e,0x000300f7,0x00000061, 0x00000023,0x0004003d,0x00000006,0x00000060,0x0000005f,0x000500b0,0x0000004b,0x00000061,
0x00000000,0x000400fa,0x0000005f,0x00000060,0x00000061,0x000200f8,0x00000060,0x0004003d, 0x0000005e,0x00000060,0x000300f7,0x00000063,0x00000000,0x000400fa,0x00000061,0x00000062,
0x00000006,0x00000063,0x0000003c,0x00050080,0x00000006,0x00000064,0x00000063,0x0000005b, 0x00000063,0x000200f8,0x00000062,0x0004003d,0x00000006,0x00000065,0x0000003e,0x00050080,
0x0003003e,0x00000065,0x00000064,0x00050039,0x00000006,0x00000066,0x0000000a,0x00000065, 0x00000006,0x00000066,0x00000065,0x0000005d,0x0003003e,0x00000067,0x00000066,0x00050039,
0x0003003e,0x00000062,0x00000066,0x0004003d,0x00000006,0x00000068,0x00000062,0x0003003e, 0x00000006,0x00000068,0x0000000a,0x00000067,0x0003003e,0x00000064,0x00000068,0x0004003d,
0x00000067,0x00000068,0x0003003e,0x00000069,0x0000005b,0x0004003d,0x00000006,0x0000006b, 0x00000006,0x0000006a,0x00000064,0x0003003e,0x00000069,0x0000006a,0x0003003e,0x0000006b,
0x0000004e,0x0003003e,0x0000006a,0x0000006b,0x00070039,0x00000002,0x0000006c,0x00000010, 0x0000005d,0x0004003d,0x00000006,0x0000006d,0x00000050,0x0003003e,0x0000006c,0x0000006d,
0x00000067,0x00000069,0x0000006a,0x0004003d,0x00000006,0x0000006d,0x0000006a,0x0003003e, 0x00070039,0x00000002,0x0000006e,0x00000010,0x00000069,0x0000006b,0x0000006c,0x0004003d,
0x0000004e,0x0000006d,0x000200f9,0x00000061,0x000200f8,0x00000061,0x00050041,0x00000019, 0x00000006,0x0000006f,0x0000006c,0x0003003e,0x00000050,0x0000006f,0x000200f9,0x00000063,
0x00000072,0x00000016,0x00000044,0x0004003d,0x00000006,0x00000073,0x00000072,0x00050041, 0x000200f8,0x00000063,0x00050041,0x00000019,0x00000074,0x00000016,0x00000046,0x0004003d,
0x00000041,0x00000074,0x0000003f,0x00000040,0x0004003d,0x00000006,0x00000075,0x00000074, 0x00000006,0x00000075,0x00000074,0x00050041,0x00000043,0x00000076,0x00000041,0x00000042,
0x00050080,0x00000006,0x00000076,0x00000073,0x00000075,0x0004003d,0x00000006,0x00000077, 0x0004003d,0x00000006,0x00000077,0x00000076,0x00050080,0x00000006,0x00000078,0x00000075,
0x0000004e,0x00060041,0x00000025,0x00000078,0x00000071,0x00000018,0x00000076,0x0003003e, 0x00000077,0x0004003d,0x00000006,0x00000079,0x00000050,0x00060041,0x00000025,0x0000007a,
0x00000078,0x00000077,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000a,0x00000000, 0x00000073,0x00000018,0x00000078,0x0003003e,0x0000007a,0x00000079,0x000100fd,0x00010038,
0x00000008,0x00030037,0x00000007,0x00000009,0x000200f8,0x0000000b,0x0004003b,0x00000007, 0x00050036,0x00000006,0x0000000a,0x00000000,0x00000008,0x00030037,0x00000007,0x00000009,
0x00000012,0x00000007,0x0004003b,0x00000007,0x0000001d,0x00000007,0x0004003b,0x00000007, 0x000200f8,0x0000000b,0x0004003b,0x00000007,0x00000012,0x00000007,0x0004003b,0x00000007,
0x00000028,0x00000007,0x0004003d,0x00000006,0x00000013,0x00000009,0x00050041,0x00000019, 0x0000001d,0x00000007,0x0004003b,0x00000007,0x00000028,0x00000007,0x0004003b,0x00000007,
0x0000002c,0x00000007,0x0004003d,0x00000006,0x00000013,0x00000009,0x00050041,0x00000019,
0x0000001a,0x00000016,0x00000018,0x0004003d,0x00000006,0x0000001b,0x0000001a,0x00050080, 0x0000001a,0x00000016,0x00000018,0x0004003d,0x00000006,0x0000001b,0x0000001a,0x00050080,
0x00000006,0x0000001c,0x00000013,0x0000001b,0x0003003e,0x00000012,0x0000001c,0x0004003d, 0x00000006,0x0000001c,0x00000013,0x0000001b,0x0003003e,0x00000012,0x0000001c,0x0004003d,
0x00000006,0x00000022,0x00000012,0x000500c2,0x00000006,0x00000024,0x00000022,0x00000023, 0x00000006,0x00000022,0x00000012,0x000500c2,0x00000006,0x00000024,0x00000022,0x00000023,
0x00060041,0x00000025,0x00000026,0x00000021,0x00000018,0x00000024,0x0004003d,0x00000006, 0x00060041,0x00000025,0x00000026,0x00000021,0x00000018,0x00000024,0x0004003d,0x00000006,
0x00000027,0x00000026,0x0003003e,0x0000001d,0x00000027,0x0004003d,0x00000006,0x00000029, 0x00000027,0x00000026,0x0003003e,0x0000001d,0x00000027,0x0004003d,0x00000006,0x00000029,
0x00000012,0x000500c7,0x00000006,0x0000002b,0x00000029,0x0000002a,0x0003003e,0x00000028, 0x00000012,0x000500c7,0x00000006,0x0000002b,0x00000029,0x0000002a,0x0003003e,0x00000028,
0x0000002b,0x0004003d,0x00000006,0x0000002c,0x0000001d,0x0004003d,0x00000006,0x0000002d, 0x0000002b,0x0004003d,0x00000006,0x0000002d,0x0000001d,0x0004003d,0x00000006,0x0000002e,
0x00000028,0x000500c4,0x00000006,0x0000002f,0x0000002d,0x0000002e,0x000500c2,0x00000006, 0x00000028,0x000500c4,0x00000006,0x00000030,0x0000002e,0x0000002f,0x000500c2,0x00000006,
0x00000030,0x0000002c,0x0000002f,0x000500c7,0x00000006,0x00000032,0x00000030,0x00000031, 0x00000031,0x0000002d,0x00000030,0x000500c7,0x00000006,0x00000033,0x00000031,0x00000032,
0x000200fe,0x00000032,0x00010038,0x00050036,0x00000002,0x00000010,0x00000000,0x0000000c, 0x0003003e,0x0000002c,0x00000033,0x0004003d,0x00000006,0x00000034,0x0000002c,0x000200fe,
0x00030037,0x00000007,0x0000000d,0x00030037,0x00000007,0x0000000e,0x00030037,0x00000007, 0x00000034,0x00010038,0x00050036,0x00000002,0x00000010,0x00000000,0x0000000c,0x00030037,
0x0000000f,0x000200f8,0x00000011,0x0004003d,0x00000006,0x00000035,0x0000000d,0x0004003d, 0x00000007,0x0000000d,0x00030037,0x00000007,0x0000000e,0x00030037,0x00000007,0x0000000f,
0x00000006,0x00000036,0x0000000e,0x000500c4,0x00000006,0x00000038,0x00000036,0x00000037, 0x000200f8,0x00000011,0x0004003d,0x00000006,0x00000037,0x0000000d,0x0004003d,0x00000006,
0x000500c4,0x00000006,0x00000039,0x00000035,0x00000038,0x0004003d,0x00000006,0x0000003a, 0x00000038,0x0000000e,0x000500c4,0x00000006,0x0000003a,0x00000038,0x00000039,0x000500c4,
0x0000000f,0x000500c5,0x00000006,0x0000003b,0x0000003a,0x00000039,0x0003003e,0x0000000f, 0x00000006,0x0000003b,0x00000037,0x0000003a,0x0004003d,0x00000006,0x0000003c,0x0000000f,
0x0000003b,0x000100fd,0x00010038 0x000500c5,0x00000006,0x0000003d,0x0000003c,0x0000003b,0x0003003e,0x0000000f,0x0000003d,
0x000100fd,0x00010038
}; };
#if 0 // Generated from: #if 0 // Generated from:
...@@ -144,7 +146,9 @@ uint PullIndex(uint index) ...@@ -144,7 +146,9 @@ uint PullIndex(uint index)
uint srcBlock = srcData[srcIndex >> 2]; uint srcBlock = srcData[srcIndex >> 2];
uint srcComponent =(srcIndex & 3); uint srcComponent =(srcIndex & 3);
return(srcBlock >>(srcComponent << 3))& 0xFF; uint value =(srcBlock >>(srcComponent << 3))& 0xFF;
return value;
} }
void PackIndexValue(uint srcValue, uint indexIndex, inout uint dstValue) void PackIndexValue(uint srcValue, uint indexIndex, inout uint dstValue)
......
// 7.12.3226
#pragma once
const uint32_t kConvertIndex_comp_00000001[] = {
0x07230203,0x00010000,0x00080007,0x00000082,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000047,0x00060010,0x00000004,
0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005,
0x00000004,0x6e69616d,0x00000000,0x00060005,0x0000000a,0x6c6c7550,0x65646e49,0x31752878,
0x0000003b,0x00040005,0x00000009,0x65646e69,0x00000078,0x00090005,0x00000010,0x6b636150,
0x65646e49,0x6c615678,0x75286575,0x31753b31,0x3b31753b,0x00000000,0x00050005,0x0000000d,
0x56637273,0x65756c61,0x00000000,0x00050005,0x0000000e,0x65646e69,0x646e4978,0x00007865,
0x00050005,0x0000000f,0x56747364,0x65756c61,0x00000000,0x00050005,0x00000012,0x49637273,
0x7865646e,0x00000000,0x00060005,0x00000014,0x68737550,0x736e6f43,0x746e6174,0x00000073,
0x00060006,0x00000014,0x00000000,0x4f637273,0x65736666,0x00000074,0x00070006,0x00000014,
0x00000001,0x4f747364,0x65736666,0x76694474,0x00000034,0x00060006,0x00000014,0x00000002,
0x4978616d,0x7865646e,0x00000000,0x00060006,0x00000014,0x00000003,0x6461705f,0x676e6964,
0x00000000,0x00030005,0x00000016,0x00000000,0x00050005,0x0000001d,0x42637273,0x6b636f6c,
0x00000000,0x00030005,0x0000001f,0x00637273,0x00050006,0x0000001f,0x00000000,0x44637273,
0x00617461,0x00030005,0x00000021,0x00000000,0x00060005,0x00000028,0x43637273,0x6f706d6f,
0x746e656e,0x00000000,0x00040005,0x0000002c,0x756c6176,0x00000065,0x00040005,0x00000044,
0x65646e69,0x00000078,0x00080005,0x00000047,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,
0x496e6f69,0x00000044,0x00050005,0x00000055,0x56747364,0x65756c61,0x00000000,0x00050005,
0x00000056,0x56637273,0x65756c61,0x00000000,0x00040005,0x00000057,0x61726170,0x0000006d,
0x00040005,0x0000005a,0x61726170,0x0000006d,0x00040005,0x0000005c,0x61726170,0x0000006d,
0x00040005,0x0000005d,0x61726170,0x0000006d,0x00050005,0x00000069,0x56637273,0x65756c61,
0x00000000,0x00040005,0x0000006c,0x61726170,0x0000006d,0x00040005,0x0000006e,0x61726170,
0x0000006d,0x00040005,0x00000070,0x61726170,0x0000006d,0x00040005,0x00000071,0x61726170,
0x0000006d,0x00030005,0x00000076,0x00747364,0x00050006,0x00000076,0x00000000,0x44747364,
0x00617461,0x00030005,0x00000078,0x00000000,0x00050048,0x00000014,0x00000000,0x00000023,
0x00000000,0x00050048,0x00000014,0x00000001,0x00000023,0x00000004,0x00050048,0x00000014,
0x00000002,0x00000023,0x00000008,0x00050048,0x00000014,0x00000003,0x00000023,0x0000000c,
0x00030047,0x00000014,0x00000002,0x00040047,0x0000001e,0x00000006,0x00000004,0x00040048,
0x0000001f,0x00000000,0x00000018,0x00050048,0x0000001f,0x00000000,0x00000023,0x00000000,
0x00030047,0x0000001f,0x00000003,0x00040047,0x00000021,0x00000022,0x00000000,0x00040047,
0x00000021,0x00000021,0x00000001,0x00040047,0x00000047,0x0000000b,0x0000001c,0x00040047,
0x00000075,0x00000006,0x00000004,0x00050048,0x00000076,0x00000000,0x00000023,0x00000000,
0x00030047,0x00000076,0x00000003,0x00040047,0x00000078,0x00000022,0x00000000,0x00040047,
0x00000078,0x00000021,0x00000000,0x00040047,0x00000081,0x0000000b,0x00000019,0x00020013,
0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000000,
0x00040020,0x00000007,0x00000007,0x00000006,0x00040021,0x00000008,0x00000006,0x00000007,
0x00060021,0x0000000c,0x00000002,0x00000007,0x00000007,0x00000007,0x0006001e,0x00000014,
0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000015,0x00000009,0x00000014,
0x0004003b,0x00000015,0x00000016,0x00000009,0x00040015,0x00000017,0x00000020,0x00000001,
0x0004002b,0x00000017,0x00000018,0x00000000,0x00040020,0x00000019,0x00000009,0x00000006,
0x0003001d,0x0000001e,0x00000006,0x0003001e,0x0000001f,0x0000001e,0x00040020,0x00000020,
0x00000002,0x0000001f,0x0004003b,0x00000020,0x00000021,0x00000002,0x0004002b,0x00000017,
0x00000023,0x00000002,0x00040020,0x00000025,0x00000002,0x00000006,0x0004002b,0x00000006,
0x0000002a,0x00000003,0x0004002b,0x00000017,0x0000002f,0x00000003,0x0004002b,0x00000006,
0x00000032,0x000000ff,0x00020014,0x00000035,0x0004002b,0x00000006,0x00000039,0x0000ffff,
0x0004002b,0x00000017,0x0000003f,0x00000004,0x00040017,0x00000045,0x00000006,0x00000003,
0x00040020,0x00000046,0x00000001,0x00000045,0x0004003b,0x00000046,0x00000047,0x00000001,
0x0004002b,0x00000006,0x00000048,0x00000000,0x00040020,0x00000049,0x00000001,0x00000006,
0x0004002b,0x00000017,0x0000004c,0x00000001,0x0004002b,0x00000006,0x00000062,0x00000001,
0x0003001d,0x00000075,0x00000006,0x0003001e,0x00000076,0x00000075,0x00040020,0x00000077,
0x00000002,0x00000076,0x0004003b,0x00000077,0x00000078,0x00000002,0x0004002b,0x00000006,
0x00000080,0x00000040,0x0006002c,0x00000045,0x00000081,0x00000080,0x00000062,0x00000062,
0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
0x00000007,0x00000044,0x00000007,0x0004003b,0x00000007,0x00000055,0x00000007,0x0004003b,
0x00000007,0x00000056,0x00000007,0x0004003b,0x00000007,0x00000057,0x00000007,0x0004003b,
0x00000007,0x0000005a,0x00000007,0x0004003b,0x00000007,0x0000005c,0x00000007,0x0004003b,
0x00000007,0x0000005d,0x00000007,0x0004003b,0x00000007,0x00000069,0x00000007,0x0004003b,
0x00000007,0x0000006c,0x00000007,0x0004003b,0x00000007,0x0000006e,0x00000007,0x0004003b,
0x00000007,0x00000070,0x00000007,0x0004003b,0x00000007,0x00000071,0x00000007,0x00050041,
0x00000049,0x0000004a,0x00000047,0x00000048,0x0004003d,0x00000006,0x0000004b,0x0000004a,
0x000500c4,0x00000006,0x0000004d,0x0000004b,0x0000004c,0x0003003e,0x00000044,0x0000004d,
0x0004003d,0x00000006,0x0000004e,0x00000044,0x00050041,0x00000019,0x0000004f,0x00000016,
0x00000023,0x0004003d,0x00000006,0x00000050,0x0000004f,0x000500ae,0x00000035,0x00000051,
0x0000004e,0x00000050,0x000300f7,0x00000053,0x00000000,0x000400fa,0x00000051,0x00000052,
0x00000053,0x000200f8,0x00000052,0x000100fd,0x000200f8,0x00000053,0x0003003e,0x00000055,
0x00000048,0x0004003d,0x00000006,0x00000058,0x00000044,0x0003003e,0x00000057,0x00000058,
0x00050039,0x00000006,0x00000059,0x0000000a,0x00000057,0x0003003e,0x00000056,0x00000059,
0x0004003d,0x00000006,0x0000005b,0x00000056,0x0003003e,0x0000005a,0x0000005b,0x0003003e,
0x0000005c,0x00000048,0x0004003d,0x00000006,0x0000005e,0x00000055,0x0003003e,0x0000005d,
0x0000005e,0x00070039,0x00000002,0x0000005f,0x00000010,0x0000005a,0x0000005c,0x0000005d,
0x0004003d,0x00000006,0x00000060,0x0000005d,0x0003003e,0x00000055,0x00000060,0x0004003d,
0x00000006,0x00000061,0x00000044,0x00050080,0x00000006,0x00000063,0x00000061,0x00000062,
0x00050041,0x00000019,0x00000064,0x00000016,0x00000023,0x0004003d,0x00000006,0x00000065,
0x00000064,0x000500b0,0x00000035,0x00000066,0x00000063,0x00000065,0x000300f7,0x00000068,
0x00000000,0x000400fa,0x00000066,0x00000067,0x00000068,0x000200f8,0x00000067,0x0004003d,
0x00000006,0x0000006a,0x00000044,0x00050080,0x00000006,0x0000006b,0x0000006a,0x00000062,
0x0003003e,0x0000006c,0x0000006b,0x00050039,0x00000006,0x0000006d,0x0000000a,0x0000006c,
0x0003003e,0x00000069,0x0000006d,0x0004003d,0x00000006,0x0000006f,0x00000069,0x0003003e,
0x0000006e,0x0000006f,0x0003003e,0x00000070,0x00000062,0x0004003d,0x00000006,0x00000072,
0x00000055,0x0003003e,0x00000071,0x00000072,0x00070039,0x00000002,0x00000073,0x00000010,
0x0000006e,0x00000070,0x00000071,0x0004003d,0x00000006,0x00000074,0x00000071,0x0003003e,
0x00000055,0x00000074,0x000200f9,0x00000068,0x000200f8,0x00000068,0x00050041,0x00000019,
0x00000079,0x00000016,0x0000004c,0x0004003d,0x00000006,0x0000007a,0x00000079,0x00050041,
0x00000049,0x0000007b,0x00000047,0x00000048,0x0004003d,0x00000006,0x0000007c,0x0000007b,
0x00050080,0x00000006,0x0000007d,0x0000007a,0x0000007c,0x0004003d,0x00000006,0x0000007e,
0x00000055,0x00060041,0x00000025,0x0000007f,0x00000078,0x00000018,0x0000007d,0x0003003e,
0x0000007f,0x0000007e,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000a,0x00000000,
0x00000008,0x00030037,0x00000007,0x00000009,0x000200f8,0x0000000b,0x0004003b,0x00000007,
0x00000012,0x00000007,0x0004003b,0x00000007,0x0000001d,0x00000007,0x0004003b,0x00000007,
0x00000028,0x00000007,0x0004003b,0x00000007,0x0000002c,0x00000007,0x0004003d,0x00000006,
0x00000013,0x00000009,0x00050041,0x00000019,0x0000001a,0x00000016,0x00000018,0x0004003d,
0x00000006,0x0000001b,0x0000001a,0x00050080,0x00000006,0x0000001c,0x00000013,0x0000001b,
0x0003003e,0x00000012,0x0000001c,0x0004003d,0x00000006,0x00000022,0x00000012,0x000500c2,
0x00000006,0x00000024,0x00000022,0x00000023,0x00060041,0x00000025,0x00000026,0x00000021,
0x00000018,0x00000024,0x0004003d,0x00000006,0x00000027,0x00000026,0x0003003e,0x0000001d,
0x00000027,0x0004003d,0x00000006,0x00000029,0x00000012,0x000500c7,0x00000006,0x0000002b,
0x00000029,0x0000002a,0x0003003e,0x00000028,0x0000002b,0x0004003d,0x00000006,0x0000002d,
0x0000001d,0x0004003d,0x00000006,0x0000002e,0x00000028,0x000500c4,0x00000006,0x00000030,
0x0000002e,0x0000002f,0x000500c2,0x00000006,0x00000031,0x0000002d,0x00000030,0x000500c7,
0x00000006,0x00000033,0x00000031,0x00000032,0x0003003e,0x0000002c,0x00000033,0x0004003d,
0x00000006,0x00000034,0x0000002c,0x000500aa,0x00000035,0x00000036,0x00000034,0x00000032,
0x000300f7,0x00000038,0x00000000,0x000400fa,0x00000036,0x00000037,0x00000038,0x000200f8,
0x00000037,0x0003003e,0x0000002c,0x00000039,0x000200f9,0x00000038,0x000200f8,0x00000038,
0x0004003d,0x00000006,0x0000003a,0x0000002c,0x000200fe,0x0000003a,0x00010038,0x00050036,
0x00000002,0x00000010,0x00000000,0x0000000c,0x00030037,0x00000007,0x0000000d,0x00030037,
0x00000007,0x0000000e,0x00030037,0x00000007,0x0000000f,0x000200f8,0x00000011,0x0004003d,
0x00000006,0x0000003d,0x0000000d,0x0004003d,0x00000006,0x0000003e,0x0000000e,0x000500c4,
0x00000006,0x00000040,0x0000003e,0x0000003f,0x000500c4,0x00000006,0x00000041,0x0000003d,
0x00000040,0x0004003d,0x00000006,0x00000042,0x0000000f,0x000500c5,0x00000006,0x00000043,
0x00000042,0x00000041,0x0003003e,0x0000000f,0x00000043,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0)buffer dst
{
uint dstData[];
};
layout(set = 0, binding = 1)readonly buffer src
{
uint srcData[];
};
layout(push_constant)uniform PushConstants
{
uint srcOffset;
uint dstOffsetDiv4;
uint maxIndex;
uint _padding;
};
uint PullIndex(uint index)
{
uint srcIndex = index + srcOffset;
uint srcBlock = srcData[srcIndex >> 2];
uint srcComponent =(srcIndex & 3);
uint value =(srcBlock >>(srcComponent << 3))& 0xFF;
if(value == 0xFF)
value = 0xFFFF;
return value;
}
void PackIndexValue(uint srcValue, uint indexIndex, inout uint dstValue)
{
dstValue |= srcValue <<(indexIndex << 4);
}
void main()
{
uint index =(gl_GlobalInvocationID . x << 1);
if(index >= maxIndex)
return;
uint dstValue = 0;
uint srcValue = PullIndex(index);
PackIndexValue(srcValue, 0, dstValue);
if(index + 1 < maxIndex)
{
uint srcValue = PullIndex(index + 1);
PackIndexValue(srcValue, 1, dstValue);
}
dstData[dstOffsetDiv4 + gl_GlobalInvocationID . x]= dstValue;
}
#endif // Preprocessed code
...@@ -7,7 +7,9 @@ ...@@ -7,7 +7,9 @@
// //
// The following defines tweak the functionality, and a different shader is built based on these. // The following defines tweak the functionality, and a different shader is built based on these.
// //
// (Currently no parameters) // - Flags:
// * IsPrimitiveRestartEnabled: enables conversion from 0xFF to 0xFFFF,
// the restart indices for 8-bit and 16-bit indices.
// //
#version 450 core #version 450 core
...@@ -34,7 +36,7 @@ layout (push_constant) uniform PushConstants ...@@ -34,7 +36,7 @@ layout (push_constant) uniform PushConstants
uint dstOffsetDiv4; uint dstOffsetDiv4;
// Maximum size of the read buffer. The highest index value we will convert. // Maximum size of the read buffer. The highest index value we will convert.
uint maxIndex; uint maxIndex;
// Not used in the shader. Kept to pad "PushContants" to the size of a vec4. // Not used in the shader. Kept to pad "PushConstants" to the size of a vec4.
uint _padding; uint _padding;
}; };
...@@ -44,7 +46,14 @@ uint PullIndex(uint index) ...@@ -44,7 +46,14 @@ uint PullIndex(uint index)
uint srcBlock = srcData[srcIndex >> 2]; uint srcBlock = srcData[srcIndex >> 2];
uint srcComponent = (srcIndex & 3); uint srcComponent = (srcIndex & 3);
return (srcBlock >> (srcComponent << 3)) & 0xFF; uint value = (srcBlock >> (srcComponent << 3)) & 0xFF;
#if IsPrimitiveRestartEnabled
// convert 0xFF (restart value for 8-bit indices)
// to 0xFFFF (restart value for 16-bit indices).
if (value == 0xFF)
value = 0xFFFF;
#endif
return value;
} }
void PackIndexValue(uint srcValue, uint indexIndex, inout uint dstValue) void PackIndexValue(uint srcValue, uint indexIndex, inout uint dstValue)
...@@ -53,9 +62,6 @@ void PackIndexValue(uint srcValue, uint indexIndex, inout uint dstValue) ...@@ -53,9 +62,6 @@ void PackIndexValue(uint srcValue, uint indexIndex, inout uint dstValue)
dstValue |= srcValue << (indexIndex << 4); dstValue |= srcValue << (indexIndex << 4);
} }
// Note: Once support for primitive restart is added, the shader needs to
// convert 0xFF -> 0xFFFF. http://anglebug.com/3215
void main() void main()
{ {
// The element index is simply the invocation ID times two. // The element index is simply the invocation ID times two.
......
...@@ -5,5 +5,8 @@ ...@@ -5,5 +5,8 @@
"found in the LICENSE file.", "found in the LICENSE file.",
"", "",
"ConvertIndex.comp.json: Build parameters for ConvertIndex.comp." "ConvertIndex.comp.json: Build parameters for ConvertIndex.comp."
],
"Flags": [
"IsPrimitiveRestartEnabled"
] ]
} }
...@@ -830,6 +830,14 @@ void GraphicsPipelineDesc::updateTopology(GraphicsPipelineTransitionBits *transi ...@@ -830,6 +830,14 @@ void GraphicsPipelineDesc::updateTopology(GraphicsPipelineTransitionBits *transi
transition->set(ANGLE_GET_TRANSITION_BIT(mInputAssemblyAndColorBlendStateInfo, primitive)); transition->set(ANGLE_GET_TRANSITION_BIT(mInputAssemblyAndColorBlendStateInfo, primitive));
} }
void GraphicsPipelineDesc::updatePrimitiveRestartEnabled(GraphicsPipelineTransitionBits *transition,
bool primitiveRestartEnabled)
{
mInputAssemblyAndColorBlendStateInfo.primitive.restartEnable =
static_cast<uint16_t>(primitiveRestartEnabled);
transition->set(ANGLE_GET_TRANSITION_BIT(mInputAssemblyAndColorBlendStateInfo, primitive));
}
void GraphicsPipelineDesc::updateCullMode(GraphicsPipelineTransitionBits *transition, void GraphicsPipelineDesc::updateCullMode(GraphicsPipelineTransitionBits *transition,
const gl::RasterizerState &rasterState) const gl::RasterizerState &rasterState)
{ {
......
...@@ -375,6 +375,8 @@ class GraphicsPipelineDesc final ...@@ -375,6 +375,8 @@ class GraphicsPipelineDesc final
// Input assembly info // Input assembly info
void updateTopology(GraphicsPipelineTransitionBits *transition, gl::PrimitiveMode drawMode); void updateTopology(GraphicsPipelineTransitionBits *transition, gl::PrimitiveMode drawMode);
void updatePrimitiveRestartEnabled(GraphicsPipelineTransitionBits *transition,
bool primitiveRestartEnabled);
// Raster states // Raster states
void updateCullMode(GraphicsPipelineTransitionBits *transition, void updateCullMode(GraphicsPipelineTransitionBits *transition,
......
...@@ -57,6 +57,7 @@ namespace ...@@ -57,6 +57,7 @@ namespace
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000A.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000A.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000B.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000B.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000002.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000002.inc"
...@@ -172,6 +173,7 @@ constexpr ShaderBlob kBufferUtils_comp_shaders[] = { ...@@ -172,6 +173,7 @@ constexpr ShaderBlob kBufferUtils_comp_shaders[] = {
}; };
constexpr ShaderBlob kConvertIndex_comp_shaders[] = { constexpr ShaderBlob kConvertIndex_comp_shaders[] = {
{kConvertIndex_comp_00000000, sizeof(kConvertIndex_comp_00000000)}, {kConvertIndex_comp_00000000, sizeof(kConvertIndex_comp_00000000)},
{kConvertIndex_comp_00000001, sizeof(kConvertIndex_comp_00000001)},
}; };
constexpr ShaderBlob kConvertVertex_comp_shaders[] = { constexpr ShaderBlob kConvertVertex_comp_shaders[] = {
{kConvertVertex_comp_00000000, sizeof(kConvertVertex_comp_00000000)}, {kConvertVertex_comp_00000000, sizeof(kConvertVertex_comp_00000000)},
......
...@@ -50,6 +50,7 @@ angle_vulkan_internal_shaders = [ ...@@ -50,6 +50,7 @@ angle_vulkan_internal_shaders = [
"shaders/gen/BufferUtils.comp.0000000A.inc", "shaders/gen/BufferUtils.comp.0000000A.inc",
"shaders/gen/BufferUtils.comp.0000000B.inc", "shaders/gen/BufferUtils.comp.0000000B.inc",
"shaders/gen/ConvertIndex.comp.00000000.inc", "shaders/gen/ConvertIndex.comp.00000000.inc",
"shaders/gen/ConvertIndex.comp.00000001.inc",
"shaders/gen/ConvertVertex.comp.00000000.inc", "shaders/gen/ConvertVertex.comp.00000000.inc",
"shaders/gen/ConvertVertex.comp.00000001.inc", "shaders/gen/ConvertVertex.comp.00000001.inc",
"shaders/gen/ConvertVertex.comp.00000002.inc", "shaders/gen/ConvertVertex.comp.00000002.inc",
......
...@@ -70,7 +70,11 @@ constexpr size_t kArrayLen = 0x0000000C; ...@@ -70,7 +70,11 @@ constexpr size_t kArrayLen = 0x0000000C;
namespace ConvertIndex_comp namespace ConvertIndex_comp
{ {
constexpr size_t kArrayLen = 0x00000001; enum flags
{
kIsPrimitiveRestartEnabled = 0x00000001,
};
constexpr size_t kArrayLen = 0x00000002;
} // namespace ConvertIndex_comp } // namespace ConvertIndex_comp
namespace ConvertVertex_comp namespace ConvertVertex_comp
......
...@@ -657,8 +657,15 @@ ...@@ -657,8 +657,15 @@
// - FramebufferVk::invalidate*: // - FramebufferVk::invalidate*:
2950 VULKAN : dEQP-GLES3.functional.fbo.invalidate.* = SKIP 2950 VULKAN : dEQP-GLES3.functional.fbo.invalidate.* = SKIP
// - Primitive restart: // - Primitive restart with line loops:
2950 VULKAN : dEQP-GLES3.functional.primitive_restart.* = SKIP 3215 VULKAN : dEQP-GLES3.functional.primitive_restart.basic.line_loop.* = SKIP
3215 VULKAN : dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.* = SKIP
3215 VULKAN : dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.* = SKIP
3215 VULKAN : dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.* = SKIP
3215 VULKAN : dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.* = SKIP
3215 VULKAN : dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.* = SKIP
3215 VULKAN : dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.* = SKIP
3215 VULKAN : dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.* = SKIP
// - BufferVk::copySubData: // - BufferVk::copySubData:
2950 VULKAN : dEQP-GLES3.functional.negative_api.buffer.copy_buffer_sub_data = SKIP 2950 VULKAN : dEQP-GLES3.functional.negative_api.buffer.copy_buffer_sub_data = SKIP
......
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