+ void * retPtr = NULL;
+
+ SVGA_STATS_TIME_PUSH(svga_sws(svga),
+ SVGA_STATS_TIME_VBUFRENDERMAPVERT);
+
+ if (svga_render->vbuf) {
+ char *ptr = (char*)pipe_buffer_map(&svga->pipe,
+ svga_render->vbuf,
+ PIPE_TRANSFER_WRITE |
+ PIPE_TRANSFER_FLUSH_EXPLICIT |
+ PIPE_TRANSFER_DISCARD_RANGE |
+ PIPE_TRANSFER_UNSYNCHRONIZED,
+ &svga_render->vbuf_transfer);
+ if (ptr) {
+ svga_render->vbuf_ptr = ptr;
+ retPtr = ptr + svga_render->vbuf_offset;
+ }
+ else {
+ svga_render->vbuf_ptr = NULL;
+ svga_render->vbuf_transfer = NULL;
+ retPtr = NULL;
+ }
+ }
+ else {
+ /* we probably ran out of memory when allocating the vertex buffer */
+ retPtr = NULL;
+ }