You’re absolutely correct, the gallivm sampler supports all formats regardless 
of our table.  I stand corrected.

Reviewed-by: Bruce Cherniak 
<bruce.chern...@intel.com<mailto:bruce.chern...@intel.com>>

On Nov 14, 2016, at 10:38 PM, Ilia Mirkin 
<imir...@alum.mit.edu<mailto:imir...@alum.mit.edu>> wrote:


All formats are supported by the gallivm texturing logic (except some 
compressed ones). Swr backend only needs to know about the format for 
rendering, not texturing. Makes sense to me just list the renderable ones here.

If you want a reminder of which formats could be renderable but aren't, how 
about leaving all those in a comment?

Either way, the most important change is to remove all the l/la/i swr format 
enums (I.e. make the function return -1) since they only have load, not store 
implementations. If you still disagree with the above reasoning, I'll redo that 
bit of the series.

On Nov 14, 2016 8:47 PM, "Cherniak, Bruce" 
<bruce.chern...@intel.com<mailto:bruce.chern...@intel.com>> wrote:
This table lists all supported formats (both renderable and texturable).

swr_texture_layout calls mesa_to_swr_format to convert the PIPE_FORMAT_* to the 
appropriate SWR_FORMAT enum.  Removing these entries would result in -1 
(unsupported format).  We might need to add a “is_renderable” field to the 
table for its use in swr_is_format_supported, but I believe these formats 
should remain.

Although, it looks like you highlighted another bug, swr_texture_layout should 
return false with an early test for mesa_to_swr_format(fmt), rather than 
continuing on.


> On Nov 12, 2016, at 5:00 PM, Ilia Mirkin 
> <imir...@alum.mit.edu<mailto:imir...@alum.mit.edu>> wrote:
>
> This table exists for the purpose of determining renderable formats.
> Without a StoreTile implementation, that can't happen.
>
> This basically removes rendering support to all L/LA/I formats. They can
> be re-added when/if StoreTile implementations are added.
>
> Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu<mailto:imir...@alum.mit.edu>>
> ---
> src/gallium/drivers/swr/swr_screen.cpp | 86 +++++++++++++++++++---------------
> 1 file changed, 48 insertions(+), 38 deletions(-)
>
> diff --git a/src/gallium/drivers/swr/swr_screen.cpp 
> b/src/gallium/drivers/swr/swr_screen.cpp
> index 98f5e44..9e80e94 100644
> --- a/src/gallium/drivers/swr/swr_screen.cpp
> +++ b/src/gallium/drivers/swr/swr_screen.cpp
> @@ -427,12 +427,7 @@ mesa_to_swr_format(enum pipe_format format)
>       {PIPE_FORMAT_B4G4R4A4_UNORM,         B4G4R4A4_UNORM},
>       {PIPE_FORMAT_B5G6R5_UNORM,           B5G6R5_UNORM},
>       {PIPE_FORMAT_R10G10B10A2_UNORM,      R10G10B10A2_UNORM},
> -      {PIPE_FORMAT_L8_UNORM,               L8_UNORM},
>       {PIPE_FORMAT_A8_UNORM,               A8_UNORM},
> -      {PIPE_FORMAT_I8_UNORM,               I8_UNORM},
> -      {PIPE_FORMAT_L8A8_UNORM,             L8A8_UNORM},
> -      {PIPE_FORMAT_L16_UNORM,              L16_UNORM},
> -      {PIPE_FORMAT_UYVY,                   YCRCB_SWAPUVY},
>       {PIPE_FORMAT_Z16_UNORM,              R16_UNORM}, // z
>       {PIPE_FORMAT_Z32_FLOAT,              R32_FLOAT}, // z
>       {PIPE_FORMAT_Z24_UNORM_S8_UINT,      R24_UNORM_X8_TYPELESS}, // z
> @@ -486,26 +481,11 @@ mesa_to_swr_format(enum pipe_format format)
>       {PIPE_FORMAT_R16G16B16_FLOAT,        R16G16B16_FLOAT},
>       {PIPE_FORMAT_R16G16B16A16_FLOAT,     R16G16B16A16_FLOAT},
>
> -      {PIPE_FORMAT_L8_SRGB,                L8_UNORM_SRGB},
> -      {PIPE_FORMAT_L8A8_SRGB,              L8A8_UNORM_SRGB},
>       {PIPE_FORMAT_R8G8B8_SRGB,            R8G8B8_UNORM_SRGB},
>       {PIPE_FORMAT_B8G8R8A8_SRGB,          B8G8R8A8_UNORM_SRGB},
>       {PIPE_FORMAT_B8G8R8X8_SRGB,          B8G8R8X8_UNORM_SRGB},
>       {PIPE_FORMAT_R8G8B8A8_SRGB,          R8G8B8A8_UNORM_SRGB},
>
> -      {PIPE_FORMAT_DXT1_RGBA,              BC1_UNORM},
> -      {PIPE_FORMAT_DXT3_RGBA,              BC2_UNORM},
> -      {PIPE_FORMAT_DXT5_RGBA,              BC3_UNORM},
> -
> -      {PIPE_FORMAT_DXT1_SRGBA,             BC1_UNORM_SRGB},
> -      {PIPE_FORMAT_DXT3_SRGBA,             BC2_UNORM_SRGB},
> -      {PIPE_FORMAT_DXT5_SRGBA,             BC3_UNORM_SRGB},
> -
> -      {PIPE_FORMAT_RGTC1_UNORM,            BC4_UNORM},
> -      {PIPE_FORMAT_RGTC1_SNORM,            BC4_SNORM},
> -      {PIPE_FORMAT_RGTC2_UNORM,            BC5_UNORM},
> -      {PIPE_FORMAT_RGTC2_SNORM,            BC5_SNORM},
> -
>       {PIPE_FORMAT_B5G5R5X1_UNORM,         B5G5R5X1_UNORM},
>       {PIPE_FORMAT_R10G10B10A2_USCALED,    R10G10B10A2_USCALED},
>       {PIPE_FORMAT_R11G11B10_FLOAT,        R11G11B10_FLOAT},
> @@ -514,18 +494,9 @@ mesa_to_swr_format(enum pipe_format format)
>       {PIPE_FORMAT_B10G10R10A2_UNORM,      B10G10R10A2_UNORM},
>       {PIPE_FORMAT_R8G8B8X8_UNORM,         R8G8B8X8_UNORM},
>
> -      {PIPE_FORMAT_L16A16_UNORM,           L16A16_UNORM},
>       {PIPE_FORMAT_A16_UNORM,              A16_UNORM},
> -      {PIPE_FORMAT_I16_UNORM,              I16_UNORM},
> -
>       {PIPE_FORMAT_A16_FLOAT,              A16_FLOAT},
> -      {PIPE_FORMAT_L16_FLOAT,              L16_FLOAT},
> -      {PIPE_FORMAT_L16A16_FLOAT,           L16A16_FLOAT},
> -      {PIPE_FORMAT_I16_FLOAT,              I16_FLOAT},
>       {PIPE_FORMAT_A32_FLOAT,              A32_FLOAT},
> -      {PIPE_FORMAT_L32_FLOAT,              L32_FLOAT},
> -      {PIPE_FORMAT_L32A32_FLOAT,           L32A32_FLOAT},
> -      {PIPE_FORMAT_I32_FLOAT,              I32_FLOAT},
>
>       {PIPE_FORMAT_R10G10B10A2_SSCALED,    R10G10B10A2_SSCALED},
>       {PIPE_FORMAT_R10G10B10A2_SNORM,      R10G10B10A2_SNORM},
> @@ -564,14 +535,6 @@ mesa_to_swr_format(enum pipe_format format)
>       {PIPE_FORMAT_R32G32B32_SINT,         R32G32B32_SINT},
>       {PIPE_FORMAT_R32G32B32A32_SINT,      R32G32B32A32_SINT},
>
> -      {PIPE_FORMAT_I8_UINT,                I8_UINT},
> -      {PIPE_FORMAT_L8_UINT,                L8_UINT},
> -      {PIPE_FORMAT_L8A8_UINT,              L8A8_UINT},
> -
> -      {PIPE_FORMAT_I8_SINT,                I8_SINT},
> -      {PIPE_FORMAT_L8_SINT,                L8_SINT},
> -      {PIPE_FORMAT_L8A8_SINT,              L8A8_SINT},
> -
>       {PIPE_FORMAT_B10G10R10A2_UINT,       B10G10R10A2_UINT},
>
>       {PIPE_FORMAT_B10G10R10X2_UNORM,      B10G10R10X2_UNORM},
> @@ -580,7 +543,54 @@ mesa_to_swr_format(enum pipe_format format)
>       {PIPE_FORMAT_R32G32B32X32_FLOAT,     R32G32B32X32_FLOAT},
>       {PIPE_FORMAT_R10G10B10A2_UINT,       R10G10B10A2_UINT},
>
> -      {PIPE_FORMAT_B5G6R5_SRGB,            B5G6R5_UNORM_SRGB}
> +      {PIPE_FORMAT_B5G6R5_SRGB,            B5G6R5_UNORM_SRGB},
> +
> +      /* These formats have entries in SWR but don't have Load/StoreTile
> +       * implementations. That means these aren't renderable, and thus having
> +       * a mapping entry here is detrimental.
> +       */
> +      /*
> +
> +      {PIPE_FORMAT_L8_UNORM,               L8_UNORM},
> +      {PIPE_FORMAT_I8_UNORM,               I8_UNORM},
> +      {PIPE_FORMAT_L8A8_UNORM,             L8A8_UNORM},
> +      {PIPE_FORMAT_L16_UNORM,              L16_UNORM},
> +      {PIPE_FORMAT_UYVY,                   YCRCB_SWAPUVY},
> +
> +      {PIPE_FORMAT_L8_SRGB,                L8_UNORM_SRGB},
> +      {PIPE_FORMAT_L8A8_SRGB,              L8A8_UNORM_SRGB},
> +
> +      {PIPE_FORMAT_DXT1_RGBA,              BC1_UNORM},
> +      {PIPE_FORMAT_DXT3_RGBA,              BC2_UNORM},
> +      {PIPE_FORMAT_DXT5_RGBA,              BC3_UNORM},
> +
> +      {PIPE_FORMAT_DXT1_SRGBA,             BC1_UNORM_SRGB},
> +      {PIPE_FORMAT_DXT3_SRGBA,             BC2_UNORM_SRGB},
> +      {PIPE_FORMAT_DXT5_SRGBA,             BC3_UNORM_SRGB},
> +
> +      {PIPE_FORMAT_RGTC1_UNORM,            BC4_UNORM},
> +      {PIPE_FORMAT_RGTC1_SNORM,            BC4_SNORM},
> +      {PIPE_FORMAT_RGTC2_UNORM,            BC5_UNORM},
> +      {PIPE_FORMAT_RGTC2_SNORM,            BC5_SNORM},
> +
> +      {PIPE_FORMAT_L16A16_UNORM,           L16A16_UNORM},
> +      {PIPE_FORMAT_I16_UNORM,              I16_UNORM},
> +      {PIPE_FORMAT_L16_FLOAT,              L16_FLOAT},
> +      {PIPE_FORMAT_L16A16_FLOAT,           L16A16_FLOAT},
> +      {PIPE_FORMAT_I16_FLOAT,              I16_FLOAT},
> +      {PIPE_FORMAT_L32_FLOAT,              L32_FLOAT},
> +      {PIPE_FORMAT_L32A32_FLOAT,           L32A32_FLOAT},
> +      {PIPE_FORMAT_I32_FLOAT,              I32_FLOAT},
> +
> +      {PIPE_FORMAT_I8_UINT,                I8_UINT},
> +      {PIPE_FORMAT_L8_UINT,                L8_UINT},
> +      {PIPE_FORMAT_L8A8_UINT,              L8A8_UINT},
> +
> +      {PIPE_FORMAT_I8_SINT,                I8_SINT},
> +      {PIPE_FORMAT_L8_SINT,                L8_SINT},
> +      {PIPE_FORMAT_L8A8_SINT,              L8A8_SINT},
> +
> +      */
>    };
>
>    try {
> --
> 2.7.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org<mailto:mesa-dev@lists.freedesktop.org>
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to