anv: Advertise vertexPipelineStoresAndAtomics based on scalar stages
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 15 Apr 2016 21:53:16 +0000 (14:53 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 15 Apr 2016 21:53:16 +0000 (14:53 -0700)
Previously, we just looked at the hardware generation but this meant that
if you did INTEL_DEBUG=vec4 on BDW or SKL, you would have advertised but
non-working features.

src/intel/vulkan/anv_device.c

index 01d3c996ad2a7a57bcf59f3af01c15b170ff14e8..57c40f53df86e89e9ffa226bb973e034914416fd 100644 (file)
@@ -385,7 +385,6 @@ void anv_GetPhysicalDeviceFeatures(
       .textureCompressionBC                     = true,
       .occlusionQueryPrecise                    = true,
       .pipelineStatisticsQuery                  = false,
-      .vertexPipelineStoresAndAtomics           = pdevice->info->gen >= 8,
       .fragmentStoresAndAtomics                 = true,
       .shaderTessellationAndGeometryPointSize   = true,
       .shaderImageGatherExtended                = true,
@@ -406,6 +405,11 @@ void anv_GetPhysicalDeviceFeatures(
       .variableMultisampleRate                  = false,
       .inheritedQueries                         = false,
    };
+
+   /* We can't do image stores in vec4 shaders */
+   pFeatures->vertexPipelineStoresAndAtomics =
+      !pdevice->compiler->scalar_stage[MESA_SHADER_VERTEX] &&
+      !pdevice->compiler->scalar_stage[MESA_SHADER_GEOMETRY];
 }
 
 void