Are you sure you're not looking for resource_copy_region? BUFFERs can be wide (128MB in many impls), 1D textures can't. There are probably other differences.
On Wed, Nov 22, 2017 at 9:43 AM, Rob Clark <[email protected]> wrote: > It is useful for staging/shadow transfers for drivers to be able to blit > BUFFERs. Treat them as R8 1D textures for this purpose. > > Signed-off-by: Rob Clark <[email protected]> > --- > This works at least if 1D textures are linear, so I suppose might not > work for all drivers. Although I'm not entirely sure what the point > of a tiled 1D texture is. And I guess drivers for which this wouldn't > work could continue to just not use u_blitter for BUFFERs. > > src/gallium/auxiliary/util/u_blitter.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/auxiliary/util/u_blitter.c > b/src/gallium/auxiliary/util/u_blitter.c > index 476ef08737e..7ba7b5aa57d 100644 > --- a/src/gallium/auxiliary/util/u_blitter.c > +++ b/src/gallium/auxiliary/util/u_blitter.c > @@ -1445,7 +1445,10 @@ void util_blitter_default_dst_texture(struct > pipe_surface *dst_templ, > unsigned dstz) > { > memset(dst_templ, 0, sizeof(*dst_templ)); > - dst_templ->format = util_format_linear(dst->format); > + if (dst->target == PIPE_BUFFER) > + dst_templ->format = PIPE_FORMAT_R8_UINT; > + else > + dst_templ->format = util_format_linear(dst->format); > dst_templ->u.tex.level = dstlevel; > dst_templ->u.tex.first_layer = dstz; > dst_templ->u.tex.last_layer = dstz; > @@ -1482,7 +1485,12 @@ void util_blitter_default_src_texture(struct > blitter_context *blitter, > else > src_templ->target = src->target; > > - src_templ->format = util_format_linear(src->format); > + if (src->target == PIPE_BUFFER) { > + src_templ->target = PIPE_TEXTURE_1D; > + src_templ->format = PIPE_FORMAT_R8_UINT; > + } else { > + src_templ->format = util_format_linear(src->format); > + } > src_templ->u.tex.first_level = srclevel; > src_templ->u.tex.last_level = srclevel; > src_templ->u.tex.first_layer = 0; > -- > 2.13.6 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
