From f6492338962415721511dd904eb3d1e7701bd60e Mon Sep 17 00:00:00 2001 From: Mark Collins Date: Wed, 17 Aug 2022 13:02:38 +0530 Subject: [PATCH] tu: Implement VK_EXT_non_seamless_cube_map Passes CTS tests: dEQP-VK.texture.*non_seamless_* Signed-off-by: Mark Collins Part-of: --- docs/features.txt | 2 +- src/freedreno/ci/traces-freedreno.yml | 4 ++-- src/freedreno/vulkan/tu_device.c | 10 +++++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index e8c5cb185c8..52bb5a099ba 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -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+) diff --git a/src/freedreno/ci/traces-freedreno.yml b/src/freedreno/ci/traces-freedreno.yml index dd52c36a91f..f4e06a1e5d4 100644 --- a/src/freedreno/ci/traces-freedreno.yml +++ b/src/freedreno/ci/traces-freedreno.yml @@ -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. diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c index 4114a047460..877939ca02a 100644 --- a/src/freedreno/vulkan/tu_device.c +++ b/src/freedreno/vulkan/tu_device.c @@ -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) |