intel/isl: Add an isl_swizzle structure and use it for isl_view swizzles
[mesa.git] / src / intel / blorp / blorp_blit.c
index 170c3816e38008e39d622f934daab1bc8e0a7b8a..0531bfb0d293897158af3755b9ecaded296e192f 100644 (file)
@@ -984,7 +984,7 @@ static nir_shader *
 brw_blorp_build_nir_shader(struct blorp_context *blorp,
                            const struct brw_blorp_blit_prog_key *key)
 {
-   const struct brw_device_info *devinfo = blorp->isl_dev->info;
+   const struct gen_device_info *devinfo = blorp->isl_dev->info;
    nir_ssa_def *src_pos, *dst_pos, *color;
 
    /* Sanity checks */
@@ -1271,9 +1271,6 @@ static void
 surf_convert_to_single_slice(const struct isl_device *isl_dev,
                              struct brw_blorp_surface_info *info)
 {
-   /* This only makes sense for a single level and array slice */
-   assert(info->view.levels == 1 && info->view.array_len == 1);
-
    /* Just bail if we have nothing to do. */
    if (info->surf.dim == ISL_SURF_DIM_2D &&
        info->view.base_level == 0 && info->view.base_array_layer == 0 &&
@@ -1393,7 +1390,7 @@ blorp_blit(struct blorp_batch *batch,
            float dst_x1, float dst_y1,
            GLenum filter, bool mirror_x, bool mirror_y)
 {
-   const struct brw_device_info *devinfo = batch->blorp->isl_dev->info;
+   const struct gen_device_info *devinfo = batch->blorp->isl_dev->info;
 
    struct blorp_params params;
    blorp_params_init(&params);
@@ -1640,10 +1637,12 @@ blorp_blit(struct blorp_batch *batch,
 
    brw_blorp_get_blit_kernel(batch->blorp, &params, &wm_prog_key);
 
-   for (unsigned i = 0; i < 4; i++) {
-      params.src.view.channel_select[i] =
-         swizzle_to_scs(GET_SWZ(src_swizzle, i));
-   }
+   params.src.view.swizzle = (struct isl_swizzle) {
+      .r = swizzle_to_scs(GET_SWZ(src_swizzle, 0)),
+      .g = swizzle_to_scs(GET_SWZ(src_swizzle, 1)),
+      .b = swizzle_to_scs(GET_SWZ(src_swizzle, 2)),
+      .a = swizzle_to_scs(GET_SWZ(src_swizzle, 3)),
+   };
 
    batch->blorp->exec(batch, &params);
 }