intel/blorp: Add a format parameter to blorp_fast_clear
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 24 Aug 2016 00:13:07 +0000 (17:13 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 29 Aug 2016 19:17:34 +0000 (12:17 -0700)
This allows us to use the actual render format as opposed to the texture
format.  I don't know that the hardware actually cares in the case of fast
clears, but it certainly seems more correct.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/intel/blorp/blorp.h
src/intel/blorp/blorp_clear.c
src/mesa/drivers/dri/i965/brw_blorp.c

index a4fcfdf..12f1833 100644 (file)
@@ -111,7 +111,7 @@ 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,
+                 uint32_t level, uint32_t layer, enum isl_format format,
                  uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1);
 
 void
index a371dfd..831c8ed 100644 (file)
@@ -209,7 +209,7 @@ 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,
+                 uint32_t level, uint32_t layer, enum isl_format format,
                  uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1)
 {
    struct blorp_params params;
@@ -229,7 +229,7 @@ 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,
-                               surf->surf->format, true);
+                               format, true);
 
    batch->blorp->exec(batch, &params);
 }
index 905383b..c902f2e 100644 (file)
@@ -733,7 +733,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, x0, y0, x1, y1);
+      blorp_fast_clear(&batch, &surf, level, layer,
+                       (enum isl_format)brw->render_target_format[format],
+                       x0, y0, x1, y1);
       blorp_batch_finish(&batch);
 
       /* Now that the fast clear has occurred, put the buffer in