From 60ad7e8da275a044577f9c60fff02812f0ebd9b4 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Tue, 21 Oct 2025 10:38:26 -0400 Subject: [PATCH] nvk: Advertise VK_KHR_pipeline_binary Part-of: --- src/nouveau/ci/nvk-ad106-fails.txt | 14 ++++++++++++++ src/nouveau/ci/nvk-ga106-fails.txt | 15 +++++++++++++++ src/nouveau/vulkan/nvk_physical_device.c | 19 ++++++++++++++++++- 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/nouveau/ci/nvk-ad106-fails.txt b/src/nouveau/ci/nvk-ad106-fails.txt index e69de29bb2d..a3b437549fd 100644 --- a/src/nouveau/ci/nvk-ad106-fails.txt +++ b/src/nouveau/ci/nvk-ad106-fails.txt @@ -0,0 +1,14 @@ +# https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/5926 +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_fragment_stage_zero_out_feedback_cout,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_geometry_stage_fragment_stage_delayed_destroy,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_tessellation_control_stage_tessellation_evaluation_stage_fragment_stage_delayed_destroy,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.graphics_tests.vertex_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.graphics_tests.vertex_stage_geometry_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.graphics_tests.vertex_stage_tessellation_control_stage_tessellation_evaluation_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.pipeline_from_get_data.vertex_stage_geometry_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_fragment_stage_delayed_destroy,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_geometry_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_tessellation_control_stage_tessellation_evaluation_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.pipeline_from_get_data.vertex_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.pipeline_from_get_data.vertex_stage_tessellation_control_stage_tessellation_evaluation_stage_fragment_stage,Crash diff --git a/src/nouveau/ci/nvk-ga106-fails.txt b/src/nouveau/ci/nvk-ga106-fails.txt index fa5a85b5988..30e9b998895 100644 --- a/src/nouveau/ci/nvk-ga106-fails.txt +++ b/src/nouveau/ci/nvk-ga106-fails.txt @@ -4,3 +4,18 @@ dEQP-VK.pipeline.shader_object_linked_binary.pipeline_cache.robustness2.storage, dEQP-VK.pipeline.shader_object_linked_spirv.pipeline_cache.robustness2.storage,Fail dEQP-VK.pipeline.shader_object_unlinked_binary.pipeline_cache.robustness2.storage,Fail dEQP-VK.pipeline.shader_object_unlinked_spirv.pipeline_cache.robustness2.storage,Fail + +# https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/5926 +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_fragment_stage_delayed_destroy,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_fragment_stage_zero_out_feedback_cout,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_geometry_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_geometry_stage_fragment_stage_delayed_destroy,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_tessellation_control_stage_tessellation_evaluation_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.creation_feedback.graphics_tests.vertex_stage_tessellation_control_stage_tessellation_evaluation_stage_fragment_stage_delayed_destroy,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.graphics_tests.vertex_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.graphics_tests.vertex_stage_geometry_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.graphics_tests.vertex_stage_tessellation_control_stage_tessellation_evaluation_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.pipeline_from_get_data.vertex_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.pipeline_from_get_data.vertex_stage_geometry_stage_fragment_stage,Crash +dEQP-VK.pipeline.pipeline_library.pipeline_binary.pipeline_from_get_data.vertex_stage_tessellation_control_stage_tessellation_evaluation_stage_fragment_stage,Crash diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 256ea41f474..96888585ac8 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -160,6 +160,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance, .KHR_maintenance10 = true, .KHR_map_memory2 = true, .KHR_multiview = true, + .KHR_pipeline_binary = true, .KHR_pipeline_executable_properties = true, .KHR_pipeline_library = true, #ifdef NVK_USE_WSI_PLATFORM @@ -499,6 +500,9 @@ nvk_get_device_features(const struct nv_device_info *info, /* VK_KHR_maintenance10 */ .maintenance10 = true, + /* VK_KHR_pipeline_binary */ + .pipelineBinaries = true, + /* VK_KHR_pipeline_executable_properties */ .pipelineExecutableInfo = true, @@ -1041,6 +1045,13 @@ nvk_get_device_properties(const struct nvk_instance *instance, /* VK_KHR_compute_shader_derivatives */ .meshAndTaskShaderDerivatives = false, + /* VK_KHR_pipeline_binary + * + * InternalCache properties are set by + * nvk_physical_device_init_pipeline_cache() + */ + .pipelineBinaryCompressedData = false, + /* VK_EXT_conservative_rasterization */ .primitiveOverestimationSize = info->cls_eng3d >= VOLTA_A ? 1.0f / 512.0f : 0.0, .maxExtraPrimitiveOverestimationSize = 0.75, @@ -1235,7 +1246,7 @@ nvk_get_device_properties(const struct nvk_instance *instance, /* VK_EXT_host_image_copy */ - /* Not sure if there are layout specific things, so for now just reporting + /* Not sure if there are layout specific things, so for now just reporting * all layouts from extensions. */ static const VkImageLayout supported_layouts[] = { @@ -1321,6 +1332,12 @@ nvk_physical_device_init_pipeline_cache(struct nvk_physical_device *pdev) const uint64_t driver_flags = nvk_physical_device_compiler_flags(pdev); pdev->vk.disk_cache = disk_cache_create(renderer, timestamp, driver_flags); + if (pdev->vk.disk_cache != NULL) { + pdev->vk.properties.pipelineBinaryInternalCache = true; + pdev->vk.properties.pipelineBinaryInternalCacheControl = true; + pdev->vk.properties.pipelineBinaryPrefersInternalCache = true; + pdev->vk.properties.pipelineBinaryPrecompiledInternalCache = true; + } #endif }