Patches 2-4 are:

Reviewed-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>

On 03/27/2018 02:39 AM, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

---
  src/gallium/drivers/radeon/r600_texture.c | 29 +++++++++--------------------
  1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_texture.c 
b/src/gallium/drivers/radeon/r600_texture.c
index 1614df63c98..eb6706c9dcd 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -1875,64 +1875,53 @@ static const struct u_resource_vtbl r600_texture_vtbl =
        NULL,                           /* get_handle */
        r600_texture_destroy,           /* resource_destroy */
        r600_texture_transfer_map,      /* transfer_map */
        u_default_transfer_flush_region, /* transfer_flush_region */
        r600_texture_transfer_unmap,    /* transfer_unmap */
  };
/* DCC channel type categories within which formats can be reinterpreted
   * while keeping the same DCC encoding. The swizzle must also match. */
  enum dcc_channel_type {
-       dcc_channel_float32,
-       dcc_channel_uint32,
-       dcc_channel_sint32,
-       dcc_channel_float16,
-       dcc_channel_uint16,
-       dcc_channel_sint16,
+       dcc_channel_float,
+       /* uint and sint can be merged if we never use TC-compatible DCC clear
+        * encoding with the clear value of 1. */
+       dcc_channel_uint,
+       dcc_channel_sint,
        dcc_channel_uint_10_10_10_2,
-       dcc_channel_uint8,
-       dcc_channel_sint8,
        dcc_channel_incompatible,
  };
/* Return the type of DCC encoding. */
  static enum dcc_channel_type
  vi_get_dcc_channel_type(const struct util_format_description *desc)
  {
        int i;
/* Find the first non-void channel. */
        for (i = 0; i < desc->nr_channels; i++)
                if (desc->channel[i].type != UTIL_FORMAT_TYPE_VOID)
                        break;
        if (i == desc->nr_channels)
                return dcc_channel_incompatible;
switch (desc->channel[i].size) {
        case 32:
-               if (desc->channel[i].type == UTIL_FORMAT_TYPE_FLOAT)
-                       return dcc_channel_float32;
-               if (desc->channel[i].type == UTIL_FORMAT_TYPE_UNSIGNED)
-                       return dcc_channel_uint32;
-               return dcc_channel_sint32;
        case 16:
+       case 8:
                if (desc->channel[i].type == UTIL_FORMAT_TYPE_FLOAT)
-                       return dcc_channel_float16;
+                       return dcc_channel_float;
                if (desc->channel[i].type == UTIL_FORMAT_TYPE_UNSIGNED)
-                       return dcc_channel_uint16;
-               return dcc_channel_sint16;
+                       return dcc_channel_uint;
+               return dcc_channel_sint;
        case 10:
                return dcc_channel_uint_10_10_10_2;
-       case 8:
-               if (desc->channel[i].type == UTIL_FORMAT_TYPE_UNSIGNED)
-                       return dcc_channel_uint8;
-               return dcc_channel_sint8;
        default:
                return dcc_channel_incompatible;
        }
  }
/* Return if it's allowed to reinterpret one format as another with DCC enabled. */
  bool vi_dcc_formats_compatible(enum pipe_format format1,
                               enum pipe_format format2)
  {
        const struct util_format_description *desc1, *desc2;

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

Reply via email to