&r300transfer->linear_texture->b.b.b, 0, &src_box);
/* XXX remove this. */
- ctx->flush(ctx, 0, NULL);
+ r300_flush(ctx, 0, NULL);
}
struct pipe_transfer*
referenced_hw = TRUE;
} else {
referenced_hw =
- r300->rws->buffer_is_busy(tex->buf);
+ r300->rws->buffer_is_busy(tex->buf, RADEON_USAGE_READWRITE);
}
blittable = desc->layout == UTIL_FORMAT_LAYOUT_PLAIN ||
base.array_size = 1;
base.last_level = 0;
base.nr_samples = 0;
- base.usage = PIPE_USAGE_DYNAMIC;
+ base.usage = PIPE_USAGE_STAGING;
base.bind = 0;
+ if (usage & PIPE_TRANSFER_READ) {
+ base.bind |= PIPE_BIND_SAMPLER_VIEW;
+ }
+ if (usage & PIPE_TRANSFER_WRITE) {
+ base.bind |= PIPE_BIND_RENDER_TARGET;
+ }
base.flags = R300_RESOURCE_FLAG_TRANSFER;
/* For texture reading, the temporary (detiled) texture is used as
struct pipe_transfer *transfer)
{
struct r300_context *r300 = r300_context(ctx);
- struct r300_winsys_screen *rws = (struct r300_winsys_screen *)ctx->winsys;
+ struct radeon_winsys *rws = (struct radeon_winsys *)ctx->winsys;
struct r300_transfer *r300transfer = r300_transfer(transfer);
struct r300_resource *tex = r300_resource(transfer->resource);
char *map;
void r300_texture_transfer_unmap(struct pipe_context *ctx,
struct pipe_transfer *transfer)
{
- struct r300_winsys_screen *rws = (struct r300_winsys_screen *)ctx->winsys;
+ struct radeon_winsys *rws = (struct radeon_winsys *)ctx->winsys;
struct r300_transfer *r300transfer = r300_transfer(transfer);
struct r300_resource *tex = r300_resource(transfer->resource);