anv: Add support for the variablePointers feature
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 19 Oct 2017 01:02:49 +0000 (18:02 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 6 Dec 2017 06:01:54 +0000 (22:01 -0800)
Not to be confused with variablePointersStorageBuffer which is the
subset of VK_KHR_variable_pointers required to enable the extension.
This means we now have "full" support for variable pointers.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_pipeline.c

index 97124154b690b4d942aaf3e852094bd6d2494d2f..2e85189e88b9c035192f488d47f1704ad0ea0259 100644 (file)
@@ -728,7 +728,7 @@ void anv_GetPhysicalDeviceFeatures2KHR(
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR: {
          VkPhysicalDeviceVariablePointerFeaturesKHR *features = (void *)ext;
          features->variablePointersStorageBuffer = true;
-         features->variablePointers = false;
+         features->variablePointers = true;
          break;
       }
 
index 827767cb76f747963d19166fb299fef84ff6a846..bd9c5526563a271b71c172c3c4e9e14f41a54faa 100644 (file)
@@ -133,6 +133,7 @@ anv_shader_compile_to_nir(struct anv_pipeline *pipeline,
    }
 
    struct spirv_to_nir_options spirv_options = {
+      .lower_workgroup_access_to_offsets = true,
       .caps = {
          .float64 = device->instance->physicalDevice.info.gen >= 8,
          .int64 = device->instance->physicalDevice.info.gen >= 8,
@@ -400,10 +401,8 @@ anv_pipeline_compile(struct anv_pipeline *pipeline,
    if (stage != MESA_SHADER_COMPUTE)
       NIR_PASS_V(nir, anv_nir_lower_multiview, pipeline->subpass->view_mask);
 
-   if (stage == MESA_SHADER_COMPUTE) {
-      NIR_PASS_V(nir, brw_nir_lower_cs_shared);
+   if (stage == MESA_SHADER_COMPUTE)
       prog_data->total_shared = nir->num_shared;
-   }
 
    nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir));