diff options
author | Pauli Nieminen <suokkos@gmail.com> | 2009-08-24 00:57:05 +0300 |
---|---|---|
committer | Pauli Nieminen <suokkos@gmail.com> | 2009-08-24 00:57:05 +0300 |
commit | 7bb0f880dbdee0c57693c3a1f331d7c0894e71e1 (patch) | |
tree | c46a42d33501c1a9d56596981f50ce98746aa040 /src/mesa/drivers/dri/r600/r600_emit.c | |
parent | effda2e2a7f8ef7406d698c6b31dbbff408ed112 (diff) | |
parent | 4484ce9c7b196a686a3928f7e29dc8d9b6f3cae3 (diff) |
Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/mesa into r600_state_predict
Conflicts:
src/mesa/drivers/dri/r300/r300_cmdbuf.c
src/mesa/drivers/dri/radeon/radeon_cmdbuf.h
Diffstat (limited to 'src/mesa/drivers/dri/r600/r600_emit.c')
-rw-r--r-- | src/mesa/drivers/dri/r600/r600_emit.c | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/src/mesa/drivers/dri/r600/r600_emit.c b/src/mesa/drivers/dri/r600/r600_emit.c index b0c7294682..be86de170f 100644 --- a/src/mesa/drivers/dri/r600/r600_emit.c +++ b/src/mesa/drivers/dri/r600/r600_emit.c @@ -51,53 +51,55 @@ void r600EmitCacheFlush(context_t *rmesa) { } -GLboolean r600EmitShader(GLcontext * ctx, +GLboolean r600EmitShader(GLcontext * ctx, void ** shaderbo, - GLvoid * data, + GLvoid * data, int sizeinDWORD, - char * szShaderUsage) + char * szShaderUsage) { - radeonContextPtr radeonctx = RADEON_CONTEXT(ctx); - - struct radeon_bo * pbo; - uint32_t *out; + radeonContextPtr radeonctx = RADEON_CONTEXT(ctx); + struct radeon_bo * pbo; + uint32_t *out; shader_again_alloc: - pbo = radeon_bo_open(radeonctx->radeonScreen->bom, - 0, - sizeinDWORD * 4, - 256, - RADEON_GEM_DOMAIN_GTT, - 0); + pbo = radeon_bo_open(radeonctx->radeonScreen->bom, + 0, + sizeinDWORD * 4, + 256, + RADEON_GEM_DOMAIN_GTT, + 0); if (!pbo) { rcommonFlushCmdBuf(radeonctx, __FUNCTION__); goto shader_again_alloc; } + radeon_cs_space_add_persistent_bo(radeonctx->cmdbuf.cs, + pbo, + RADEON_GEM_DOMAIN_GTT, 0); + if (radeon_cs_space_check_with_bo(radeonctx->cmdbuf.cs, pbo, - RADEON_GEM_DOMAIN_GTT, 0)) + RADEON_GEM_DOMAIN_GTT, 0)) { fprintf(stderr,"failure to revalidate BOs - badness\n"); - + return GL_FALSE; + } radeon_bo_map(pbo, 1); - radeon_bo_ref(pbo); - - out = (uint32_t*)(pbo->ptr); + out = (uint32_t*)(pbo->ptr); - memcpy(out, data, sizeinDWORD * 4); + memcpy(out, data, sizeinDWORD * 4); - radeon_bo_unmap(pbo); + radeon_bo_unmap(pbo); - *shaderbo = (void*)pbo; + *shaderbo = (void*)pbo; - return GL_TRUE; + return GL_TRUE; } -GLboolean r600DeleteShader(GLcontext * ctx, - void * shaderbo) +GLboolean r600DeleteShader(GLcontext * ctx, + void * shaderbo) { struct radeon_bo * pbo = (struct radeon_bo *)shaderbo; |