diff --git a/src/freedreno/ci/deqp-freedreno-a630-fails.txt b/src/freedreno/ci/deqp-freedreno-a630-fails.txt index 59c666602db..16701fc900a 100644 --- a/src/freedreno/ci/deqp-freedreno-a630-fails.txt +++ b/src/freedreno/ci/deqp-freedreno-a630-fails.txt @@ -140,5 +140,10 @@ dEQP-VK.spirv_assembly.instruction.graphics.opquantize.too_small_tessc,Fail dEQP-VK.spirv_assembly.instruction.graphics.spirv_ids_abuse.lots_ids_geom,Timeout dEQP-VK.spirv_assembly.instruction.graphics.variable_pointers.graphics.writes_single_buffer_geom,Fail dEQP-VK.spirv_assembly.instruction.graphics.variable_pointers.graphics.writes_two_buffers_geom,Fail +dEQP-VK.spirv_assembly.instruction.graphics.float16.opvectorshuffle.344_vert,Crash +dEQP-VK.spirv_assembly.instruction.graphics.float16.opvectorshuffle.444_geom,Crash +dEQP-VK.spirv_assembly.instruction.graphics.float16.opvectorshuffle.244_tessc,Crash +dEQP-VK.spirv_assembly.instruction.graphics.float16.opvectorshuffle.344_frag,Crash +dEQP-VK.spirv_assembly.instruction.compute.float16.opvectorshuffle.344,Crash dEQP-VK.texture.filtering.cube.formats.d24_unorm_s8_uint_stencil.nearest,Fail dEQP-VK.wsi.display_control.register_device_event,Crash diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c index c99c891b5de..2ce0e268874 100644 --- a/src/freedreno/vulkan/tu_device.c +++ b/src/freedreno/vulkan/tu_device.c @@ -416,7 +416,7 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, features->storagePushConstant8 = false; features->shaderBufferInt64Atomics = false; features->shaderSharedInt64Atomics = false; - features->shaderFloat16 = false; + features->shaderFloat16 = true; features->shaderInt8 = false; features->descriptorIndexing = true; @@ -601,7 +601,13 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, features->pipelineExecutableInfo = true; break; } - + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: { + VkPhysicalDeviceShaderFloat16Int8Features *features = + (VkPhysicalDeviceShaderFloat16Int8Features *) ext; + features->shaderFloat16 = true; + features->shaderInt8 = false; + break; + } default: break; } diff --git a/src/freedreno/vulkan/tu_extensions.py b/src/freedreno/vulkan/tu_extensions.py index 5d39762f086..aa69ae0fd1a 100644 --- a/src/freedreno/vulkan/tu_extensions.py +++ b/src/freedreno/vulkan/tu_extensions.py @@ -111,6 +111,7 @@ EXTENSIONS = [ Extension('VK_KHR_external_fence_capabilities', 1, True), Extension('VK_KHR_pipeline_executable_properties', 1, True), Extension('VK_KHR_shader_float_controls', 1, True), + Extension('VK_KHR_shader_float16_int8', 1, True), ] MAX_API_VERSION = VkVersion(MAX_API_VERSION) diff --git a/src/freedreno/vulkan/tu_shader.c b/src/freedreno/vulkan/tu_shader.c index 8d09eeeaad9..9c3bef21501 100644 --- a/src/freedreno/vulkan/tu_shader.c +++ b/src/freedreno/vulkan/tu_shader.c @@ -74,6 +74,7 @@ tu_spirv_to_nir(struct tu_device *dev, .descriptor_array_non_uniform_indexing = true, .runtime_descriptor_array = true, .float_controls = true, + .float16 = true, }, };