Revert "r200: make use of DMA buffers for Elts a lot better."
This reverts commit 0952645fe0
.
Need to revisit where this is going wrong
This commit is contained in:
@@ -213,9 +213,6 @@ void r200FlushElts(GLcontext *ctx)
|
|||||||
radeon_bo_unref(rmesa->radeon.tcl.elt_dma_bo);
|
radeon_bo_unref(rmesa->radeon.tcl.elt_dma_bo);
|
||||||
rmesa->radeon.tcl.elt_dma_bo = NULL;
|
rmesa->radeon.tcl.elt_dma_bo = NULL;
|
||||||
|
|
||||||
if (R200_ELT_BUF_SZ > elt_used)
|
|
||||||
radeonReturnDmaRegion(rmesa, R200_ELT_BUF_SZ - elt_used);
|
|
||||||
|
|
||||||
if (R200_DEBUG & DEBUG_SYNC) {
|
if (R200_DEBUG & DEBUG_SYNC) {
|
||||||
fprintf(stderr, "%s: Syncing\n", __FUNCTION__);
|
fprintf(stderr, "%s: Syncing\n", __FUNCTION__);
|
||||||
radeonFinish( rmesa->radeon.glCtx );
|
radeonFinish( rmesa->radeon.glCtx );
|
||||||
@@ -236,13 +233,21 @@ GLushort *r200AllocEltsOpenEnded( r200ContextPtr rmesa,
|
|||||||
|
|
||||||
radeonEmitState(&rmesa->radeon);
|
radeonEmitState(&rmesa->radeon);
|
||||||
|
|
||||||
radeonAllocDmaRegion(&rmesa->radeon, &rmesa->radeon.tcl.elt_dma_bo,
|
rmesa->radeon.tcl.elt_dma_bo = radeon_bo_open(rmesa->radeon.radeonScreen->bom,
|
||||||
&rmesa->radeon.tcl.elt_dma_offset, R200_ELT_BUF_SZ, 4);
|
0, R200_ELT_BUF_SZ, 4,
|
||||||
|
RADEON_GEM_DOMAIN_GTT, 0);
|
||||||
|
rmesa->radeon.tcl.elt_dma_offset = 0;
|
||||||
rmesa->tcl.elt_used = min_nr * 2;
|
rmesa->tcl.elt_used = min_nr * 2;
|
||||||
|
|
||||||
|
radeon_validate_bo(&rmesa->radeon, rmesa->radeon.tcl.elt_dma_bo,
|
||||||
|
RADEON_GEM_DOMAIN_GTT, 0);
|
||||||
|
if (radeon_revalidate_bos(rmesa->radeon.glCtx) == GL_FALSE)
|
||||||
|
fprintf(stderr,"failure to revalidate BOs - badness\n");
|
||||||
|
|
||||||
radeon_bo_map(rmesa->radeon.tcl.elt_dma_bo, 1);
|
radeon_bo_map(rmesa->radeon.tcl.elt_dma_bo, 1);
|
||||||
retval = rmesa->radeon.tcl.elt_dma_bo->ptr + rmesa->radeon.tcl.elt_dma_offset;
|
retval = rmesa->radeon.tcl.elt_dma_bo->ptr + rmesa->radeon.tcl.elt_dma_offset;
|
||||||
|
|
||||||
|
|
||||||
if (R200_DEBUG & DEBUG_PRIMS)
|
if (R200_DEBUG & DEBUG_PRIMS)
|
||||||
fprintf(stderr, "%s: header prim %x \n",
|
fprintf(stderr, "%s: header prim %x \n",
|
||||||
__FUNCTION__, primitive);
|
__FUNCTION__, primitive);
|
||||||
|
@@ -167,7 +167,7 @@ void radeonRefillCurrentDmaRegion(radeonContextPtr rmesa, int size)
|
|||||||
size = MAX2(size, MAX_DMA_BUF_SZ);
|
size = MAX2(size, MAX_DMA_BUF_SZ);
|
||||||
|
|
||||||
if (RADEON_DEBUG & (DEBUG_IOCTL | DEBUG_DMA))
|
if (RADEON_DEBUG & (DEBUG_IOCTL | DEBUG_DMA))
|
||||||
fprintf(stderr, "%s %d\n", __FUNCTION__, rmesa->dma.nr_released_bufs);
|
fprintf(stderr, "%s\n", __FUNCTION__);
|
||||||
|
|
||||||
if (rmesa->dma.flush) {
|
if (rmesa->dma.flush) {
|
||||||
rmesa->dma.flush(rmesa->glCtx);
|
rmesa->dma.flush(rmesa->glCtx);
|
||||||
@@ -178,7 +178,11 @@ void radeonRefillCurrentDmaRegion(radeonContextPtr rmesa, int size)
|
|||||||
rmesa->dma.nr_released_bufs = 0;
|
rmesa->dma.nr_released_bufs = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
radeonReleaseDmaRegion(rmesa);
|
if (rmesa->dma.current) {
|
||||||
|
radeon_bo_unmap(rmesa->dma.current);
|
||||||
|
radeon_bo_unref(rmesa->dma.current);
|
||||||
|
rmesa->dma.current = 0;
|
||||||
|
}
|
||||||
|
|
||||||
again_alloc:
|
again_alloc:
|
||||||
rmesa->dma.current = radeon_bo_open(rmesa->radeonScreen->bom,
|
rmesa->dma.current = radeon_bo_open(rmesa->radeonScreen->bom,
|
||||||
@@ -240,17 +244,6 @@ void radeonAllocDmaRegion(radeonContextPtr rmesa,
|
|||||||
assert(rmesa->dma.current_used <= rmesa->dma.current->size);
|
assert(rmesa->dma.current_used <= rmesa->dma.current->size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void radeonReturnDmaRegion(radeonContextPtr rmesa, int return_bytes)
|
|
||||||
{
|
|
||||||
if (!rmesa->dma.current)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (RADEON_DEBUG & DEBUG_IOCTL)
|
|
||||||
fprintf(stderr, "%s %d\n", __FUNCTION__, return_bytes);
|
|
||||||
rmesa->dma.current_used -= return_bytes;
|
|
||||||
rmesa->dma.current_vertexptr = rmesa->dma.current_used;
|
|
||||||
}
|
|
||||||
|
|
||||||
void radeonReleaseDmaRegion(radeonContextPtr rmesa)
|
void radeonReleaseDmaRegion(radeonContextPtr rmesa)
|
||||||
{
|
{
|
||||||
if (RADEON_DEBUG & DEBUG_IOCTL)
|
if (RADEON_DEBUG & DEBUG_IOCTL)
|
||||||
|
@@ -39,7 +39,6 @@ void radeonEmitVec12(uint32_t *out, GLvoid * data, int stride, int count);
|
|||||||
void rcommon_emit_vector(GLcontext * ctx, struct radeon_aos *aos,
|
void rcommon_emit_vector(GLcontext * ctx, struct radeon_aos *aos,
|
||||||
GLvoid * data, int size, int stride, int count);
|
GLvoid * data, int size, int stride, int count);
|
||||||
|
|
||||||
void radeonReturnDmaRegion(radeonContextPtr rmesa, int return_bytes);
|
|
||||||
void radeonRefillCurrentDmaRegion(radeonContextPtr rmesa, int size);
|
void radeonRefillCurrentDmaRegion(radeonContextPtr rmesa, int size);
|
||||||
void radeonAllocDmaRegion(radeonContextPtr rmesa,
|
void radeonAllocDmaRegion(radeonContextPtr rmesa,
|
||||||
struct radeon_bo **pbo, int *poffset,
|
struct radeon_bo **pbo, int *poffset,
|
||||||
|
Reference in New Issue
Block a user