isl: Take a devinfo in lower_storage_image_format instead of an isl_device
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>
This commit is contained in:
@@ -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);
|
bool isl_is_storage_image_format(enum isl_format fmt);
|
||||||
|
|
||||||
enum isl_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 fmt);
|
enum isl_format fmt);
|
||||||
|
|
||||||
static inline bool
|
static inline bool
|
||||||
|
@@ -76,7 +76,7 @@ isl_is_storage_image_format(enum isl_format format)
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum isl_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)
|
enum isl_format format)
|
||||||
{
|
{
|
||||||
switch (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_UINT:
|
||||||
case ISL_FORMAT_R32G32_SINT:
|
case ISL_FORMAT_R32G32_SINT:
|
||||||
case ISL_FORMAT_R32G32_FLOAT:
|
case ISL_FORMAT_R32G32_FLOAT:
|
||||||
return (ISL_DEV_GEN(dev) >= 9 ? format :
|
return (devinfo->gen >= 9 ? format :
|
||||||
ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
|
devinfo->gen >= 8 || devinfo->is_haswell ?
|
||||||
ISL_FORMAT_R16G16B16A16_UINT :
|
ISL_FORMAT_R16G16B16A16_UINT :
|
||||||
ISL_FORMAT_R32G32_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_UINT:
|
||||||
case ISL_FORMAT_R8G8B8A8_SINT:
|
case ISL_FORMAT_R8G8B8A8_SINT:
|
||||||
return (ISL_DEV_GEN(dev) >= 9 ? format :
|
return (devinfo->gen >= 9 ? format :
|
||||||
ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
|
devinfo->gen >= 8 || devinfo->is_haswell ?
|
||||||
ISL_FORMAT_R8G8B8A8_UINT : ISL_FORMAT_R32_UINT);
|
ISL_FORMAT_R8G8B8A8_UINT : ISL_FORMAT_R32_UINT);
|
||||||
|
|
||||||
case ISL_FORMAT_R16G16_UINT:
|
case ISL_FORMAT_R16G16_UINT:
|
||||||
case ISL_FORMAT_R16G16_SINT:
|
case ISL_FORMAT_R16G16_SINT:
|
||||||
case ISL_FORMAT_R16G16_FLOAT:
|
case ISL_FORMAT_R16G16_FLOAT:
|
||||||
return (ISL_DEV_GEN(dev) >= 9 ? format :
|
return (devinfo->gen >= 9 ? format :
|
||||||
ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
|
devinfo->gen >= 8 || devinfo->is_haswell ?
|
||||||
ISL_FORMAT_R16G16_UINT : ISL_FORMAT_R32_UINT);
|
ISL_FORMAT_R16G16_UINT : ISL_FORMAT_R32_UINT);
|
||||||
|
|
||||||
case ISL_FORMAT_R8G8_UINT:
|
case ISL_FORMAT_R8G8_UINT:
|
||||||
case ISL_FORMAT_R8G8_SINT:
|
case ISL_FORMAT_R8G8_SINT:
|
||||||
return (ISL_DEV_GEN(dev) >= 9 ? format :
|
return (devinfo->gen >= 9 ? format :
|
||||||
ISL_DEV_GEN(dev) >= 8 || dev->info->is_haswell ?
|
devinfo->gen >= 8 || devinfo->is_haswell ?
|
||||||
ISL_FORMAT_R8G8_UINT : ISL_FORMAT_R16_UINT);
|
ISL_FORMAT_R8G8_UINT : ISL_FORMAT_R16_UINT);
|
||||||
|
|
||||||
case ISL_FORMAT_R16_UINT:
|
case ISL_FORMAT_R16_UINT:
|
||||||
case ISL_FORMAT_R16_FLOAT:
|
case ISL_FORMAT_R16_FLOAT:
|
||||||
case ISL_FORMAT_R16_SINT:
|
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_UINT:
|
||||||
case ISL_FORMAT_R8_SINT:
|
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
|
/* Neither the 2/10/10/10 nor the 11/11/10 packed formats are supported
|
||||||
* by the hardware.
|
* 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. */
|
/* No normalized fixed-point formats are supported by the hardware. */
|
||||||
case ISL_FORMAT_R16G16B16A16_UNORM:
|
case ISL_FORMAT_R16G16B16A16_UNORM:
|
||||||
case ISL_FORMAT_R16G16B16A16_SNORM:
|
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_R16G16B16A16_UINT :
|
||||||
ISL_FORMAT_R32G32_UINT);
|
ISL_FORMAT_R32G32_UINT);
|
||||||
|
|
||||||
case ISL_FORMAT_R8G8B8A8_UNORM:
|
case ISL_FORMAT_R8G8B8A8_UNORM:
|
||||||
case ISL_FORMAT_R8G8B8A8_SNORM:
|
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);
|
ISL_FORMAT_R8G8B8A8_UINT : ISL_FORMAT_R32_UINT);
|
||||||
|
|
||||||
case ISL_FORMAT_R16G16_UNORM:
|
case ISL_FORMAT_R16G16_UNORM:
|
||||||
case ISL_FORMAT_R16G16_SNORM:
|
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);
|
ISL_FORMAT_R16G16_UINT : ISL_FORMAT_R32_UINT);
|
||||||
|
|
||||||
case ISL_FORMAT_R8G8_UNORM:
|
case ISL_FORMAT_R8G8_UNORM:
|
||||||
case ISL_FORMAT_R8G8_SNORM:
|
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);
|
ISL_FORMAT_R8G8_UINT : ISL_FORMAT_R16_UINT);
|
||||||
|
|
||||||
case ISL_FORMAT_R16_UNORM:
|
case ISL_FORMAT_R16_UNORM:
|
||||||
|
@@ -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) {
|
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 {
|
} else {
|
||||||
s.SurfaceFormat = info->view->format;
|
s.SurfaceFormat = info->view->format;
|
||||||
}
|
}
|
||||||
|
@@ -678,7 +678,7 @@ void anv_buffer_view_init(struct anv_buffer_view *view,
|
|||||||
|
|
||||||
enum isl_format storage_format =
|
enum isl_format storage_format =
|
||||||
has_matching_storage_typed_format(device, view->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;
|
ISL_FORMAT_RAW;
|
||||||
|
|
||||||
anv_fill_buffer_surface_state(device, view->storage_surface_state,
|
anv_fill_buffer_surface_state(device, view->storage_surface_state,
|
||||||
|
Reference in New Issue
Block a user