isl: Take a devinfo in lower_storage_image_format instead of an isl_device
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 15 Apr 2016 23:53:31 +0000 (16:53 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 22 Apr 2016 03:44:27 +0000 (20:44 -0700)
We want to call this function from the shader compiler and having a full
isl_device available at that point isn't practical.

Reviewed-by: Chad Versace <chad.versace@intel.com>
src/intel/isl/isl.h
src/intel/isl/isl_storage_image.c
src/intel/isl/isl_surface_state.c
src/intel/vulkan/anv_image.c

index 62d3769feea4fb87f6b4c5096d12acc3b8dc59b4..6c417b29f4ca5f911391b4944da92e471d447299 100644 (file)
@@ -900,7 +900,7 @@ enum isl_format isl_format_rgb_to_rgbx(enum isl_format rgb) ATTRIBUTE_CONST;
 bool isl_is_storage_image_format(enum isl_format fmt);
 
 enum isl_format
-isl_lower_storage_image_format(const struct isl_device *dev,
+isl_lower_storage_image_format(const struct brw_device_info *devinfo,
                                enum isl_format fmt);
 
 static inline bool
index 2b5b5cdbaed7058849006afb26c02762f6c7b86a..8d9bea3f9547ca08f212ee68b161a82f6207c7ec 100644 (file)
@@ -76,7 +76,7 @@ isl_is_storage_image_format(enum isl_format format)
 }
 
 enum isl_format
-isl_lower_storage_image_format(const struct isl_device *dev,
+isl_lower_storage_image_format(const struct brw_device_info *devinfo,
                                enum isl_format format)
 {
    switch (format) {
@@ -100,8 +100,8 @@ isl_lower_storage_image_format(const struct isl_device *dev,
    case ISL_FORMAT_R32G32_UINT:
    case ISL_FORMAT_R32G32_SINT:
    case ISL_FORMAT_R32G32_FLOAT:
-      return (ISL_DEV_GEN(dev) >= 9 ? format :
-              ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
+      return (devinfo->gen >= 9 ? format :
+              devinfo->gen >= 8 || devinfo->is_haswell ?
               ISL_FORMAT_R16G16B16A16_UINT :
               ISL_FORMAT_R32G32_UINT);
 
@@ -117,31 +117,31 @@ isl_lower_storage_image_format(const struct isl_device *dev,
     */
    case ISL_FORMAT_R8G8B8A8_UINT:
    case ISL_FORMAT_R8G8B8A8_SINT:
-      return (ISL_DEV_GEN(dev) >= 9 ? format :
-              ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
+      return (devinfo->gen >= 9 ? format :
+              devinfo->gen >= 8 || devinfo->is_haswell ?
               ISL_FORMAT_R8G8B8A8_UINT : ISL_FORMAT_R32_UINT);
 
    case ISL_FORMAT_R16G16_UINT:
    case ISL_FORMAT_R16G16_SINT:
    case ISL_FORMAT_R16G16_FLOAT:
-      return (ISL_DEV_GEN(dev) >= 9 ? format :
-              ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
+      return (devinfo->gen >= 9 ? format :
+              devinfo->gen >= 8 || devinfo->is_haswell ?
               ISL_FORMAT_R16G16_UINT : ISL_FORMAT_R32_UINT);
 
    case ISL_FORMAT_R8G8_UINT:
    case ISL_FORMAT_R8G8_SINT:
-      return (ISL_DEV_GEN(dev) >= 9 ? format :
-              ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
+      return (devinfo->gen >= 9 ? format :
+              devinfo->gen >= 8 || devinfo->is_haswell ?
               ISL_FORMAT_R8G8_UINT : ISL_FORMAT_R16_UINT);
 
    case ISL_FORMAT_R16_UINT:
    case ISL_FORMAT_R16_FLOAT:
    case ISL_FORMAT_R16_SINT:
-      return (ISL_DEV_GEN(dev) >= 9 ? format : ISL_FORMAT_R16_UINT);
+      return (devinfo->gen >= 9 ? format : ISL_FORMAT_R16_UINT);
 
    case ISL_FORMAT_R8_UINT:
    case ISL_FORMAT_R8_SINT:
-      return (ISL_DEV_GEN(dev) >= 9 ? format : ISL_FORMAT_R8_UINT);
+      return (devinfo->gen >= 9 ? format : ISL_FORMAT_R8_UINT);
 
    /* Neither the 2/10/10/10 nor the 11/11/10 packed formats are supported
     * by the hardware.
@@ -154,23 +154,23 @@ isl_lower_storage_image_format(const struct isl_device *dev,
    /* No normalized fixed-point formats are supported by the hardware. */
    case ISL_FORMAT_R16G16B16A16_UNORM:
    case ISL_FORMAT_R16G16B16A16_SNORM:
-      return (ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
+      return (devinfo->gen >= 8 || devinfo->is_haswell ?
               ISL_FORMAT_R16G16B16A16_UINT :
               ISL_FORMAT_R32G32_UINT);
 
    case ISL_FORMAT_R8G8B8A8_UNORM:
    case ISL_FORMAT_R8G8B8A8_SNORM:
-      return (ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
+      return (devinfo->gen >= 8 || devinfo->is_haswell ?
               ISL_FORMAT_R8G8B8A8_UINT : ISL_FORMAT_R32_UINT);
 
    case ISL_FORMAT_R16G16_UNORM:
    case ISL_FORMAT_R16G16_SNORM:
-      return (ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
+      return (devinfo->gen >= 8 || devinfo->is_haswell ?
               ISL_FORMAT_R16G16_UINT : ISL_FORMAT_R32_UINT);
 
    case ISL_FORMAT_R8G8_UNORM:
    case ISL_FORMAT_R8G8_SNORM:
-      return (ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
+      return (devinfo->gen >= 8 || devinfo->is_haswell ?
               ISL_FORMAT_R8G8_UINT : ISL_FORMAT_R16_UINT);
 
    case ISL_FORMAT_R16_UNORM:
index cac59fab78e2b1b1dab2b441f976a7fcf3a1b0d4..dd885313aedfce5cb5e7c4c7f3f7bd1f19ad431c 100644 (file)
@@ -308,7 +308,8 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
    }
 
    if (info->view->usage & ISL_SURF_USAGE_STORAGE_BIT) {
-      s.SurfaceFormat = isl_lower_storage_image_format(dev, info->view->format);
+      s.SurfaceFormat =
+         isl_lower_storage_image_format(dev->info, info->view->format);
    } else {
       s.SurfaceFormat = info->view->format;
    }
index db1096253160cdfd952888dd447882512da40df3..7236b8146c0a75c07537480b11d0675adc633112 100644 (file)
@@ -678,7 +678,7 @@ void anv_buffer_view_init(struct anv_buffer_view *view,
 
       enum isl_format storage_format =
          has_matching_storage_typed_format(device, view->format) ?
-         isl_lower_storage_image_format(&device->isl_dev, view->format) :
+         isl_lower_storage_image_format(&device->info, view->format) :
          ISL_FORMAT_RAW;
 
       anv_fill_buffer_surface_state(device, view->storage_surface_state,