Commit 765ee7b7 by James Dong Committed by Commit Bot

Vulkan: support for new vertex attribs in GLES 3.0

Fixes handling of packed vertex formats, adds new overrides for 32-bit [SU](NORM|SCALED) vertex types, and handles half-precision floats correctly. Pixel 2 does not natively support certain 10-10-10-2 vertex formats; this change does not add support for them. Test: ./angle_deqp_gles3_no_gtest --deqp-egl-display-type=angle-vulkan -n 'dEQP-GLES3.functional.vertex_arrays.*' Test: ./angle_end2end_tests --gtest_filter='AttributeLayout*/ES3_Vulkan' Test: ./angle_end2end_tests --gtest_filter='VertexAttribute*/ES3_Vulkan' Bug: angleproject:3193 Change-Id: I5ae4edd743e86e3e89e2697034c04dc4d9ecd1f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1668230Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarTim Van Patten <timvp@google.com> Commit-Queue: James Dong <dongja@google.com>
parent 86a28b3d
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"src/libANGLE/renderer/Format_table_autogen.cpp": "src/libANGLE/renderer/Format_table_autogen.cpp":
"d696378917e290bc41487a7e2311d555", "d696378917e290bc41487a7e2311d555",
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844", "ad11fef24bece29edfa62bcd2edff788",
"src/libANGLE/renderer/angle_format_data.json": "src/libANGLE/renderer/angle_format_data.json":
"e39704d451d108335e737c39ad423113", "e39704d451d108335e737c39ad423113",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
......
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844", "ad11fef24bece29edfa62bcd2edff788",
"src/libANGLE/renderer/d3d/d3d11/gen_texture_format_table.py": "src/libANGLE/renderer/d3d/d3d11/gen_texture_format_table.py":
"bf11e3404d4622059b6e9c4e96abf95e", "bf11e3404d4622059b6e9c4e96abf95e",
"src/libANGLE/renderer/d3d/d3d11/texture_format_data.json": "src/libANGLE/renderer/d3d/d3d11/texture_format_data.json":
......
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844", "ad11fef24bece29edfa62bcd2edff788",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"947fe0a2c3ca1a819a68b4a94bfcf614", "947fe0a2c3ca1a819a68b4a94bfcf614",
"src/libANGLE/renderer/d3d/d3d11/dxgi_format_data.json": "src/libANGLE/renderer/d3d/d3d11/dxgi_format_data.json":
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"scripts/gl.xml": "scripts/gl.xml":
"b470cb06b06cbbe7adb2c8129ec85708", "b470cb06b06cbbe7adb2c8129ec85708",
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844", "ad11fef24bece29edfa62bcd2edff788",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp": "src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp":
"96d06b3acf7826aee1ec813a8fa3a867", "96d06b3acf7826aee1ec813a8fa3a867",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.h": "src/libANGLE/renderer/gl/DispatchTableGL_autogen.h":
......
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844", "ad11fef24bece29edfa62bcd2edff788",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"947fe0a2c3ca1a819a68b4a94bfcf614", "947fe0a2c3ca1a819a68b4a94bfcf614",
"src/libANGLE/renderer/vulkan/gen_vk_format_table.py": "src/libANGLE/renderer/vulkan/gen_vk_format_table.py":
"09340e3ba114b4acef6460ac8b242040", "63e0efcbe3802518058186cdbfba730e",
"src/libANGLE/renderer/vulkan/vk_format_map.json": "src/libANGLE/renderer/vulkan/vk_format_map.json":
"9e0a57bee62f7b0603c7431c815d1be2", "b15efb8e2ff455767eb5be0590cc340c",
"src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp": "src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp":
"90a43248b071bf880aaa43a0142eac1b" "3d9440ef4e00925920f2c3b92e744851"
} }
\ No newline at end of file
...@@ -86,25 +86,25 @@ ...@@ -86,25 +86,25 @@
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc":
"4726c9620a56bee224983d28d979fd39", "4726c9620a56bee224983d28d979fd39",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc":
"d4e48d64aa66fcf3c09330c4234ba349", "f2733c47c6fdc76c1919d1d56b6bb53d",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc":
"1f2edac6d7a8c2ed5547052808245309", "effda9890acbcf7df4ad507ba795a5e5",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000002.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000002.inc":
"429b44e5774de85b72657c26cc12bec0", "429b44e5774de85b72657c26cc12bec0",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000003.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000003.inc":
"fdc329bbdfcf861ef64514e996b9381b", "fdc329bbdfcf861ef64514e996b9381b",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000004.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000004.inc":
"e0c8a2fe5d0087dbacb2bbc7457c1789", "4ac968daab1481e5df501f8098cb9d0c",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc":
"2ad61027b563e8d4eb9ac8d7139a1cd3", "1b19cf0bd3fef9f0301c0a5e5c887a74",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc":
"b2037ea0fc1651b4dff779df41701b1e", "b2037ea0fc1651b4dff779df41701b1e",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc":
"ea0041ce244d44f87f97ba7c671be723", "ea0041ce244d44f87f97ba7c671be723",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc":
"6bfcbd2e838d0d746954de8bb8557073", "40d55a877eed28d96ef92f42fe4590d7",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc":
"7b439c9d771db466e67b5f2f6d53b9e7", "600b5e4c4659b1e52cedb4b52e9fc6c0",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000A.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000A.inc":
"60addec54cd45b611afb6fb3477aa985", "60addec54cd45b611afb6fb3477aa985",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000B.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000B.inc":
...@@ -212,7 +212,7 @@ ...@@ -212,7 +212,7 @@
"src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp": "src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp":
"ca35df77d258baa0636529d1f0f446a9", "ca35df77d258baa0636529d1f0f446a9",
"src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp": "src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp":
"e1a64b49ac57bf7aa48913f818d6a522", "8345816b9cce00c699d8d70adfbcef95",
"src/libANGLE/renderer/vulkan/shaders/src/FullScreenQuad.vert": "src/libANGLE/renderer/vulkan/shaders/src/FullScreenQuad.vert":
"805ec8b2f87d4bd4242dc5b1c58ba3b4", "805ec8b2f87d4bd4242dc5b1c58ba3b4",
"src/libANGLE/renderer/vulkan/shaders/src/ImageClear.frag": "src/libANGLE/renderer/vulkan/shaders/src/ImageClear.frag":
......
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844", "ad11fef24bece29edfa62bcd2edff788",
"src/libANGLE/renderer/vulkan/gen_vk_mandatory_format_support_table.py": "src/libANGLE/renderer/vulkan/gen_vk_mandatory_format_support_table.py":
"dab4614bbee0c3fbc5b3ccaaa11ba9d3", "dab4614bbee0c3fbc5b3ccaaa11ba9d3",
"src/libANGLE/renderer/vulkan/vk_mandatory_format_support_data.json": "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_data.json":
......
...@@ -202,25 +202,17 @@ def get_internal_format_initializer(internal_format, format_id): ...@@ -202,25 +202,17 @@ def get_internal_format_initializer(internal_format, format_id):
internal_format) internal_format)
def get_vertex_copy_function(src_format, dst_format): def get_format_gl_type(format):
if dst_format == "NONE":
return "nullptr"
num_channel = len(get_channel_tokens(src_format))
if num_channel < 1 or num_channel > 4:
return "nullptr"
if 'FIXED' in src_format:
assert 'FLOAT' in dst_format, (
'get_vertex_copy_function: can only convert fixed to float,' + ' not to ' + dst_format)
return 'Copy32FixedTo32FVertexData<%d, %d>' % (num_channel, num_channel)
sign = '' sign = ''
base_type = None base_type = None
if 'FLOAT' in src_format: if 'FLOAT' in format:
bits = get_bits(format)
redbits = bits and bits.get('R')
base_type = 'float' base_type = 'float'
if redbits == 16:
base_type = 'half'
else: else:
bits = get_bits(src_format) bits = get_bits(format)
redbits = bits and bits.get('R') redbits = bits and bits.get('R')
if redbits == 8: if redbits == 8:
base_type = 'byte' base_type = 'byte'
...@@ -229,18 +221,41 @@ def get_vertex_copy_function(src_format, dst_format): ...@@ -229,18 +221,41 @@ def get_vertex_copy_function(src_format, dst_format):
elif redbits == 32: elif redbits == 32:
base_type = 'int' base_type = 'int'
if 'UINT' in src_format or 'UNORM' in src_format or 'USCALED' in src_format: if 'UINT' in format or 'UNORM' in format or 'USCALED' in format:
sign = 'u' sign = 'u'
if base_type is None: if base_type is None:
return None
return 'GL' + sign + base_type
def get_vertex_copy_function(src_format, dst_format):
if dst_format == "NONE":
return "nullptr"
num_channel = len(get_channel_tokens(src_format))
if num_channel < 1 or num_channel > 4:
return "nullptr" return "nullptr"
gl_type = 'GL' + sign + base_type if 'FIXED' in src_format:
assert 'FLOAT' in dst_format, (
'get_vertex_copy_function: can only convert fixed to float,' + ' not to ' + dst_format)
return 'Copy32FixedTo32FVertexData<%d, %d>' % (num_channel, num_channel)
if src_format == dst_format: src_gl_type = get_format_gl_type(src_format)
return 'CopyNativeVertexData<%s, %d, %d, 0>' % (gl_type, num_channel, num_channel) dst_gl_type = get_format_gl_type(dst_format)
if src_gl_type == None:
return "nullptr"
if src_gl_type == dst_gl_type:
dst_num_channel = len(get_channel_tokens(dst_format))
return 'CopyNativeVertexData<%s, %d, %d, 0>' % (src_gl_type, num_channel, dst_num_channel)
assert 'FLOAT' in dst_format, ( assert 'FLOAT' in dst_format, (
'get_vertex_copy_function: can only convert to float,' + ' not to ' + dst_format) 'get_vertex_copy_function: can only convert to float,' + ' not to ' + dst_format)
normalized = 'true' if 'NORM' in src_format else 'false' normalized = 'true' if 'NORM' in src_format else 'false'
return "CopyTo32FVertexData<%s, %d, %d, %s>" % (gl_type, num_channel, num_channel, normalized)
return "CopyTo32FVertexData<%s, %d, %d, %s>" % (src_gl_type, num_channel, num_channel,
normalized)
...@@ -115,6 +115,22 @@ def verify_vk_map_keys(angle_to_gl, vk_json_data): ...@@ -115,6 +115,22 @@ def verify_vk_map_keys(angle_to_gl, vk_json_data):
return no_error return no_error
def get_vertex_copy_function(src_format, dst_format, vk_format):
if "_PACK" in vk_format:
pack_bits = int(re.search(r'_PACK(\d+)', vk_format).group(1))
base_type = None
if pack_bits == 8:
base_type = 'byte'
elif pack_bits == 16:
base_type = 'short'
elif pack_bits == 32:
base_type = 'int'
else:
return 'nullptr'
return 'CopyNativeVertexData<GLu%s, 1, 1, 0>' % base_type
return angle_format.get_vertex_copy_function(src_format, dst_format)
def gen_format_case(angle, internal_format, vk_json_data): def gen_format_case(angle, internal_format, vk_json_data):
vk_map = vk_json_data["map"] vk_map = vk_json_data["map"]
vk_overrides = vk_json_data["overrides"] vk_overrides = vk_json_data["overrides"]
...@@ -143,11 +159,12 @@ def gen_format_case(angle, internal_format, vk_json_data): ...@@ -143,11 +159,12 @@ def gen_format_case(angle, internal_format, vk_json_data):
internal_format, format)) internal_format, format))
def buffer_args(format): def buffer_args(format):
vk_buffer_format = vk_map[format]
return dict( return dict(
buffer="angle::FormatID::" + format, buffer="angle::FormatID::" + format,
vk_buffer_format=vk_map[format], vk_buffer_format=vk_buffer_format,
vk_buffer_format_is_packed=is_packed(vk_map[format]), vk_buffer_format_is_packed=is_packed(vk_buffer_format),
vertex_load_function=angle_format.get_vertex_copy_function(angle, format), vertex_load_function=get_vertex_copy_function(angle, format, vk_buffer_format),
vertex_load_converts='false' if angle == format else 'true', vertex_load_converts='false' if angle == format else 'true',
) )
......
...@@ -207,14 +207,26 @@ SrcType loadSourceComponent(uint cd) ...@@ -207,14 +207,26 @@ SrcType loadSourceComponent(uint cd)
// Convert to SrcType // Convert to SrcType
#if SintToSint || SintToFloat #if SintToSint || SintToFloat
if (valueBits < 32)
{
bool isNegative = (valueAsUint & (1 << (valueBits - 1))) != 0; bool isNegative = (valueAsUint & (1 << (valueBits - 1))) != 0;
// Sign extend // Sign extend
SrcType value = SrcType(valueAsUint | (isNegative ? 0xFFFFFFFF << valueBits : 0)); // Note: if valueBits == 32, then 0xFFFFFFFF << valueBits is undefined,
// causing sign extension of value below to produce incorrect values.
uint signExtension = isNegative ? 0xFFFFFFFF << valueBits : 0;
valueAsUint |= signExtension;
}
SrcType value = SrcType(valueAsUint);
#elif UintToUint || UintToFloat #elif UintToUint || UintToFloat
SrcType value = valueAsUint; SrcType value = valueAsUint;
#elif SnormToFloat #elif SnormToFloat
if (valueBits < 32)
{
bool isNegative = (valueAsUint & (1 << (valueBits - 1))) != 0; bool isNegative = (valueAsUint & (1 << (valueBits - 1))) != 0;
int valueAsInt = int(valueAsUint | (isNegative ? 0xFFFFFFFF << valueBits : 0)); uint signExtension = isNegative ? 0xFFFFFFFF << valueBits : 0;
valueAsUint |= signExtension;
}
int valueAsInt = int(valueAsUint);
SrcType value = (2 * float(valueAsInt) + 1) / valueMask; SrcType value = (2 * float(valueAsInt) + 1) / valueMask;
#elif UnormToFloat #elif UnormToFloat
float positiveMax = valueMask; float positiveMax = valueMask;
......
...@@ -220,6 +220,54 @@ ...@@ -220,6 +220,54 @@
}, },
"R32G32B32A32_FIXED": { "R32G32B32A32_FIXED": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R32G32B32A32_FLOAT"
},
"R32_UNORM": {
"buffer": "R32_FLOAT"
},
"R32G32_UNORM": {
"buffer": "R32G32_FLOAT"
},
"R32G32B32_UNORM": {
"buffer": "R32G32B32_FLOAT"
},
"R32G32B32A32_UNORM": {
"buffer": "R32G32B32A32_FLOAT"
},
"R32_SNORM": {
"buffer": "R32_FLOAT"
},
"R32G32_SNORM": {
"buffer": "R32G32_FLOAT"
},
"R32G32B32_SNORM": {
"buffer": "R32G32B32_FLOAT"
},
"R32G32B32A32_SNORM": {
"buffer": "R32G32B32A32_FLOAT"
},
"R32_USCALED": {
"buffer": "R32_FLOAT"
},
"R32G32_USCALED": {
"buffer": "R32G32_FLOAT"
},
"R32G32B32_USCALED": {
"buffer": "R32G32B32_FLOAT"
},
"R32G32B32A32_USCALED": {
"buffer": "R32G32B32A32_FLOAT"
},
"R32_SSCALED": {
"buffer": "R32_FLOAT"
},
"R32G32_SSCALED": {
"buffer": "R32G32_FLOAT"
},
"R32G32B32_SSCALED": {
"buffer": "R32G32B32_FLOAT"
},
"R32G32B32A32_SSCALED": {
"buffer": "R32G32B32A32_FLOAT"
} }
}, },
"fallbacks": { "fallbacks": {
...@@ -341,19 +389,24 @@ ...@@ -341,19 +389,24 @@
"image": "R32G32B32A32_SINT" "image": "R32G32B32A32_SINT"
}, },
"R16G16B16_UINT": { "R16G16B16_UINT": {
"image": "R16G16B16A16_UINT" "image": "R16G16B16A16_UINT",
"buffer": "R16G16B16A16_UINT"
}, },
"R16G16B16_SINT": { "R16G16B16_SINT": {
"image": "R16G16B16A16_SINT" "image": "R16G16B16A16_SINT",
"buffer": "R16G16B16A16_SINT"
}, },
"R8G8B8_UINT": { "R8G8B8_UINT": {
"image": "R8G8B8A8_UINT" "image": "R8G8B8A8_UINT",
"buffer": "R8G8B8A8_UINT"
}, },
"R8G8B8_SINT": { "R8G8B8_SINT": {
"image": "R8G8B8A8_SINT" "image": "R8G8B8A8_SINT",
"buffer": "R8G8B8A8_SINT"
}, },
"R16G16B16_FLOAT": { "R16G16B16_FLOAT": {
"image": "R16G16B16A16_FLOAT" "image": "R16G16B16A16_FLOAT",
"buffer": "R16G16B16A16_FLOAT"
}, },
"R32G32B32_FLOAT": { "R32G32B32_FLOAT": {
"image": "R32G32B32A32_FLOAT" "image": "R32G32B32A32_FLOAT"
......
...@@ -642,13 +642,9 @@ ...@@ -642,13 +642,9 @@
3443 VULKAN : dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays.18 = FAIL 3443 VULKAN : dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays.18 = FAIL
3443 VULKAN : dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays.24 = FAIL 3443 VULKAN : dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays.24 = FAIL
// New vertex attribute formats: // vertex_type_2_10_10_10_rev:
3193 VULKAN : dEQP-GLES3.functional.vertex_arrays.single_attribute.*.int2_10_10_10.* = SKIP 3193 VULKAN PIXEL2 : dEQP-GLES3.functional.vertex_arrays.single_attribute.*.int2_10_10_10.* = SKIP
3193 VULKAN : dEQP-GLES3.functional.vertex_arrays.single_attribute.*.unsigned_int.components* = SKIP 3193 VULKAN PIXEL2 : dEQP-GLES3.functional.vertex_arrays.single_attribute.*.usigned_int2_10_10_10.* = SKIP
3193 VULKAN : dEQP-GLES3.functional.vertex_arrays.single_attribute.*.int.components* = SKIP
3193 VULKAN : dEQP-GLES3.functional.vertex_arrays.single_attribute.*.half.components* = SKIP
3193 VULKAN : dEQP-GLES3.functional.vertex_arrays.single_attribute.*.usigned_int2_10_10_10.components* = SKIP
3193 VULKAN : dEQP-GLES3.functional.vertex_array_objects.all_attributes = SKIP
3221 VULKAN : dEQP-GLES3.functional.instanced.* = SKIP 3221 VULKAN : dEQP-GLES3.functional.instanced.* = SKIP
...@@ -712,10 +708,6 @@ ...@@ -712,10 +708,6 @@
2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines = FAIL 2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines = FAIL
2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.primitives.line* = FAIL 2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.primitives.line* = FAIL
2808 ANDROID VULKAN : dEQP-GLES3.functional.shaders.builtin_variable.fragcoord_w = FAIL 2808 ANDROID VULKAN : dEQP-GLES3.functional.shaders.builtin_variable.fragcoord_w = FAIL
3193 ANDROID VULKAN : dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte.components* = FAIL
3193 ANDROID VULKAN : dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte.components* = FAIL
3193 ANDROID VULKAN : dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short.components* = FAIL
3193 ANDROID VULKAN : dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short.components* = FAIL
3544 ANDROID VULKAN : dEQP-GLES3.functional.buffer.copy.basic.* = SKIP 3544 ANDROID VULKAN : dEQP-GLES3.functional.buffer.copy.basic.* = SKIP
3544 ANDROID VULKAN : dEQP-GLES3.functional.buffer.copy.subrange.* = SKIP 3544 ANDROID VULKAN : dEQP-GLES3.functional.buffer.copy.subrange.* = SKIP
......
...@@ -463,7 +463,7 @@ TEST_P(AttributeLayoutBufferIndexed, Test) ...@@ -463,7 +463,7 @@ TEST_P(AttributeLayoutBufferIndexed, Test)
#define PARAMS \ #define PARAMS \
ES2_VULKAN(), ES2_OPENGL(), ES2_D3D9(), ES2_D3D11(), ES3_OPENGL(), ES2_OPENGLES(), \ ES2_VULKAN(), ES2_OPENGL(), ES2_D3D9(), ES2_D3D11(), ES3_OPENGL(), ES2_OPENGLES(), \
ES3_OPENGLES() ES3_OPENGLES(), ES3_VULKAN()
ANGLE_INSTANTIATE_TEST(AttributeLayoutNonIndexed, PARAMS); ANGLE_INSTANTIATE_TEST(AttributeLayoutNonIndexed, PARAMS);
ANGLE_INSTANTIATE_TEST(AttributeLayoutMemoryIndexed, PARAMS); ANGLE_INSTANTIATE_TEST(AttributeLayoutMemoryIndexed, PARAMS);
......
...@@ -195,7 +195,11 @@ TEST_P(BuiltinVariableVertexIdTest, Triangles) ...@@ -195,7 +195,11 @@ TEST_P(BuiltinVariableVertexIdTest, Triangles)
runTest(GL_TRIANGLES, indices, 6); runTest(GL_TRIANGLES, indices, 6);
} }
ANGLE_INSTANTIATE_TEST(BuiltinVariableVertexIdTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES()); ANGLE_INSTANTIATE_TEST(BuiltinVariableVertexIdTest,
ES3_D3D11(),
ES3_OPENGL(),
ES3_OPENGLES(),
ES3_VULKAN());
class BuiltinVariableFragDepthClampingFloatRBOTest : public ANGLETest class BuiltinVariableFragDepthClampingFloatRBOTest : public ANGLETest
{ {
......
...@@ -558,10 +558,6 @@ class VertexAttributeTestES3 : public VertexAttributeTest ...@@ -558,10 +558,6 @@ class VertexAttributeTestES3 : public VertexAttributeTest
TEST_P(VertexAttributeTestES3, IntUnnormalized) TEST_P(VertexAttributeTestES3, IntUnnormalized)
{ {
// Conversion of int data isn't supported yet.
// anglebug.com/3193
ANGLE_SKIP_TEST_IF(IsVulkan());
GLint lo = std::numeric_limits<GLint>::min(); GLint lo = std::numeric_limits<GLint>::min();
GLint hi = std::numeric_limits<GLint>::max(); GLint hi = std::numeric_limits<GLint>::max();
std::array<GLint, kVertexCount> inputData = { std::array<GLint, kVertexCount> inputData = {
...@@ -578,10 +574,6 @@ TEST_P(VertexAttributeTestES3, IntUnnormalized) ...@@ -578,10 +574,6 @@ TEST_P(VertexAttributeTestES3, IntUnnormalized)
TEST_P(VertexAttributeTestES3, IntNormalized) TEST_P(VertexAttributeTestES3, IntNormalized)
{ {
// Conversion of int data isn't supported yet.
// anglebug.com/3193
ANGLE_SKIP_TEST_IF(IsVulkan());
GLint lo = std::numeric_limits<GLint>::min(); GLint lo = std::numeric_limits<GLint>::min();
GLint hi = std::numeric_limits<GLint>::max(); GLint hi = std::numeric_limits<GLint>::max();
std::array<GLint, kVertexCount> inputData = { std::array<GLint, kVertexCount> inputData = {
...@@ -598,10 +590,6 @@ TEST_P(VertexAttributeTestES3, IntNormalized) ...@@ -598,10 +590,6 @@ TEST_P(VertexAttributeTestES3, IntNormalized)
TEST_P(VertexAttributeTestES3, UnsignedIntUnnormalized) TEST_P(VertexAttributeTestES3, UnsignedIntUnnormalized)
{ {
// Conversion of int data isn't supported yet.
// anglebug.com/3193
ANGLE_SKIP_TEST_IF(IsVulkan());
GLuint mid = std::numeric_limits<GLuint>::max() >> 1; GLuint mid = std::numeric_limits<GLuint>::max() >> 1;
GLuint hi = std::numeric_limits<GLuint>::max(); GLuint hi = std::numeric_limits<GLuint>::max();
std::array<GLuint, kVertexCount> inputData = { std::array<GLuint, kVertexCount> inputData = {
...@@ -618,10 +606,6 @@ TEST_P(VertexAttributeTestES3, UnsignedIntUnnormalized) ...@@ -618,10 +606,6 @@ TEST_P(VertexAttributeTestES3, UnsignedIntUnnormalized)
TEST_P(VertexAttributeTestES3, UnsignedIntNormalized) TEST_P(VertexAttributeTestES3, UnsignedIntNormalized)
{ {
// Conversion of int data isn't supported yet.
// anglebug.com/3193
ANGLE_SKIP_TEST_IF(IsVulkan());
GLuint mid = std::numeric_limits<GLuint>::max() >> 1; GLuint mid = std::numeric_limits<GLuint>::max() >> 1;
GLuint hi = std::numeric_limits<GLuint>::max(); GLuint hi = std::numeric_limits<GLuint>::max();
std::array<GLuint, kVertexCount> inputData = { std::array<GLuint, kVertexCount> inputData = {
...@@ -1712,9 +1696,6 @@ void VertexAttributeCachingTest::testSetUp() ...@@ -1712,9 +1696,6 @@ void VertexAttributeCachingTest::testSetUp()
TEST_P(VertexAttributeCachingTest, BufferMulticaching) TEST_P(VertexAttributeCachingTest, BufferMulticaching)
{ {
ANGLE_SKIP_TEST_IF(IsAMD() && IsDesktopOpenGL()); ANGLE_SKIP_TEST_IF(IsAMD() && IsDesktopOpenGL());
// Conversion of int data isn't supported yet.
// anglebug.com/3193
ANGLE_SKIP_TEST_IF(IsVulkan());
initBasicProgram(); initBasicProgram();
...@@ -1749,9 +1730,6 @@ TEST_P(VertexAttributeCachingTest, BufferMulticaching) ...@@ -1749,9 +1730,6 @@ TEST_P(VertexAttributeCachingTest, BufferMulticaching)
TEST_P(VertexAttributeCachingTest, BufferMulticachingWithOneUnchangedAttrib) TEST_P(VertexAttributeCachingTest, BufferMulticachingWithOneUnchangedAttrib)
{ {
ANGLE_SKIP_TEST_IF(IsAMD() && IsDesktopOpenGL()); ANGLE_SKIP_TEST_IF(IsAMD() && IsDesktopOpenGL());
// Conversion of int data isn't supported yet.
// anglebug.com/3193
ANGLE_SKIP_TEST_IF(IsVulkan());
initDoubleAttribProgram(); initDoubleAttribProgram();
......
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