etnaviv: rs: choose clear format based on block size
authorChristian Gmeiner <christian.gmeiner@gmail.com>
Sun, 26 May 2019 19:06:51 +0000 (21:06 +0200)
committerChristian Gmeiner <christian.gmeiner@gmail.com>
Mon, 27 May 2019 18:55:11 +0000 (20:55 +0200)
Fixes following piglit and does not introduce any regressions.
  spec@ext_packed_depth_stencil@fbo-depth-gl_depth24_stencil8-blit

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
src/gallium/drivers/etnaviv/etnaviv_rs.c

index a9d3872..f51a81e 100644 (file)
@@ -254,7 +254,19 @@ etna_rs_gen_clear_surface(struct etna_context *ctx, struct etna_surface *surf,
                           uint32_t clear_value)
 {
    struct etna_resource *dst = etna_resource(surf->base.texture);
-   uint32_t format = translate_rs_format(surf->base.format);
+   uint32_t format;
+
+   switch (util_format_get_blocksizebits(surf->base.format)) {
+   case 16:
+      format = RS_FORMAT_A4R4G4B4;
+      break;
+   case 32:
+      format = RS_FORMAT_A8R8G8B8;
+      break;
+   default:
+      format = ETNA_NO_MATCH;
+      break;
+   }
 
    if (format == ETNA_NO_MATCH) {
       BUG("etna_rs_gen_clear_surface: Unhandled clear fmt %s", util_format_name(surf->base.format));