projects
/
mesa.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cdaf63d
)
r300: unmap buffer objects after usage
author
Maciej Cencora
<m.cencora@gmail.com>
Fri, 14 Aug 2009 20:48:03 +0000
(22:48 +0200)
committer
Maciej Cencora
<m.cencora@gmail.com>
Fri, 14 Aug 2009 21:56:04 +0000
(23:56 +0200)
src/mesa/drivers/dri/r300/r300_draw.c
patch
|
blob
|
history
diff --git
a/src/mesa/drivers/dri/r300/r300_draw.c
b/src/mesa/drivers/dri/r300/r300_draw.c
index e261d94eb05124cc5e75b184e6d99822a98e7327..37445af1ad53a921523b9fc5d49c8b2aa9808e27 100644
(file)
--- a/
src/mesa/drivers/dri/r300/r300_draw.c
+++ b/
src/mesa/drivers/dri/r300/r300_draw.c
@@
-79,9
+79,11
@@
static void r300FixupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer
GLvoid *src_ptr;
GLuint *out;
int i;
GLvoid *src_ptr;
GLuint *out;
int i;
+ GLboolean mapped_named_bo = GL_FALSE;
if (mesa_ind_buf->obj->Name && !mesa_ind_buf->obj->Pointer) {
ctx->Driver.MapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER, GL_READ_ONLY_ARB, mesa_ind_buf->obj);
if (mesa_ind_buf->obj->Name && !mesa_ind_buf->obj->Pointer) {
ctx->Driver.MapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER, GL_READ_ONLY_ARB, mesa_ind_buf->obj);
+ mapped_named_bo = GL_TRUE;
assert(mesa_ind_buf->obj->Pointer != NULL);
}
src_ptr = ADD_POINTERS(mesa_ind_buf->obj->Pointer, mesa_ind_buf->ptr);
assert(mesa_ind_buf->obj->Pointer != NULL);
}
src_ptr = ADD_POINTERS(mesa_ind_buf->obj->Pointer, mesa_ind_buf->ptr);
@@
-125,13
+127,16
@@
static void r300FixupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer
r300->ind_buf.is_32bit = GL_FALSE;
r300->ind_buf.count = mesa_ind_buf->count;
r300->ind_buf.is_32bit = GL_FALSE;
r300->ind_buf.count = mesa_ind_buf->count;
+
+ if (mapped_named_bo) {
+ ctx->Driver.UnmapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER, mesa_ind_buf->obj);
+ }
}
static void r300SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer *mesa_ind_buf)
{
r300ContextPtr r300 = R300_CONTEXT(ctx);
}
static void r300SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer *mesa_ind_buf)
{
r300ContextPtr r300 = R300_CONTEXT(ctx);
- GLboolean mapped_named_bo = GL_FALSE;
if (!mesa_ind_buf) {
r300->ind_buf.bo = NULL;
if (!mesa_ind_buf) {
r300->ind_buf.bo = NULL;
@@
-145,6
+150,7
@@
static void r300SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer
#endif
const GLvoid *src_ptr;
GLvoid *dst_ptr;
#endif
const GLvoid *src_ptr;
GLvoid *dst_ptr;
+ GLboolean mapped_named_bo = GL_FALSE;
if (mesa_ind_buf->obj->Name && !mesa_ind_buf->obj->Pointer) {
ctx->Driver.MapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER, GL_READ_ONLY_ARB, mesa_ind_buf->obj);
if (mesa_ind_buf->obj->Name && !mesa_ind_buf->obj->Pointer) {
ctx->Driver.MapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER, GL_READ_ONLY_ARB, mesa_ind_buf->obj);
@@
-164,6
+170,10
@@
static void r300SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer
r300->ind_buf.is_32bit = (mesa_ind_buf->type == GL_UNSIGNED_INT);
r300->ind_buf.count = mesa_ind_buf->count;
r300->ind_buf.is_32bit = (mesa_ind_buf->type == GL_UNSIGNED_INT);
r300->ind_buf.count = mesa_ind_buf->count;
+
+ if (mapped_named_bo) {
+ ctx->Driver.UnmapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER, mesa_ind_buf->obj);
+ }
} else {
r300FixupIndexBuffer(ctx, mesa_ind_buf);
}
} else {
r300FixupIndexBuffer(ctx, mesa_ind_buf);
}