Revert "gallium: add flag PIPE_TRANSFER_MAP_PERMANENTLY"

This reverts commit 0950086376.

It was decided to refactor the transfer API instead of adding workarounds
to address the performance issues.
This commit is contained in:
Marek Olšák
2012-03-05 13:45:00 +01:00
parent 058fc6521e
commit 62f44f670b
12 changed files with 6 additions and 57 deletions

View File

@@ -68,13 +68,8 @@ i915_get_transfer(struct pipe_context *pipe,
const struct pipe_box *box)
{
struct i915_context *i915 = i915_context(pipe);
struct pipe_transfer *transfer;
struct pipe_transfer *transfer = util_slab_alloc(&i915->transfer_pool);
if (usage & PIPE_TRANSFER_MAP_PERMANENTLY) {
return NULL;
}
transfer = util_slab_alloc(&i915->transfer_pool);
if (transfer == NULL)
return NULL;

View File

@@ -720,14 +720,9 @@ i915_texture_get_transfer(struct pipe_context *pipe,
{
struct i915_context *i915 = i915_context(pipe);
struct i915_texture *tex = i915_texture(resource);
struct i915_transfer *transfer;
struct i915_transfer *transfer = util_slab_alloc(&i915->texture_transfer_pool);
boolean use_staging_texture = FALSE;
if (usage & PIPE_TRANSFER_MAP_PERMANENTLY) {
return NULL;
}
transfer = util_slab_alloc(&i915->texture_transfer_pool);
if (transfer == NULL)
return NULL;

View File

@@ -601,10 +601,6 @@ llvmpipe_get_transfer(struct pipe_context *pipe,
assert(resource);
assert(level <= resource->last_level);
if (usage & PIPE_TRANSFER_MAP_PERMANENTLY) {
return NULL;
}
/*
* Transfers, like other pipe operations, must happen in order, so flush the
* context if necessary.

View File

@@ -172,13 +172,7 @@ nouveau_buffer_transfer_get(struct pipe_context *pipe,
{
struct nv04_resource *buf = nv04_resource(resource);
struct nouveau_context *nv = nouveau_context(pipe);
struct nouveau_transfer *xfr;
if (usage & PIPE_TRANSFER_MAP_PERMANENTLY) {
return NULL;
}
xfr = CALLOC_STRUCT(nouveau_transfer);
struct nouveau_transfer *xfr = CALLOC_STRUCT(nouveau_transfer);
if (!xfr)
return NULL;

View File

@@ -243,7 +243,7 @@ nv50_miptree_transfer_new(struct pipe_context *pctx,
uint32_t size;
int ret;
if (usage & (PIPE_TRANSFER_MAP_DIRECTLY | PIPE_TRANSFER_MAP_PERMANENTLY))
if (usage & PIPE_TRANSFER_MAP_DIRECTLY)
return NULL;
tx = CALLOC_STRUCT(nv50_transfer);

View File

@@ -243,7 +243,7 @@ nvc0_miptree_transfer_new(struct pipe_context *pctx,
uint32_t size;
int ret;
if (usage & (PIPE_TRANSFER_MAP_DIRECTLY | PIPE_TRANSFER_MAP_PERMANENTLY))
if (usage & PIPE_TRANSFER_MAP_DIRECTLY)
return NULL;
tx = CALLOC_STRUCT(nvc0_transfer);

View File

@@ -26,9 +26,6 @@ nvfx_transfer_new(struct pipe_context *pipe,
unsigned usage,
const struct pipe_box *box)
{
if (usage & PIPE_TRANSFER_MAP_PERMANENTLY) {
return NULL;
}
if((usage & (PIPE_TRANSFER_UNSYNCHRONIZED | PIPE_TRANSFER_DONTBLOCK)) == PIPE_TRANSFER_DONTBLOCK)
{
struct nouveau_bo* bo = ((struct nvfx_resource*)pt)->bo;

View File

@@ -89,10 +89,6 @@ r300_texture_get_transfer(struct pipe_context *ctx,
struct pipe_resource base;
boolean referenced_cs, referenced_hw;
if (usage & (PIPE_TRANSFER_MAP_DIRECTLY | PIPE_TRANSFER_MAP_PERMANENTLY)) {
return NULL;
}
referenced_cs =
r300->rws->cs_is_buffer_referenced(r300->cs, tex->cs_buf);
if (referenced_cs) {

View File

@@ -790,10 +790,6 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
int r;
boolean use_staging_texture = FALSE;
if (usage & PIPE_TRANSFER_MAP_PERMANENTLY) {
return NULL;
}
/* We cannot map a tiled texture directly because the data is
* in a different order, therefore we do detiling using a blit.
*

View File

@@ -74,10 +74,6 @@ svga_buffer_get_transfer(struct pipe_context *pipe,
struct svga_buffer *sbuf = svga_buffer(resource);
struct pipe_transfer *transfer;
if (usage & PIPE_TRANSFER_MAP_PERMANENTLY) {
return NULL;
}
transfer = CALLOC_STRUCT(pipe_transfer);
if (transfer == NULL) {
return NULL;

View File

@@ -251,7 +251,7 @@ svga_texture_get_transfer(struct pipe_context *pipe,
unsigned nblocksy = util_format_get_nblocksy(texture->format, box->height);
/* We can't map texture storage directly */
if (usage & (PIPE_TRANSFER_MAP_DIRECTLY | PIPE_TRANSFER_MAP_PERMANENTLY))
if (usage & PIPE_TRANSFER_MAP_DIRECTLY)
return NULL;
assert(box->depth == 1);

View File

@@ -225,22 +225,6 @@ enum pipe_transfer_usage {
*/
PIPE_TRANSFER_MAP_DIRECTLY = (1 << 2),
/**
* The transfer should map the resource storage directly and the GPU should
* be able to see what the CPU has written. Such a storage may stay mapped
* while issuing draw commands which use it. The only allowed usage is
* non-overlapping writes which are suballocated out of a big buffer.
* The minimum allowed alignment of suballocations is 256 bytes (this is
* a subject to change).
* The flag is intended to be used to avoid mapping and unmapping
* resources repeatedly when doing uploads and draws intermixed.
*
* The driver may return NULL if that isn't possible, and the state
* tracker needs to cope with that and use an alternative path
* without this flag.
*/
PIPE_TRANSFER_MAP_PERMANENTLY = (1 << 3),
/**
* Discards the memory within the mapped region.
*