mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-04 10:40:36 +01:00
pvr: add support for VK_KHR_maintenance1
VK_KHR_maintenance1 is a collection of several tweaks and additions to the 1.0 version of the Vulkan spec, promoted to core in more recent versions. This change exposes the extension and only adds what was missing from our implementation, however the driver largely already had support for what is required by this extension. Signed-off-by: Luigi Santivetti <luigi.santivetti@imgtec.com> Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36412>
This commit is contained in:
parent
f27ff49e2b
commit
b461335f64
5 changed files with 18 additions and 5 deletions
|
|
@ -449,7 +449,7 @@ Vulkan 1.1 -- all DONE: anv, hk, lvp, nvk, panvk/v10+, radv, tu, vn
|
|||
VK_KHR_external_semaphore_capabilities DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_get_memory_requirements2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_get_physical_device_properties2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance1 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance1 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance3 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_multiview DONE (anv, dzn, hasvk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
||||
|
|
|
|||
|
|
@ -1027,9 +1027,12 @@ static void pvr_setup_pbe_state(
|
|||
surface_params.addr =
|
||||
PVR_DEV_ADDR_OFFSET(image->vma->dev_addr,
|
||||
image->mip_levels[iview->vk.base_mip_level].offset);
|
||||
surface_params.addr =
|
||||
PVR_DEV_ADDR_OFFSET(surface_params.addr,
|
||||
iview->vk.base_array_layer * image->layer_size);
|
||||
|
||||
if (!iview->vk.storage.z_slice_offset) {
|
||||
surface_params.addr =
|
||||
PVR_DEV_ADDR_OFFSET(surface_params.addr,
|
||||
iview->vk.base_array_layer * image->layer_size);
|
||||
}
|
||||
|
||||
surface_params.mem_layout = image->memlayout;
|
||||
surface_params.stride = pvr_stride_from_pitch(level_pitch, iview->vk.format);
|
||||
|
|
@ -1087,7 +1090,8 @@ static void pvr_setup_pbe_state(
|
|||
|
||||
#undef PVR_DEC_IF_NOT_ZERO
|
||||
|
||||
render_params.slice = 0;
|
||||
render_params.slice = iview->vk.storage.z_slice_offset;
|
||||
|
||||
render_params.mrt_index = mrt_index;
|
||||
|
||||
pvr_pbe_pack_state(dev_info,
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@ static void pvr_physical_device_get_supported_extensions(
|
|||
.KHR_get_memory_requirements2 = true,
|
||||
.KHR_image_format_list = true,
|
||||
.KHR_index_type_uint8 = false,
|
||||
.KHR_maintenance1 = true,
|
||||
.KHR_present_id2 = PVR_USE_WSI_PLATFORM,
|
||||
.KHR_present_wait2 = PVR_USE_WSI_PLATFORM,
|
||||
.KHR_shader_expect_assume = false,
|
||||
|
|
|
|||
|
|
@ -328,6 +328,12 @@ VkResult pvr_CreateImageView(VkDevice _device,
|
|||
|
||||
image = pvr_image_view_get_image(iview);
|
||||
|
||||
if (image->vk.image_type == VK_IMAGE_TYPE_3D &&
|
||||
(iview->vk.view_type == VK_IMAGE_VIEW_TYPE_2D_ARRAY ||
|
||||
iview->vk.view_type == VK_IMAGE_VIEW_TYPE_2D)) {
|
||||
iview->vk.layer_count = image->vk.extent.depth;
|
||||
}
|
||||
|
||||
info.type = iview->vk.view_type;
|
||||
info.base_level = iview->vk.base_mip_level;
|
||||
info.mip_levels = iview->vk.level_count;
|
||||
|
|
|
|||
|
|
@ -117,6 +117,8 @@ VkResult pvr_pack_tex_state(struct pvr_device *device,
|
|||
}
|
||||
} else if (mem_layout == PVR_MEMLAYOUT_3DTWIDDLED) {
|
||||
switch (iview_type) {
|
||||
case VK_IMAGE_VIEW_TYPE_2D:
|
||||
case VK_IMAGE_VIEW_TYPE_2D_ARRAY:
|
||||
case VK_IMAGE_VIEW_TYPE_3D:
|
||||
word0.textype = ROGUE_TEXSTATE_TEXTYPE_3D;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue