st/mesa: tell u_vbuf that GL core doesn't have user VBOs
authorMarek Olšák <marek.olsak@amd.com>
Fri, 10 Feb 2017 00:12:22 +0000 (01:12 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 14 Feb 2017 20:47:51 +0000 (21:47 +0100)
I think this only affects radeonsi - VI, because all other drivers using
u_vbuf probably don't support GL_DOUBLE, so they won't be affected by this.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/mesa/state_tracker/st_context.c

index 4b9d913f6392dbb8476314bdc89d6dfe55a96a2c..f4ad6d8ad1600de5ee0b891bd25fb478509ebad8 100644 (file)
@@ -76,6 +76,7 @@
 #include "pipe/p_context.h"
 #include "util/u_inlines.h"
 #include "util/u_upload_mgr.h"
+#include "util/u_vbuf.h"
 #include "cso_cache/cso_context.h"
 
 
@@ -342,7 +343,13 @@ st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
    st->has_user_constbuf =
       screen->get_param(screen, PIPE_CAP_USER_CONSTANT_BUFFERS);
 
-   st->cso_context = cso_create_context(pipe, 0);
+   /* Drivers still have to upload zero-stride vertex attribs manually
+    * with the GL core profile, but they don't have to deal with any complex
+    * user vertex buffer uploads.
+    */
+   unsigned vbuf_flags =
+      ctx->API == API_OPENGL_CORE ? U_VBUF_FLAG_NO_USER_VBOS : 0;
+   st->cso_context = cso_create_context(pipe, vbuf_flags);
 
    st_init_atoms( st );
    st_init_clear(st);