nvk: Implement VK_EXT_non_seamless_cube_map
authorRebecca Mckeever <rebecca.mckeever@collabora.com>
Wed, 4 Jan 2023 23:17:24 +0000 (15:17 -0800)
committerMarge Bot <emma+marge@anholt.net>
Fri, 4 Aug 2023 21:32:03 +0000 (21:32 +0000)
Add new bit to VkSamplerCreateFlags and then advertise
VK_EXT_non_seamless_cube_map.

Closes: https://gitlab.freedesktop.org/nouveau/mesa/-/issues/42

Signed-off-by: Rebecca Mckeever <rebecca.mckeever@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>

src/nouveau/vulkan/nvk_physical_device.c
src/nouveau/vulkan/nvk_sampler.c

index 84227f9..21929bf 100644 (file)
@@ -203,6 +203,11 @@ nvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
          f->indexTypeUint8 = true;
          break;
       }
+      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: {
+         VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *f = (void *)ext;
+         f->nonSeamlessCubeMap = true;
+         break;
+      }
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
          VkPhysicalDeviceProvokingVertexFeaturesEXT *f = (void *)ext;
          f->provokingVertexLast = true;
@@ -476,6 +481,7 @@ nvk_get_device_extensions(const struct nvk_physical_device *pdev,
       .EXT_image_2d_view_of_3d = true,
       .EXT_index_type_uint8 = true,
       .EXT_inline_uniform_block = true,
+      .EXT_non_seamless_cube_map = true,
       .EXT_pci_bus_info = true,
       .EXT_private_data = true,
       .EXT_provoking_vertex = true,
index c6f7263..a0b8002 100644 (file)
@@ -224,7 +224,11 @@ nvk_CreateSampler(VkDevice _device,
    }
 
    assert(device->ctx->eng3d.cls >= KEPLER_A);
-   SAMP_SET_E(samp, NVA097, 1, CUBEMAP_INTERFACE_FILTERING, AUTO_SPAN_SEAM);
+   if (pCreateInfo->flags & VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT) {
+      SAMP_SET_E(samp, NVA097, 1, CUBEMAP_INTERFACE_FILTERING, USE_WRAP);
+   } else {
+      SAMP_SET_E(samp, NVA097, 1, CUBEMAP_INTERFACE_FILTERING, AUTO_SPAN_SEAM);
+   }
 
    if (device->ctx->eng3d.cls >= MAXWELL_B) {
       switch (vk_sampler_create_reduction_mode(pCreateInfo)) {