tu: Implement VK_EXT_non_seamless_cube_map

Passes CTS tests: dEQP-VK.texture.*non_seamless_*

Signed-off-by: Mark Collins <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18079>
This commit is contained in:
Mark Collins
2022-08-17 13:02:38 +05:30
committed by Marge Bot
parent adb4934d59
commit f649233896
3 changed files with 12 additions and 4 deletions

View File

@@ -561,7 +561,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_EXT_memory_priority DONE (radv)
VK_EXT_multi_draw DONE (anv, lvp, radv)
VK_EXT_multisampled_render_to_single_sampled DONE (lvp)
VK_EXT_non_seamless_cube_map DONE (anv, lvp, radv)
VK_EXT_non_seamless_cube_map DONE (anv, lvp, radv, tu)
VK_EXT_pci_bus_info DONE (anv, radv)
VK_EXT_physical_device_drm DONE (anv, radv, tu, v3dv, vn)
VK_EXT_post_depth_coverage DONE (anv/gfx10+, lvp, radv/gfx10+)

View File

@@ -28,7 +28,7 @@ traces:
- device: freedreno-a630
checksum: 14f7656971b98fdaaf00bf576ada7ccf
- device: zink-a630
checksum: affab10e98c1415747b1dc38eb7f7d7d
checksum: 45bdbb33bf87ed114bd548248be13408
- path: valve/portal-2-v2.trace
expectations:
# Skipped since it's slow even on a530.
@@ -53,7 +53,7 @@ traces:
- device: freedreno-a630
checksum: 339dce29ae08569652438116829510c7
- device: zink-a630
checksum: dc9a01cfe6f2e542756b4892d80ef49c
checksum: 2eb996b7d308087c73c57872231f7baa
- path: xonotic/xonotic-keybench-high.trace
expectations:
# Skipped since it's long on a530.

View File

@@ -227,6 +227,7 @@ get_device_extensions(const struct tu_physical_device *device,
.EXT_image_2d_view_of_3d = true,
.EXT_color_write_enable = true,
.EXT_load_store_op_none = true,
.EXT_non_seamless_cube_map = true,
};
}
@@ -907,6 +908,12 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
features->vertexInputDynamicState = true;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: {
VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *features =
(VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *)ext;
features->nonSeamlessCubeMap = true;
break;
}
default:
break;
@@ -2771,7 +2778,8 @@ tu_init_sampler(struct tu_device *device,
A6XX_TEX_SAMP_0_WRAP_R(tu6_tex_wrap(pCreateInfo->addressModeW)) |
A6XX_TEX_SAMP_0_LOD_BIAS(pCreateInfo->mipLodBias);
sampler->descriptor[1] =
/* COND(!cso->seamless_cube_map, A6XX_TEX_SAMP_1_CUBEMAPSEAMLESSFILTOFF) | */
COND(pCreateInfo->flags & VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT,
A6XX_TEX_SAMP_1_CUBEMAPSEAMLESSFILTOFF) |
COND(pCreateInfo->unnormalizedCoordinates, A6XX_TEX_SAMP_1_UNNORM_COORDS) |
A6XX_TEX_SAMP_1_MIN_LOD(min_lod) |
A6XX_TEX_SAMP_1_MAX_LOD(max_lod) |