Mesa (master): intel/blorp: Add plumbing for setting color clear layer count

Topi Pohjolainen tpohjola at kemper.freedesktop.org
Mon Sep 12 10:54:00 UTC 2016


Module: Mesa
Branch: master
Commit: a1c7de09dc2b00cc990903ebee52228315e5d4e5
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a1c7de09dc2b00cc990903ebee52228315e5d4e5

Author: Topi Pohjolainen <topi.pohjolainen at intel.com>
Date:   Fri Aug 26 18:44:18 2016 +0300

intel/blorp: Add plumbing for setting color clear layer count

Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 src/intel/blorp/blorp.h               |  6 +++---
 src/intel/blorp/blorp_clear.c         | 16 +++++++++-------
 src/mesa/drivers/dri/i965/brw_blorp.c |  6 +++---
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h
index 12f1833..238e7c7 100644
--- a/src/intel/blorp/blorp.h
+++ b/src/intel/blorp/blorp.h
@@ -110,14 +110,14 @@ blorp_blit(struct blorp_batch *batch,
 
 void
 blorp_fast_clear(struct blorp_batch *batch,
-                 const struct blorp_surf *surf,
-                 uint32_t level, uint32_t layer, enum isl_format format,
+                 const struct blorp_surf *surf, enum isl_format format,
+                 uint32_t level, uint32_t start_layer, uint32_t num_layers,
                  uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1);
 
 void
 blorp_clear(struct blorp_batch *batch,
             const struct blorp_surf *surf,
-            uint32_t level, uint32_t layer,
+            uint32_t level, uint32_t start_layer, uint32_t num_layers,
             uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1,
             enum isl_format format, union isl_color_value clear_color,
             bool color_write_disable[4]);
diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c
index 831c8ed..cba4823 100644
--- a/src/intel/blorp/blorp_clear.c
+++ b/src/intel/blorp/blorp_clear.c
@@ -208,12 +208,13 @@ get_fast_clear_rect(const struct isl_device *dev,
 
 void
 blorp_fast_clear(struct blorp_batch *batch,
-                 const struct blorp_surf *surf,
-                 uint32_t level, uint32_t layer, enum isl_format format,
+                 const struct blorp_surf *surf, enum isl_format format,
+                 uint32_t level, uint32_t start_layer, uint32_t num_layers,
                  uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1)
 {
    struct blorp_params params;
    blorp_params_init(&params);
+   params.num_layers = num_layers;
 
    params.x0 = x0;
    params.y0 = y0;
@@ -228,8 +229,8 @@ blorp_fast_clear(struct blorp_batch *batch,
 
    blorp_params_get_clear_kernel(batch->blorp, &params, true);
 
-   brw_blorp_surface_info_init(batch->blorp, &params.dst, surf, level, layer,
-                               format, true);
+   brw_blorp_surface_info_init(batch->blorp, &params.dst, surf, level,
+                               start_layer, format, true);
 
    batch->blorp->exec(batch, &params);
 }
@@ -238,13 +239,14 @@ blorp_fast_clear(struct blorp_batch *batch,
 void
 blorp_clear(struct blorp_batch *batch,
             const struct blorp_surf *surf,
-            uint32_t level, uint32_t layer,
+            uint32_t level, uint32_t start_layer, uint32_t num_layers,
             uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1,
             enum isl_format format, union isl_color_value clear_color,
             bool color_write_disable[4])
 {
    struct blorp_params params;
    blorp_params_init(&params);
+   params.num_layers = num_layers;
 
    params.x0 = x0;
    params.y0 = y0;
@@ -276,8 +278,8 @@ blorp_clear(struct blorp_batch *batch,
    blorp_params_get_clear_kernel(batch->blorp, &params,
                                  use_simd16_replicated_data);
 
-   brw_blorp_surface_info_init(batch->blorp, &params.dst, surf, level, layer,
-                               format, true);
+   brw_blorp_surface_info_init(batch->blorp, &params.dst, surf, level,
+                               start_layer, format, true);
 
    batch->blorp->exec(batch, &params);
 }
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c
index fdaf429..dc2be1e 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.c
+++ b/src/mesa/drivers/dri/i965/brw_blorp.c
@@ -735,9 +735,9 @@ do_single_blorp_clear(struct brw_context *brw, struct gl_framebuffer *fb,
 
       struct blorp_batch batch;
       blorp_batch_init(&brw->blorp, &batch, brw);
-      blorp_fast_clear(&batch, &surf, level, layer,
+      blorp_fast_clear(&batch, &surf,
                        (enum isl_format)brw->render_target_format[format],
-                       x0, y0, x1, y1);
+                       level, layer, 1, x0, y0, x1, y1);
       blorp_batch_finish(&batch);
 
       /* Now that the fast clear has occurred, put the buffer in
@@ -754,7 +754,7 @@ do_single_blorp_clear(struct brw_context *brw, struct gl_framebuffer *fb,
 
       struct blorp_batch batch;
       blorp_batch_init(&brw->blorp, &batch, brw);
-      blorp_clear(&batch, &surf, level, layer, x0, y0, x1, y1,
+      blorp_clear(&batch, &surf, level, layer, 1, x0, y0, x1, y1,
                   (enum isl_format)brw->render_target_format[format],
                   clear_color, color_write_disable);
       blorp_batch_finish(&batch);




More information about the mesa-commit mailing list