mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
radv: advertise VK_EXT_host_image_copy on GFX10+ behind RADV_PERFTEST=hic
This exposes an experimental implementation of HIC with RADV_PERFTEST=hic. It's passing 100% of VKCTS but it requires some benchmarks first to verify if performance is acceptable or not. No addrlib support for GFX6-9. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35974>
This commit is contained in:
parent
ea4ad51eb1
commit
fbea486854
6 changed files with 54 additions and 8 deletions
|
|
@ -1512,6 +1512,8 @@ RADV driver environment variables
|
|||
rt extensions with older hardware.
|
||||
``gewave32``
|
||||
enable wave32 for vertex/tess/geometry shaders (GFX10+)
|
||||
``hic``
|
||||
enable experimental implementation of VK_EXT_host_image_copy (GFX10+)
|
||||
``localbos``
|
||||
enable local BOs
|
||||
``nggc``
|
||||
|
|
|
|||
|
|
@ -525,7 +525,7 @@ Vulkan 1.4 -- all DONE: anv, hk, lvp, nvk, radv/gfx8+, tu/a7xx+, vn
|
|||
VK_KHR_shader_float_controls2 DONE (anv, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_KHR_shader_subgroup_rotate DONE (anv, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_KHR_vertex_attribute_divisor DONE (anv, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_host_image_copy DONE (anv, lvp, nvk/Turing+, tu, vn)
|
||||
VK_EXT_host_image_copy DONE (anv, lvp, nvk/Turing+, radv/gfx10+, tu, vn)
|
||||
VK_EXT_pipeline_protected_access DONE (anv/gfx12+, vn)
|
||||
VK_EXT_pipeline_robustness DONE (anv, lvp, nvk, panvk, radv, v3dv, tu, vn)
|
||||
|
||||
|
|
|
|||
|
|
@ -70,3 +70,4 @@ removed EGL_MESA_drm_image
|
|||
removed pre-dmabuf wl_drm support
|
||||
deprecated EGL_WL_bind_wayland_display
|
||||
VK_KHR_shader_atomic_int64 on panvk/v10+
|
||||
VK_EXT_host_image_copy on RADV (RDNA1+)
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ enum {
|
|||
RADV_PERFTEST_RT_WAVE_32 = 1u << 15,
|
||||
RADV_PERFTEST_VIDEO_ENCODE = 1u << 16,
|
||||
RADV_PERFTEST_NO_GTT_SPILL = 1u << 17,
|
||||
RADV_PERFTEST_HIC = 1u << 18,
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@ static const struct debug_control radv_perftest_options[] = {{"localbos", RADV_P
|
|||
{"rtwave32", RADV_PERFTEST_RT_WAVE_32},
|
||||
{"video_encode", RADV_PERFTEST_VIDEO_ENCODE},
|
||||
{"nogttspill", RADV_PERFTEST_NO_GTT_SPILL},
|
||||
{"hic", RADV_PERFTEST_HIC},
|
||||
{NULL, 0}};
|
||||
|
||||
static const struct debug_control radv_trap_excp_options[] = {
|
||||
|
|
|
|||
|
|
@ -151,6 +151,13 @@ radv_cooperative_matrix2_nv_enabled(const struct radv_physical_device *pdev)
|
|||
return instance->drirc.cooperative_matrix2_nv;
|
||||
}
|
||||
|
||||
static bool
|
||||
radv_host_image_copy_enabled(const struct radv_physical_device *pdev)
|
||||
{
|
||||
const struct radv_instance *instance = radv_physical_device_instance(pdev);
|
||||
return pdev->info.gfx_level >= GFX10 && (instance->perftest_flags & RADV_PERFTEST_HIC);
|
||||
}
|
||||
|
||||
bool
|
||||
radv_enable_rt(const struct radv_physical_device *pdev)
|
||||
{
|
||||
|
|
@ -690,6 +697,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device
|
|||
.EXT_global_priority_query = true,
|
||||
.EXT_graphics_pipeline_library = !pdev->use_llvm && !(instance->debug_flags & RADV_DEBUG_NO_GPL),
|
||||
.EXT_hdr_metadata = true,
|
||||
.EXT_host_image_copy = radv_host_image_copy_enabled(pdev),
|
||||
.EXT_host_query_reset = true,
|
||||
.EXT_image_2d_view_of_3d = true,
|
||||
.EXT_image_compression_control = true,
|
||||
|
|
@ -953,7 +961,7 @@ radv_physical_device_get_features(const struct radv_physical_device *pdev, struc
|
|||
.maintenance6 = true,
|
||||
.pipelineProtectedAccess = false,
|
||||
.pipelineRobustness = true,
|
||||
.hostImageCopy = false,
|
||||
.hostImageCopy = radv_host_image_copy_enabled(pdev),
|
||||
.pushDescriptor = true,
|
||||
|
||||
/* VK_EXT_conditional_rendering */
|
||||
|
|
@ -1730,11 +1738,6 @@ radv_get_physical_device_properties(struct radv_physical_device *pdev)
|
|||
.defaultRobustnessUniformBuffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,
|
||||
.defaultRobustnessVertexInputs = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED,
|
||||
.defaultRobustnessImages = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2,
|
||||
.copySrcLayoutCount = 0,
|
||||
.pCopySrcLayouts = NULL,
|
||||
.copyDstLayoutCount = 0,
|
||||
.pCopyDstLayouts = NULL,
|
||||
.identicalMemoryTypeRequirements = false,
|
||||
|
||||
/* VK_EXT_discard_rectangles */
|
||||
.maxDiscardRectangles = MAX_DISCARD_RECTANGLES,
|
||||
|
|
@ -2030,7 +2033,45 @@ radv_get_physical_device_properties(struct radv_physical_device *pdev)
|
|||
.patch = 0,
|
||||
};
|
||||
|
||||
memset(p->optimalTilingLayoutUUID, 0, sizeof(p->optimalTilingLayoutUUID));
|
||||
/* VK_EXT_host_image_copy */
|
||||
static const VkImageLayout supported_layouts[] = {
|
||||
VK_IMAGE_LAYOUT_UNDEFINED,
|
||||
VK_IMAGE_LAYOUT_GENERAL,
|
||||
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_PREINITIALIZED,
|
||||
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ,
|
||||
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
|
||||
VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR,
|
||||
VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR,
|
||||
VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR,
|
||||
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR,
|
||||
VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR,
|
||||
VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR,
|
||||
VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR,
|
||||
VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT,
|
||||
VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT,
|
||||
};
|
||||
|
||||
p->copySrcLayoutCount = ARRAY_SIZE(supported_layouts);
|
||||
p->pCopySrcLayouts = (VkImageLayout *)supported_layouts;
|
||||
p->copyDstLayoutCount = ARRAY_SIZE(supported_layouts);
|
||||
p->pCopyDstLayouts = (VkImageLayout *)supported_layouts;
|
||||
memcpy(p->optimalTilingLayoutUUID, pdev->driver_uuid, VK_UUID_SIZE);
|
||||
p->identicalMemoryTypeRequirements = false;
|
||||
|
||||
/* VK_EXT_physical_device_drm */
|
||||
#ifndef _WIN32
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue