mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
Verbose error reporting.
Run indent on intel_bufmgr.c
This commit is contained in:
parent
2c1c8dccf7
commit
9cf0ed6059
1 changed files with 54 additions and 51 deletions
|
|
@ -48,7 +48,6 @@ struct _mesa_HashTable;
|
|||
* there are no mesa callbacks for this.
|
||||
*/
|
||||
|
||||
|
||||
#define BM_MAX 16
|
||||
static struct bufmgr
|
||||
{
|
||||
|
|
@ -59,15 +58,36 @@ static struct bufmgr
|
|||
|
||||
unsigned buf_nr; /* for generating ids */
|
||||
drmMMPool batchPool;
|
||||
|
||||
|
||||
} bufmgr_pool[BM_MAX];
|
||||
|
||||
static int nr_bms;
|
||||
|
||||
|
||||
#define LOCK(bm) _glthread_LOCK_MUTEX(bm->mutex)
|
||||
#define UNLOCK(bm) _glthread_UNLOCK_MUTEX(bm->mutex)
|
||||
|
||||
static void
|
||||
bmError(int val, const char *file, const char *function, int line)
|
||||
{
|
||||
_mesa_printf("Fatal video memory manager error \"%s\".\n"
|
||||
"Check kernel logs or set the LIBGL_DEBUG\n"
|
||||
"environment variable to \"verbose\" for more info.\n"
|
||||
"Detected in file %s, line %d, function %s.\n",
|
||||
strerror(-val), file, line, function);
|
||||
#ifndef NDEBUG
|
||||
exit(-1);
|
||||
#else
|
||||
abort();
|
||||
#endif
|
||||
}
|
||||
|
||||
#define BM_CKFATAL(val) \
|
||||
do{ \
|
||||
int tstVal = (val); \
|
||||
if (tstVal) \
|
||||
bmError(tstVal, __FILE__, __FUNCTION__, __LINE__); \
|
||||
} while(0);
|
||||
|
||||
/***********************************************************************
|
||||
* Public functions
|
||||
*/
|
||||
|
|
@ -85,28 +105,26 @@ bm_intel_Attach(struct intel_context *intel)
|
|||
for (i = 0; i < nr_bms; i++)
|
||||
if (bufmgr_pool[i].driFd == intel->driFd) {
|
||||
bufmgr_pool[i].refcount++;
|
||||
_mesa_printf("retrieive old bufmgr for fd %d\n", bufmgr_pool[i].driFd);
|
||||
_mesa_printf("retrieive old bufmgr for fd %d\n",
|
||||
bufmgr_pool[i].driFd);
|
||||
return &bufmgr_pool[i];
|
||||
}
|
||||
|
||||
if (nr_bms < BM_MAX)
|
||||
{
|
||||
if (nr_bms < BM_MAX) {
|
||||
struct bufmgr *bm = &bufmgr_pool[nr_bms++];
|
||||
int k;
|
||||
|
||||
_mesa_printf("create new bufmgr for fd %d\n", intel->driFd);
|
||||
|
||||
bm->driFd = intel->driFd;
|
||||
bm->hash = _mesa_NewHashTable();
|
||||
bm->refcount = 1;
|
||||
_glthread_INIT_MUTEX(bm->mutex);
|
||||
|
||||
drmGetLock(bm->driFd, intel->hHWContext, 0);
|
||||
k = drmMMAllocBufferPool(bm->driFd, mmPoolRing, 0,
|
||||
DRM_MM_TT | DRM_MM_NO_EVICT |
|
||||
DRM_MM_READ | DRM_MM_EXE | BM_BATCHBUFFER,
|
||||
1024 * 1024, 4096, &bm->batchPool);
|
||||
assert(!k);
|
||||
BM_CKFATAL(drmMMAllocBufferPool(bm->driFd, mmPoolRing, 0,
|
||||
DRM_MM_TT | DRM_MM_NO_EVICT |
|
||||
DRM_MM_READ | DRM_MM_EXE |
|
||||
BM_BATCHBUFFER, 1024 * 1024, 4096,
|
||||
&bm->batchPool));
|
||||
|
||||
drmUnlock(bm->driFd, intel->hHWContext);
|
||||
return bm;
|
||||
|
|
@ -123,14 +141,12 @@ bmGenBuffers(struct bufmgr *bm, unsigned n, unsigned *buffers, unsigned flags)
|
|||
{
|
||||
unsigned i;
|
||||
unsigned bFlags =
|
||||
(flags) ? flags : DRM_MM_TT | DRM_MM_VRAM | DRM_MM_SYSTEM;
|
||||
(flags) ? flags : DRM_MM_TT | DRM_MM_VRAM | DRM_MM_SYSTEM;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
drmMMBuf *buf = calloc(sizeof(*buf), 1);
|
||||
int k;
|
||||
|
||||
k =drmMMInitBuffer(bm->driFd, bFlags, 12, buf);
|
||||
assert(!k);
|
||||
BM_CKFATAL(drmMMInitBuffer(bm->driFd, bFlags, 12, buf));
|
||||
buf->client_priv = ++bm->buf_nr;
|
||||
buffers[i] = buf->client_priv;
|
||||
_mesa_HashInsert(bm->hash, buffers[i], buf);
|
||||
|
|
@ -146,15 +162,13 @@ bmSetShared(struct bufmgr *bm, unsigned buffer, unsigned flags,
|
|||
LOCK(bm);
|
||||
{
|
||||
drmMMBuf *buf = _mesa_HashLookup(bm->hash, buffer);
|
||||
int k;
|
||||
|
||||
buf->flags = DRM_MM_NO_EVICT | DRM_MM_SHARED
|
||||
| DRM_MM_WRITE | DRM_MM_READ;
|
||||
buf->flags = DRM_MM_NO_EVICT | DRM_MM_SHARED
|
||||
| DRM_MM_WRITE | DRM_MM_READ;
|
||||
buf->flags |= flags & DRM_MM_MEMTYPE_MASK;
|
||||
buf->offset = offset;
|
||||
buf->virtual = virtual;
|
||||
k = drmMMAllocBuffer(bm->driFd, 0, NULL, 0, buf);
|
||||
assert(!k);
|
||||
BM_CKFATAL(drmMMAllocBuffer(bm->driFd, 0, NULL, 0, buf));
|
||||
}
|
||||
UNLOCK(bm);
|
||||
}
|
||||
|
|
@ -165,8 +179,10 @@ bmDeleteBuffers(struct bufmgr *bm, unsigned n, unsigned *buffers)
|
|||
LOCK(bm);
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
drmMMBuf *buf = _mesa_HashLookup(bm->hash, buffers[i]);
|
||||
|
||||
if (buf) {
|
||||
drmMMFreeBuffer(bm->driFd, buf);
|
||||
|
||||
|
|
@ -191,31 +207,25 @@ bmBufferData(struct bufmgr *bm,
|
|||
|
||||
DBG("bmBufferData %d sz 0x%x data: %p\n", buffer, size, data);
|
||||
|
||||
assert(!buf->mapped);
|
||||
assert(!buf->mapped);
|
||||
|
||||
if (buf->flags & BM_BATCHBUFFER) {
|
||||
int k;
|
||||
k = drmMMFreeBuffer(bm->driFd, buf);
|
||||
assert(!k);
|
||||
k = drmMMAllocBuffer(bm->driFd, size, &bm->batchPool, 1, buf);
|
||||
assert(!k);
|
||||
|
||||
BM_CKFATAL(drmMMFreeBuffer(bm->driFd, buf));
|
||||
BM_CKFATAL(drmMMAllocBuffer
|
||||
(bm->driFd, size, &bm->batchPool, 1, buf));
|
||||
} else if (!(buf->flags & DRM_MM_SHARED)) {
|
||||
|
||||
if (buf->block && (buf->size < size ||
|
||||
drmBufIsBusy(bm->driFd, buf))) {
|
||||
int k = drmMMFreeBuffer(bm->driFd, buf);
|
||||
assert(!k);
|
||||
if (buf->block && (buf->size < size || drmBufIsBusy(bm->driFd, buf))) {
|
||||
BM_CKFATAL(drmMMFreeBuffer(bm->driFd, buf));
|
||||
}
|
||||
if (!buf->block) {
|
||||
int k = drmMMAllocBuffer(bm->driFd, size, NULL, 0, buf);
|
||||
assert(!k);
|
||||
BM_CKFATAL(drmMMAllocBuffer(bm->driFd, size, NULL, 0, buf));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (data != NULL) {
|
||||
|
||||
|
||||
memcpy(drmMMMapBuffer(bm->driFd, buf), data, size);
|
||||
drmMMUnmapBuffer(bm->driFd, buf);
|
||||
|
||||
|
|
@ -284,11 +294,11 @@ bmMapBuffer(struct bufmgr *bm, unsigned buffer, unsigned flags)
|
|||
DBG("bmMapBuffer %d\n", buffer);
|
||||
DBG("Map: Block is 0x%x\n", &buf->block);
|
||||
|
||||
/* assert(!buf->mapped);*/
|
||||
/* assert(!buf->mapped); */
|
||||
retval = drmMMMapBuffer(bm->driFd, buf);
|
||||
}
|
||||
UNLOCK(bm);
|
||||
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
|
@ -377,13 +387,9 @@ unsigned
|
|||
bmFenceBufferList(struct bufmgr *bm, struct _drmMMBufList *list)
|
||||
{
|
||||
drmFence fence;
|
||||
int k;
|
||||
|
||||
k = drmMMFenceBuffers(bm->driFd, list);
|
||||
assert(!k);
|
||||
|
||||
k =drmEmitFence(bm->driFd, 0, &fence);
|
||||
assert(!k);
|
||||
BM_CKFATAL(drmMMFenceBuffers(bm->driFd, list));
|
||||
BM_CKFATAL(drmEmitFence(bm->driFd, 0, &fence));
|
||||
|
||||
return fence.fenceSeq;
|
||||
}
|
||||
|
|
@ -398,8 +404,8 @@ unsigned
|
|||
bmSetFence(struct bufmgr *bm)
|
||||
{
|
||||
drmFence dFence;
|
||||
int k = drmEmitFence(bm->driFd, 0, &dFence);
|
||||
assert(!k);
|
||||
|
||||
BM_CKFATAL(drmEmitFence(bm->driFd, 0, &dFence));
|
||||
|
||||
return dFence.fenceSeq;
|
||||
}
|
||||
|
|
@ -409,10 +415,8 @@ bmTestFence(struct bufmgr *bm, unsigned fence)
|
|||
{
|
||||
drmFence dFence = { 0, fence };
|
||||
int retired;
|
||||
int k;
|
||||
|
||||
k = drmTestFence(bm->driFd, dFence, 0, &retired);
|
||||
assert(!k);
|
||||
BM_CKFATAL(drmTestFence(bm->driFd, dFence, 0, &retired));
|
||||
return retired;
|
||||
}
|
||||
|
||||
|
|
@ -420,6 +424,5 @@ void
|
|||
bmFinishFence(struct bufmgr *bm, unsigned fence)
|
||||
{
|
||||
drmFence dFence = { 0, fence };
|
||||
int k = drmWaitFence(bm->driFd, dFence);
|
||||
assert(!k);
|
||||
BM_CKFATAL(drmWaitFence(bm->driFd, dFence));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue