Mesa (master): nvc0: Handle user mapped vertex buffer for edgeflag

Maarten Lankhorst mlankhorst at kemper.freedesktop.org
Tue Mar 18 14:02:07 UTC 2014


Module: Mesa
Branch: master
Commit: 8fe888fafd992474672cdb10aafadd6f60811136
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8fe888fafd992474672cdb10aafadd6f60811136

Author: Maarten Lankhorst <maarten.lankhorst at canonical.com>
Date:   Tue Mar 18 14:47:40 2014 +0100

nvc0: Handle user mapped vertex buffer for edgeflag

Handle mapping edgeflag data similar to the code around it.
This fixes a crash in piglit test gl-2.0-edgeflag.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>

---

 src/gallium/drivers/nouveau/nvc0/nvc0_vbo_translate.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo_translate.c b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo_translate.c
index 51e751c..952828a 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo_translate.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo_translate.c
@@ -98,11 +98,16 @@ nvc0_push_map_edgeflag(struct push_context *ctx, struct nvc0_context *nvc0,
    struct pipe_vertex_element *ve = &nvc0->vertex->element[attr].pipe;
    struct pipe_vertex_buffer *vb = &nvc0->vtxbuf[ve->vertex_buffer_index];
    struct nv04_resource *buf = nv04_resource(vb->buffer);
-   unsigned offset = vb->buffer_offset + ve->src_offset;
 
    ctx->edgeflag.stride = vb->stride;
-   ctx->edgeflag.data = nouveau_resource_map_offset(&nvc0->base,
+   if (buf) {
+      unsigned offset = vb->buffer_offset + ve->src_offset;
+      ctx->edgeflag.data = nouveau_resource_map_offset(&nvc0->base,
                            buf, offset, NOUVEAU_BO_RD);
+   } else {
+      ctx->edgeflag.data = (const uint8_t *)vb->user_buffer + ve->src_offset;
+   }
+
    if (index_bias)
       ctx->edgeflag.data += (intptr_t)index_bias * vb->stride;
 }




More information about the mesa-commit mailing list