Lines Matching refs:info

73 v3d_render_blit(struct pipe_context *ctx, struct pipe_blit_info *info)
76 struct v3d_resource *src = v3d_resource(info->src.resource);
79 if (!info->mask)
83 info->src.resource->target != PIPE_TEXTURE_1D &&
84 info->src.resource->target != PIPE_TEXTURE_1D_ARRAY) {
88 .width = u_minify(info->src.resource->width0,
89 info->src.level),
90 .height = u_minify(info->src.resource->height0,
91 info->src.level),
95 .target = info->src.resource->target,
96 .format = info->src.resource->format,
110 info->src.resource, info->src.level,
112 info->src.level = 0;
113 info->src.resource = tiled;
116 if (!util_blitter_is_blit_supported(v3d->blitter, info)) {
118 util_format_short_name(info->src.format),
119 util_format_short_name(info->dst.format));
124 util_blitter_blit(v3d->blitter, info);
127 info->mask = 0;
134 v3d_stencil_blit(struct pipe_context *ctx, struct pipe_blit_info *info)
137 struct v3d_resource *src = v3d_resource(info->src.resource);
138 struct v3d_resource *dst = v3d_resource(info->dst.resource);
141 if ((info->mask & PIPE_MASK_S) == 0)
161 .level = info->dst.level,
162 .first_layer = info->dst.box.z,
163 .last_layer = info->dst.box.z,
175 .first_level = info->src.level,
176 .last_level = info->src.level,
180 info->src.level) - 1 :
192 util_blitter_blit_generic(v3d->blitter, dst_surf, &info->dst.box,
193 src_view, &info->src.box,
197 info->scissor_enable ? &info->scissor : NULL,
198 info->alpha_blend, false, 0);
203 info->mask &= ~PIPE_MASK_S;
366 v3d_tfu_blit(struct pipe_context *pctx, struct pipe_blit_info *info)
368 int dst_width = u_minify(info->dst.resource->width0, info->dst.level);
369 int dst_height = u_minify(info->dst.resource->height0, info->dst.level);
371 if ((info->mask & PIPE_MASK_RGBA) == 0)
374 if (info->scissor_enable ||
375 info->dst.box.x != 0 ||
376 info->dst.box.y != 0 ||
377 info->dst.box.width != dst_width ||
378 info->dst.box.height != dst_height ||
379 info->dst.box.depth != 1 ||
380 info->src.box.x != 0 ||
381 info->src.box.y != 0 ||
382 info->src.box.width != info->dst.box.width ||
383 info->src.box.height != info->dst.box.height ||
384 info->src.box.depth != 1) {
388 if (info->dst.format != info->src.format)
391 if (v3d_tfu(pctx, info->dst.resource, info->src.resource,
392 info->src.level,
393 info->dst.level, info->dst.level,
394 info->src.box.z, info->dst.box.z,
396 info->mask &= ~PIPE_MASK_RGBA;
424 v3d_tlb_blit(struct pipe_context *pctx, struct pipe_blit_info *info)
429 if (screen->devinfo.ver < 40 || !info->mask)
432 bool is_color_blit = info->mask & PIPE_MASK_RGBA;
433 bool is_depth_blit = info->mask & PIPE_MASK_Z;
434 bool is_stencil_blit = info->mask & PIPE_MASK_S;
442 if (info->scissor_enable)
445 if (info->src.box.x != info->dst.box.x ||
446 info->src.box.y != info->dst.box.y ||
447 info->src.box.width != info->dst.box.width ||
448 info->src.box.height != info->dst.box.height)
452 util_format_is_depth_or_stencil(info->dst.format))
455 if (!v3d_rt_format_supported(&screen->devinfo, info->src.format))
458 if (v3d_get_rt_format(&screen->devinfo, info->src.format) !=
459 v3d_get_rt_format(&screen->devinfo, info->dst.format))
462 bool msaa = (info->src.resource->nr_samples > 1 ||
463 info->dst.resource->nr_samples > 1);
464 bool is_msaa_resolve = (info->src.resource->nr_samples > 1 &&
465 info->dst.resource->nr_samples < 2);
468 !v3d_format_supports_tlb_msaa_resolve(&screen->devinfo, info->src.format))
471 v3d_flush_jobs_writing_resource(v3d, info->src.resource, V3D_FLUSH_DEFAULT, false);
474 v3d_get_blit_surface(pctx, info->dst.resource, info->dst.format, info->dst.level, info->dst.box.z);
476 v3d_get_blit_surface(pctx, info->src.resource, info->src.format, info->src.level, info->src.box.z);
490 int dst_surface_width = u_minify(info->dst.resource->width0,
491 info->dst.level);
492 int dst_surface_height = u_minify(info->dst.resource->height0,
493 info->dst.level);
494 if (is_tile_unaligned(info->dst.box.x, tile_width) ||
495 is_tile_unaligned(info->dst.box.y, tile_height) ||
496 (is_tile_unaligned(info->dst.box.width, tile_width) &&
497 info->dst.box.x + info->dst.box.width != dst_surface_width) ||
498 (is_tile_unaligned(info->dst.box.height, tile_height) &&
499 info->dst.box.y + info->dst.box.height != dst_surface_height)) {
515 job->draw_min_x = info->dst.box.x;
516 job->draw_min_y = info->dst.box.y;
517 job->draw_max_x = info->dst.box.x + info->dst.box.width;
518 job->draw_max_y = info->dst.box.y + info->dst.box.height;
535 job->num_layers = info->dst.box.depth;
540 info->mask &= ~PIPE_MASK_RGBA;
544 info->mask &= ~PIPE_MASK_Z;
548 info->mask &= ~PIPE_MASK_S;
750 v3d_sand8_blit(struct pipe_context *pctx, struct pipe_blit_info *info)
753 struct v3d_resource *src = v3d_resource(info->src.resource);
754 ASSERTED struct v3d_resource *dst = v3d_resource(info->dst.resource);
763 if (!(info->mask & PIPE_MASK_RGBA))
769 assert(info->src.box.x == 0 && info->dst.box.x == 0);
770 assert(info->src.box.y == 0 && info->dst.box.y == 0);
771 assert(info->src.box.width == info->dst.box.width);
772 assert(info->src.box.height == info->dst.box.height);
777 util_blitter_default_dst_texture(&dst_tmpl, info->dst.resource,
778 info->dst.level, info->dst.box.z);
785 pctx->create_surface(pctx, info->dst.resource, &dst_tmpl);
811 .buffer = info->src.resource,
812 .buffer_offset = src->slices[info->src.level].offset,
814 src->slices[info->src.level].offset),
838 info->mask &= ~PIPE_MASK_RGBA;
850 struct pipe_blit_info info = *blit_info;
852 v3d_sand8_blit(pctx, &info);
854 v3d_tfu_blit(pctx, &info);
856 v3d_tlb_blit(pctx, &info);
858 v3d_stencil_blit(pctx, &info);
860 v3d_render_blit(pctx, &info);
867 v3d_flush_jobs_writing_resource(v3d, info.dst.resource,