OSDN Git Service

intel/blorp: Take a destination swizzle in blorp_blit
authorJason Ekstrand <jason.ekstrand@intel.com>
Sun, 28 Aug 2016 04:57:51 +0000 (21:57 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 13 Sep 2016 02:42:57 +0000 (19:42 -0700)
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_blit.c
src/mesa/drivers/dri/i965/brw_blorp.c

index 173d4fa..d562b17 100644 (file)
@@ -101,7 +101,7 @@ blorp_blit(struct blorp_batch *batch,
            enum isl_format src_format, struct isl_swizzle src_swizzle,
            const struct blorp_surf *dst_surf,
            unsigned dst_level, unsigned dst_layer,
-           enum isl_format dst_format,
+           enum isl_format dst_format, struct isl_swizzle dst_swizzle,
            float src_x0, float src_y0,
            float src_x1, float src_y1,
            float dst_x0, float dst_y0,
index 5bdf05c..c6fba66 100644 (file)
@@ -1363,7 +1363,7 @@ blorp_blit(struct blorp_batch *batch,
            enum isl_format src_format, struct isl_swizzle src_swizzle,
            const struct blorp_surf *dst_surf,
            unsigned dst_level, unsigned dst_layer,
-           enum isl_format dst_format,
+           enum isl_format dst_format, struct isl_swizzle dst_swizzle,
            float src_x0, float src_y0,
            float src_x1, float src_y1,
            float dst_x0, float dst_y0,
@@ -1618,6 +1618,7 @@ blorp_blit(struct blorp_batch *batch,
    brw_blorp_get_blit_kernel(batch->blorp, &params, &wm_prog_key);
 
    params.src.view.swizzle = src_swizzle;
+   params.dst.view.swizzle = dst_swizzle;
 
    batch->blorp->exec(batch, &params);
 }
index b6fe5d1..cc17c98 100644 (file)
@@ -362,6 +362,7 @@ brw_blorp_blit_miptrees(struct brw_context *brw,
               brw_blorp_to_isl_format(brw, src_format, false), src_isl_swizzle,
               &dst_surf, dst_level, dst_layer,
               brw_blorp_to_isl_format(brw, dst_format, true),
+              ISL_SWIZZLE_IDENTITY,
               src_x0, src_y0, src_x1, src_y1,
               dst_x0, dst_y0, dst_x1, dst_y1,
               filter, mirror_x, mirror_y);