iris: implement copy image
This commit is contained in:
@@ -112,8 +112,36 @@ iris_blit(struct pipe_context *ctx, const struct pipe_blit_info *info)
|
|||||||
blorp_batch_finish(&blorp_batch);
|
blorp_batch_finish(&blorp_batch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
iris_resource_copy_region(struct pipe_context *ctx,
|
||||||
|
struct pipe_resource *dst,
|
||||||
|
unsigned dst_level,
|
||||||
|
unsigned dstx, unsigned dsty, unsigned dstz,
|
||||||
|
struct pipe_resource *src,
|
||||||
|
unsigned src_level,
|
||||||
|
const struct pipe_box *src_box)
|
||||||
|
{
|
||||||
|
struct iris_context *ice = (void *) ctx;
|
||||||
|
struct blorp_surf src_surf, dst_surf;
|
||||||
|
iris_blorp_surf_for_resource(&src_surf, src, ISL_AUX_USAGE_NONE, false);
|
||||||
|
iris_blorp_surf_for_resource(&dst_surf, dst, ISL_AUX_USAGE_NONE, true);
|
||||||
|
|
||||||
|
// XXX: ???
|
||||||
|
unsigned dst_layer = dstz;
|
||||||
|
unsigned src_layer = src_box->z;
|
||||||
|
|
||||||
|
struct blorp_batch blorp_batch;
|
||||||
|
blorp_batch_init(&ice->blorp, &blorp_batch, &ice->render_batch, 0);
|
||||||
|
blorp_copy(&blorp_batch, &src_surf, src_level, src_layer,
|
||||||
|
&dst_surf, dst_level, dst_layer,
|
||||||
|
src_box->x, src_box->y, dstx, dsty,
|
||||||
|
src_box->width, src_box->height);
|
||||||
|
blorp_batch_finish(&blorp_batch);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
iris_init_blit_functions(struct pipe_context *ctx)
|
iris_init_blit_functions(struct pipe_context *ctx)
|
||||||
{
|
{
|
||||||
ctx->blit = iris_blit;
|
ctx->blit = iris_blit;
|
||||||
|
ctx->resource_copy_region = iris_resource_copy_region;
|
||||||
}
|
}
|
||||||
|
@@ -585,17 +585,6 @@ iris_transfer_unmap(struct pipe_context *pipe, struct pipe_transfer *xfer)
|
|||||||
free(map);
|
free(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
iris_resource_copy_region(struct pipe_context *ctx,
|
|
||||||
struct pipe_resource *dst,
|
|
||||||
unsigned dst_level,
|
|
||||||
unsigned dstx, unsigned dsty, unsigned dstz,
|
|
||||||
struct pipe_resource *src,
|
|
||||||
unsigned src_level,
|
|
||||||
const struct pipe_box *src_box)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
iris_flush_resource(struct pipe_context *ctx, struct pipe_resource *resource)
|
iris_flush_resource(struct pipe_context *ctx, struct pipe_resource *resource)
|
||||||
{
|
{
|
||||||
@@ -621,5 +610,4 @@ iris_init_resource_functions(struct pipe_context *ctx)
|
|||||||
ctx->transfer_unmap = iris_transfer_unmap;
|
ctx->transfer_unmap = iris_transfer_unmap;
|
||||||
ctx->buffer_subdata = u_default_buffer_subdata;
|
ctx->buffer_subdata = u_default_buffer_subdata;
|
||||||
ctx->texture_subdata = u_default_texture_subdata;
|
ctx->texture_subdata = u_default_texture_subdata;
|
||||||
ctx->resource_copy_region = iris_resource_copy_region;
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user