nouveau: support NULL-resources
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Wed, 6 Mar 2019 12:28:42 +0000 (13:28 +0100)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Mon, 29 Apr 2019 10:28:38 +0000 (10:28 +0000)
It's legal for a buffer-object to have a NULL-resource, but let's just
skip over it, as there's nothing to do.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Acked-by: Karol Herbst <kherbst@redhat.com>
src/gallium/drivers/nouveau/nv50/nv50_push.c
src/gallium/drivers/nouveau/nvc0/nvc0_vbo_translate.c

index bec2d42e0373191ab35b29d046457ef94e7f7324..15666d346c1a7337b685fccd724766cd30a7b6e3 100644 (file)
@@ -264,10 +264,13 @@ nv50_push_vbo(struct nv50_context *nv50, const struct pipe_draw_info *info)
       const struct pipe_vertex_buffer *vb = &nv50->vtxbuf[i];
       const uint8_t *data;
 
-      if (unlikely(!vb->is_user_buffer))
+      if (unlikely(!vb->is_user_buffer)) {
+         if (!vb->buffer.resource)
+            continue;
+
          data = nouveau_resource_map_offset(&nv50->base,
             nv04_resource(vb->buffer.resource), vb->buffer_offset, NOUVEAU_BO_RD);
-      else
+      else
          data = vb->buffer.user;
 
       if (apply_bias && likely(!(nv50->vertex->instance_bufs & (1 << i))))
index 4333fb26d23d451e1a2914685d952c3d5a1976df..64903fc5cf03ce2a82365ed791f14b09cbb12cc0 100644 (file)
@@ -71,9 +71,13 @@ nvc0_vertex_configure_translate(struct nvc0_context *nvc0, int32_t index_bias)
 
       if (likely(vb->is_user_buffer))
          map = (const uint8_t *)vb->buffer.user;
-      else
+      else {
+         if (!vb->buffer.resource)
+            continue;
+
          map = nouveau_resource_map_offset(&nvc0->base,
             nv04_resource(vb->buffer.resource), vb->buffer_offset, NOUVEAU_BO_RD);
+      }
 
       if (index_bias && !unlikely(nvc0->vertex->instance_bufs & (1 << i)))
          map += (intptr_t)index_bias * vb->stride;