mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 16:00:08 +01:00
panvk: enable ycbcr on bifrost
This also enables EXT_image_drm_format_modifier, which depends on ycbcr. Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38145>
This commit is contained in:
parent
3f021404eb
commit
6735fe939a
5 changed files with 7 additions and 12 deletions
|
|
@ -457,7 +457,7 @@ Vulkan 1.1 -- all DONE: anv, hk, kk, lvp, nvk, panvk/v10+, pvr, radv, tu, vn
|
||||||
VK_KHR_maintenance3 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_maintenance3 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_multiview DONE (anv, dzn, hasvk, lvp, nvk, panvk/v10+, pvr, radv, tu, v3dv, vn)
|
VK_KHR_multiview DONE (anv, dzn, hasvk, lvp, nvk, panvk/v10+, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_relaxed_block_layout DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_relaxed_block_layout DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_sampler_ycbcr_conversion DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
VK_KHR_sampler_ycbcr_conversion DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_draw_parameters DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, vn)
|
VK_KHR_shader_draw_parameters DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, vn)
|
||||||
VK_KHR_storage_buffer_storage_class DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_storage_buffer_storage_class DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_variable_pointers DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_variable_pointers DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
|
|
@ -639,7 +639,7 @@ Khronos extensions that are not part of any Vulkan version:
|
||||||
VK_EXT_headless_surface DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_EXT_headless_surface DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_EXT_image_2d_view_of_3d DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, vn)
|
VK_EXT_image_2d_view_of_3d DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, vn)
|
||||||
VK_EXT_image_compression_control DONE (anv/gfx12-, radv)
|
VK_EXT_image_compression_control DONE (anv/gfx12-, radv)
|
||||||
VK_EXT_image_drm_format_modifier DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, radv/gfx9+, tu, v3dv, vn)
|
VK_EXT_image_drm_format_modifier DONE (anv, hasvk, hk, lvp, nvk, panvk, radv/gfx9+, tu, v3dv, vn)
|
||||||
VK_EXT_image_sliced_view_of_3d DONE (anv, hk, lvp, nvk, radv/gfx10+, vn)
|
VK_EXT_image_sliced_view_of_3d DONE (anv, hk, lvp, nvk, radv/gfx10+, vn)
|
||||||
VK_EXT_image_view_min_lod DONE (anv, hasvk, hk, nvk, radv, tu, vn)
|
VK_EXT_image_view_min_lod DONE (anv, hasvk, hk, nvk, radv, tu, vn)
|
||||||
VK_EXT_index_type_uint8 DONE (anv, hasvk, hk, nvk, lvp, panvk, pvr, radv/gfx8+, tu, v3dv, vn)
|
VK_EXT_index_type_uint8 DONE (anv, hasvk, hk, nvk, lvp, panvk, pvr, radv/gfx8+, tu, v3dv, vn)
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,8 @@ VK_EXT_device_memory_report on panvk
|
||||||
VK_VALVE_video_encode_rgb_conversion on radv
|
VK_VALVE_video_encode_rgb_conversion on radv
|
||||||
VK_EXT_custom_resolve on RADV
|
VK_EXT_custom_resolve on RADV
|
||||||
GL_EXT_shader_pixel_local_storage on Panfrost v6+
|
GL_EXT_shader_pixel_local_storage on Panfrost v6+
|
||||||
|
VK_EXT_image_drm_format_modifier on panvk/v7
|
||||||
|
VK_KHR_sampler_ycbcr_conversion on panvk/v7
|
||||||
sparseResidencyImage2D on panvk v10+
|
sparseResidencyImage2D on panvk v10+
|
||||||
sparseResidencyStandard2DBlockShape on panvk v10+
|
sparseResidencyStandard2DBlockShape on panvk v10+
|
||||||
VK_KHR_surface_maintenance1 promotion everywhere EXT is exposed
|
VK_KHR_surface_maintenance1 promotion everywhere EXT is exposed
|
||||||
|
|
|
||||||
|
|
@ -648,11 +648,6 @@ get_image_format_features(struct panvk_physical_device *physical_device,
|
||||||
{
|
{
|
||||||
const struct vk_format_ycbcr_info *ycbcr_info =
|
const struct vk_format_ycbcr_info *ycbcr_info =
|
||||||
vk_format_get_ycbcr_info(format);
|
vk_format_get_ycbcr_info(format);
|
||||||
const unsigned arch = pan_arch(physical_device->kmod.props.gpu_id);
|
|
||||||
|
|
||||||
/* TODO: Bifrost YCbCr support */
|
|
||||||
if (ycbcr_info && arch <= 7)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (ycbcr_info == NULL)
|
if (ycbcr_info == NULL)
|
||||||
return get_image_plane_format_features(physical_device, format);
|
return get_image_plane_format_features(physical_device, format);
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ panvk_per_arch(get_physical_device_extensions)(
|
||||||
.KHR_push_descriptor = true,
|
.KHR_push_descriptor = true,
|
||||||
.KHR_relaxed_block_layout = true,
|
.KHR_relaxed_block_layout = true,
|
||||||
.KHR_sampler_mirror_clamp_to_edge = true,
|
.KHR_sampler_mirror_clamp_to_edge = true,
|
||||||
.KHR_sampler_ycbcr_conversion = PAN_ARCH >= 10,
|
.KHR_sampler_ycbcr_conversion = true,
|
||||||
.KHR_separate_depth_stencil_layouts = true,
|
.KHR_separate_depth_stencil_layouts = true,
|
||||||
.KHR_shader_clock = true,
|
.KHR_shader_clock = true,
|
||||||
.KHR_shader_draw_parameters = true,
|
.KHR_shader_draw_parameters = true,
|
||||||
|
|
@ -150,7 +150,7 @@ panvk_per_arch(get_physical_device_extensions)(
|
||||||
.EXT_host_query_reset = true,
|
.EXT_host_query_reset = true,
|
||||||
.EXT_image_2d_view_of_3d = true,
|
.EXT_image_2d_view_of_3d = true,
|
||||||
/* EXT_image_drm_format_modifier depends on KHR_sampler_ycbcr_conversion */
|
/* EXT_image_drm_format_modifier depends on KHR_sampler_ycbcr_conversion */
|
||||||
.EXT_image_drm_format_modifier = PAN_ARCH >= 10,
|
.EXT_image_drm_format_modifier = true,
|
||||||
.EXT_image_robustness = true,
|
.EXT_image_robustness = true,
|
||||||
.EXT_index_type_uint8 = true,
|
.EXT_index_type_uint8 = true,
|
||||||
.EXT_line_rasterization = true,
|
.EXT_line_rasterization = true,
|
||||||
|
|
@ -318,7 +318,7 @@ panvk_per_arch(get_physical_device_features)(
|
||||||
.variablePointersStorageBuffer = true,
|
.variablePointersStorageBuffer = true,
|
||||||
.variablePointers = true,
|
.variablePointers = true,
|
||||||
.protectedMemory = false,
|
.protectedMemory = false,
|
||||||
.samplerYcbcrConversion = PAN_ARCH >= 10,
|
.samplerYcbcrConversion = true,
|
||||||
.shaderDrawParameters = true,
|
.shaderDrawParameters = true,
|
||||||
|
|
||||||
/* Vulkan 1.2 */
|
/* Vulkan 1.2 */
|
||||||
|
|
|
||||||
|
|
@ -804,14 +804,12 @@ panvk_lower_nir(struct panvk_device *dev, nir_shader *nir,
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if PAN_ARCH >= 10
|
|
||||||
const struct lower_ycbcr_state ycbcr_state = {
|
const struct lower_ycbcr_state ycbcr_state = {
|
||||||
.set_layout_count = set_layout_count,
|
.set_layout_count = set_layout_count,
|
||||||
.set_layouts = set_layouts,
|
.set_layouts = set_layouts,
|
||||||
};
|
};
|
||||||
NIR_PASS(_, nir, nir_vk_lower_ycbcr_tex, lookup_ycbcr_conversion,
|
NIR_PASS(_, nir, nir_vk_lower_ycbcr_tex, lookup_ycbcr_conversion,
|
||||||
&ycbcr_state);
|
&ycbcr_state);
|
||||||
#endif
|
|
||||||
|
|
||||||
panvk_per_arch(nir_lower_descriptors)(nir, dev, rs, set_layout_count,
|
panvk_per_arch(nir_lower_descriptors)(nir, dev, rs, set_layout_count,
|
||||||
set_layouts, state, shader);
|
set_layouts, state, shader);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue