diff --git a/docs/features.txt b/docs/features.txt index d3884ec8051..7f34c032d94 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -602,7 +602,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_mesh_shader DONE (anv/gfx12.5+, lvp, radv) VK_EXT_multi_draw DONE (anv, hasvk, lvp, nvk, radv, tu, vn, v3dv) VK_EXT_multisampled_render_to_single_sampled DONE (lvp) - VK_EXT_nested_command_buffer DONE (anv, lvp, nvk, radv) + VK_EXT_nested_command_buffer DONE (anv, lvp, nvk, radv, tu) VK_EXT_non_seamless_cube_map DONE (anv, hasvk, lvp, nvk, radv, tu, vn) VK_EXT_pageable_device_local_memory DONE (lvp) VK_EXT_pci_bus_info DONE (anv, hasvk, nvk, radv, vn) diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index a190bd74624..090c23886da 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -255,6 +255,7 @@ get_device_extensions(const struct tu_physical_device *device, .EXT_memory_budget = true, .EXT_multi_draw = true, .EXT_mutable_descriptor_type = true, + .EXT_nested_command_buffer = true, .EXT_non_seamless_cube_map = true, .EXT_physical_device_drm = !is_kgsl(device->instance), .EXT_pipeline_creation_cache_control = true, @@ -580,6 +581,11 @@ tu_get_features(struct tu_physical_device *pdevice, /* VK_EXT_mutable_descriptor_type */ features->mutableDescriptorType = true; + /* VK_EXT_nested_command_buffer */ + features->nestedCommandBuffer = true, + features->nestedCommandBufferRendering = true, + features->nestedCommandBufferSimultaneousUse = true, + /* VK_EXT_non_seamless_cube_map */ features->nonSeamlessCubeMap = true; @@ -1033,6 +1039,9 @@ tu_get_properties(struct tu_physical_device *pdevice, /* VK_EXT_multi_draw */ props->maxMultiDrawCount = 2048; + /* VK_EXT_nested_command_buffer */ + props->maxCommandBufferNestingLevel = UINT32_MAX, + /* VK_EXT_graphics_pipeline_library */ props->graphicsPipelineLibraryFastLinking = true; props->graphicsPipelineLibraryIndependentInterpolationDecoration = true;