--- src/mesa/drivers/dri/r600/r600_cmdbuf.c | 8 ++++---- src/mesa/drivers/dri/r600/r700_assembler.c | 23 ++++++++--------------- src/mesa/drivers/dri/radeon/radeon_bo_legacy.c | 2 +- src/mesa/drivers/dri/radeon/radeon_cs_legacy.c | 6 +++--- src/mesa/drivers/dri/radeon/radeon_debug.h | 9 +++++++++ src/mesa/main/imports.h | 2 ++ 6 files changed, 27 insertions(+), 23 deletions(-)
diff --git a/src/mesa/drivers/dri/r600/r600_cmdbuf.c b/src/mesa/drivers/dri/r600/r600_cmdbuf.c index d2b59ab..1f0f185 100644 --- a/src/mesa/drivers/dri/r600/r600_cmdbuf.c +++ b/src/mesa/drivers/dri/r600/r600_cmdbuf.c @@ -137,9 +137,9 @@ static int r600_cs_write_reloc(struct radeon_cs_int *csi, relocs[i].base.write_domain |= write_domain; /* save indice */ relocs[i].cindices++; - indices = (uint32_t*)realloc(relocs[i].indices, + indices = (uint32_t*)REALLOC(relocs[i].indices, relocs[i].cindices * 4); - reloc_indices = (uint32_t*)realloc(relocs[i].reloc_indices, + reloc_indices = (uint32_t*)REALLOC(relocs[i].reloc_indices, relocs[i].cindices * 4); if ( (indices == NULL) || (reloc_indices == NULL) ) { relocs[i].cindices -= 1; @@ -157,7 +157,7 @@ static int r600_cs_write_reloc(struct radeon_cs_int *csi, } /* add bo to reloc */ relocs = (struct r600_cs_reloc_legacy*) - realloc(csi->relocs, + REALLOC(csi->relocs, sizeof(struct r600_cs_reloc_legacy) * (csi->crelocs + 1)); if (relocs == NULL) { return -ENOMEM; @@ -212,7 +212,7 @@ static int r600_cs_begin(struct radeon_cs_int *csi, int num = (ndw > 0x400) ? ndw : 0x400; tmp = (csi->cdw + num + 0x3FF) & (~0x3FF); - ptr = (uint32_t*)realloc(csi->packets, 4 * tmp); + ptr = (uint32_t*)REALLOC(csi->packets, 4 * tmp); if (ptr == NULL) { return -ENOMEM; } diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c b/src/mesa/drivers/dri/r600/r700_assembler.c index 7b4d478..70f263d 100644 --- a/src/mesa/drivers/dri/r600/r700_assembler.c +++ b/src/mesa/drivers/dri/r600/r700_assembler.c @@ -4801,9 +4801,8 @@ GLboolean assemble_ELSE(r700_AssemblerBase *pAsm) pAsm->cf_current_cf_clause_ptr->m_Word1.f.barrier = 0x1; - pAsm->fc_stack[pAsm->FCSP].mid = (R700ControlFlowGenericClause **)_mesa_realloc( (void *)pAsm->fc_stack[pAsm->FCSP].mid, - 0, - sizeof(R700ControlFlowGenericClause *) ); + pAsm->fc_stack[pAsm->FCSP].mid = (R700ControlFlowGenericClause **)REALLOC( (void *)pAsm->fc_stack[pAsm->FCSP].mid, + sizeof(R700ControlFlowGenericClause *) ); pAsm->fc_stack[pAsm->FCSP].mid[0] = pAsm->cf_current_cf_clause_ptr; //pAsm->fc_stack[pAsm->FCSP].unNumMid = 1; @@ -4923,9 +4922,8 @@ GLboolean assemble_BRK(r700_AssemblerBase *pAsm) pAsm->cf_current_cf_clause_ptr->m_Word1.f.barrier = 0x1; - pAsm->fc_stack[unFCSP].mid = (R700ControlFlowGenericClause **)_mesa_realloc( + pAsm->fc_stack[unFCSP].mid = (R700ControlFlowGenericClause **)REALLOC( (void *)pAsm->fc_stack[unFCSP].mid, - sizeof(R700ControlFlowGenericClause *) * pAsm->fc_stack[unFCSP].unNumMid, sizeof(R700ControlFlowGenericClause *) * (pAsm->fc_stack[unFCSP].unNumMid + 1) ); pAsm->fc_stack[unFCSP].mid[pAsm->fc_stack[unFCSP].unNumMid] = pAsm->cf_current_cf_clause_ptr; pAsm->fc_stack[unFCSP].unNumMid++; @@ -4993,9 +4991,8 @@ GLboolean assemble_CONT(r700_AssemblerBase *pAsm) pAsm->cf_current_cf_clause_ptr->m_Word1.f.barrier = 0x1; - pAsm->fc_stack[unFCSP].mid = (R700ControlFlowGenericClause **)_mesa_realloc( + pAsm->fc_stack[unFCSP].mid = (R700ControlFlowGenericClause **)REALLOC( (void *)pAsm->fc_stack[unFCSP].mid, - sizeof(R700ControlFlowGenericClause *) * pAsm->fc_stack[unFCSP].unNumMid, sizeof(R700ControlFlowGenericClause *) * (pAsm->fc_stack[unFCSP].unNumMid + 1) ); pAsm->fc_stack[unFCSP].mid[pAsm->fc_stack[unFCSP].unNumMid] = pAsm->cf_current_cf_clause_ptr; pAsm->fc_stack[unFCSP].unNumMid++; @@ -5124,8 +5121,7 @@ GLboolean assemble_BGNSUB(r700_AssemblerBase *pAsm, GLint nILindex, GLuint uiIL_ /* Put in sub */ if( (pAsm->unSubArrayPointer + 1) > pAsm->unSubArraySize ) { - pAsm->subs = (SUB_OFFSET*)_mesa_realloc( (void *)pAsm->subs, - sizeof(SUB_OFFSET) * pAsm->unSubArraySize, + pAsm->subs = (SUB_OFFSET*)REALLOC( (void *)pAsm->subs, sizeof(SUB_OFFSET) * (pAsm->unSubArraySize + 10) ); if(NULL == pAsm->subs) { @@ -5254,8 +5250,7 @@ GLboolean assemble_CAL(r700_AssemblerBase *pAsm, /* Put in caller */ if( (pAsm->unCallerArrayPointer + 1) > pAsm->unCallerArraySize ) { - pAsm->callers = (CALLER_POINTER*)_mesa_realloc( (void *)pAsm->callers, - sizeof(CALLER_POINTER) * pAsm->unCallerArraySize, + pAsm->callers = (CALLER_POINTER*)REALLOC( (void *)pAsm->callers, sizeof(CALLER_POINTER) * (pAsm->unCallerArraySize + 10) ); if(NULL == pAsm->callers) { @@ -5461,9 +5456,8 @@ GLboolean breakLoopOnFlag(r700_AssemblerBase *pAsm, GLuint unFCSP) pAsm->cf_current_cf_clause_ptr->m_Word1.f.barrier = 0x1; - pAsm->fc_stack[unFCSP].mid = (R700ControlFlowGenericClause **)_mesa_realloc( + pAsm->fc_stack[unFCSP].mid = (R700ControlFlowGenericClause **)REALLOC( (void *)pAsm->fc_stack[unFCSP].mid, - sizeof(R700ControlFlowGenericClause *) * pAsm->fc_stack[unFCSP].unNumMid, sizeof(R700ControlFlowGenericClause *) * (pAsm->fc_stack[unFCSP].unNumMid + 1) ); pAsm->fc_stack[unFCSP].mid[pAsm->fc_stack[unFCSP].unNumMid] = pAsm->cf_current_cf_clause_ptr; pAsm->fc_stack[unFCSP].unNumMid++; @@ -6185,8 +6179,7 @@ GLboolean callPreSub(r700_AssemblerBase* pAsm, /* alloc in presub */ if( (pAsm->unNumPresub + 1) > pAsm->unPresubArraySize ) { - pAsm->presubs = (PRESUB_DESC*)_mesa_realloc( (void *)pAsm->presubs, - sizeof(PRESUB_DESC) * pAsm->unPresubArraySize, + pAsm->presubs = (PRESUB_DESC*)REALLOC( (void *)pAsm->presubs, sizeof(PRESUB_DESC) * (pAsm->unPresubArraySize + 4) ); if(NULL == pAsm->presubs) { diff --git a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c index 02eff1c..c57acce 100644 --- a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c +++ b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c @@ -158,7 +158,7 @@ static int legacy_free_handle(struct bo_manager_legacy *bom, uint32_t handle) return 0; } bom->nfree_handles += 0x100; - handles = (uint32_t*)realloc(bom->free_handles, bom->nfree_handles * 4); + handles = (uint32_t*)REALLOC(bom->free_handles, bom->nfree_handles * 4); if (handles == NULL) { bom->nfree_handles -= 0x100; return -ENOMEM; diff --git a/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c b/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c index d6f535b..b257c8a 100644 --- a/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c +++ b/src/mesa/drivers/dri/radeon/radeon_cs_legacy.c @@ -123,7 +123,7 @@ static int cs_write_reloc(struct radeon_cs_int *cs, relocs[i].base.write_domain |= write_domain; /* save indice */ relocs[i].cindices++; - indices = (uint32_t*)realloc(relocs[i].indices, + indices = (uint32_t*)REALLOC(relocs[i].indices, relocs[i].cindices * 4); if (indices == NULL) { relocs[i].cindices -= 1; @@ -136,7 +136,7 @@ static int cs_write_reloc(struct radeon_cs_int *cs, } /* add bo to reloc */ relocs = (struct cs_reloc_legacy*) - realloc(cs->relocs, + REALLOC(cs->relocs, sizeof(struct cs_reloc_legacy) * (cs->crelocs + 1)); if (relocs == NULL) { return -ENOMEM; @@ -182,7 +182,7 @@ static int cs_begin(struct radeon_cs_int *cs, uint32_t tmp, *ptr; tmp = (cs->cdw + ndw + 0x3ff) & (~0x3ff); - ptr = (uint32_t*)realloc(cs->packets, 4 * tmp); + ptr = (uint32_t*)REALLOC(cs->packets, 4 * tmp); if (ptr == NULL) { return -ENOMEM; } diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h b/src/mesa/drivers/dri/radeon/radeon_debug.h index 7de54d2..e5cb5ec 100644 --- a/src/mesa/drivers/dri/radeon/radeon_debug.h +++ b/src/mesa/drivers/dri/radeon/radeon_debug.h @@ -204,16 +204,25 @@ static inline void *myc(size_t T, const char *fi, const char *fu, unsigned l) return a; } +static inline void *myrea(void *p, size_t T, const char *fi, const char *fu, unsigned l) +{ + void *a = realloc(p, T); + radeon_error("realloc of %zu bytes in %p (%...@%s:%d)\n", T, p, fu, fi, l); + return a; +} + #undef CALLOC_STRUCT #undef CALLOC #undef MALLOC #undef MALLOC_STRUCT +#undef REALLOC #undef FREE #define CALLOC_STRUCT(T) mycs(sizeof(struct T), __FILE__, __func__, __LINE__) #define MALLOC_STRUCT(T) myms(sizeof(struct T), __FILE__, __func__, __LINE__) #define CALLOC(BYTES) myc(BYTES, __FILE__, __func__, __LINE__) #define MALLOC(BYTES) mym(BYTES, __FILE__, __func__, __LINE__) +#define REALLOC(PTR, BYTES) myrea(PTR, BYTES, __FILE__, __func__, __LINE__) #define FREE(PTR) \ do { \ radeon_error("free of %p in %...@%s:%d\n", PTR, __func__, __FILE__, __LINE__); \ diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index da825a0..c98e323 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -57,6 +57,8 @@ extern "C" { #define MALLOC_STRUCT(T) (struct T *) malloc(sizeof(struct T)) /** Allocate and zero a structure of type \p T */ #define CALLOC_STRUCT(T) (struct T *) calloc(1, sizeof(struct T)) +/** Reallocate memory */ +#define REALLOC(PTR, BYTES) realloc(PTR, BYTES) /** Free memory */ #define FREE(PTR) free(PTR) -- 1.7.0.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev