diff --git a/.pick_status.json b/.pick_status.json index 6d639faae46..2a3ac94a777 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1434,7 +1434,7 @@ "description": "nvk: Advertise VK_EXT_image_drm_format_modifier", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/docs/features.txt b/docs/features.txt index 62db0918891..657c17e8243 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -590,7 +590,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_headless_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_EXT_image_2d_view_of_3d DONE (anv, hasvk, lvp, nvk, radv, tu, vn) VK_EXT_image_compression_control DONE (radv) - VK_EXT_image_drm_format_modifier DONE (anv, hasvk, radv/gfx9+, tu, v3dv, vn) + VK_EXT_image_drm_format_modifier DONE (anv, hasvk, nvk, radv/gfx9+, tu, v3dv, vn) VK_EXT_image_sliced_view_of_3d DONE (anv, nvk, radv/gfx10+) VK_EXT_image_view_min_lod DONE (anv, hasvk, nvk, radv, tu, vn) VK_EXT_index_type_uint8 DONE (anv, hasvk, nvk, lvp, panvk, pvr, radv/gfx8+, tu, v3dv, vn) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 25287a19a00..c95e79b27eb 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -18,3 +18,4 @@ VK_EXT_queue_family_foreign for lavapipe VK_EXT_shader_object on RADV VK_EXT_nested_command_buffer on NVK and RADV VK_EXT_queue_family_foreign on NVK +VK_EXT_image_drm_format_modifier on NVK diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 111fa3623df..23837ff9e59 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -76,6 +76,7 @@ nvk_get_vk_version(const struct nv_device_info *info) static void nvk_get_device_extensions(const struct nvk_instance *instance, const struct nv_device_info *info, + bool has_tiled_bos, struct vk_device_extension_table *ext) { *ext = (struct vk_device_extension_table) { @@ -183,6 +184,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance, #ifdef VK_USE_PLATFORM_DISPLAY_KHR .EXT_display_control = true, #endif + .EXT_image_drm_format_modifier = has_tiled_bos, .EXT_dynamic_rendering_unused_attachments = true, .EXT_extended_dynamic_state = true, .EXT_extended_dynamic_state2 = true, @@ -1167,8 +1169,10 @@ nvk_create_drm_physical_device(struct vk_instance *_instance, vk_physical_device_dispatch_table_from_entrypoints( &dispatch_table, &wsi_physical_device_entrypoints, false); + const bool has_tiled_bos = nouveau_ws_device_has_tiled_bo(ws_dev); struct vk_device_extension_table supported_extensions; - nvk_get_device_extensions(instance, &info, &supported_extensions); + nvk_get_device_extensions(instance, &info, has_tiled_bos, + &supported_extensions); struct vk_features supported_features; nvk_get_device_features(&info, &supported_extensions, &supported_features);