glx: Unset the direct_support bit for GLX_EXT_import_context
[mesa.git] / src / glx / tests / fake_glx_screen.cpp
index 12d003b84f7542a23d5e931ae4ae2a1d4a6fb738..e0f0b7c0db0a0884da98456166164d6aff403d4f 100644 (file)
 
 struct glx_screen_vtable fake_glx_screen::vt = {
    indirect_create_context,
-   fake_glx_context::create_attribs
+   indirect_create_context_attribs,
+   NULL,
+   NULL,
 };
 
 struct glx_screen_vtable fake_glx_screen_direct::vt = {
    fake_glx_context_direct::create,
-   fake_glx_context_direct::create_attribs
+   fake_glx_context_direct::create_attribs,
+   NULL,
+   NULL,
 };
 
 const struct glx_context_vtable fake_glx_context::vt = {
@@ -55,3 +59,53 @@ indirect_create_context(struct glx_screen *psc, struct glx_config *mode,
 
    return new fake_glx_context(psc, mode);
 }
+
+extern "C" struct glx_context *
+indirect_create_context_attribs(struct glx_screen *base,
+                               struct glx_config *config_base,
+                               struct glx_context *shareList,
+                               unsigned num_attribs,
+                               const uint32_t *attribs,
+                               unsigned *error)
+{
+   (void) num_attribs;
+   (void) attribs;
+   (void) error;
+
+   return indirect_create_context(base, config_base, shareList, 0);
+}
+
+#ifdef GLX_USE_APPLEGL
+#warning Indirect GLX tests are not built
+extern "C" struct glx_context *
+applegl_create_context(struct glx_screen *base,
+                      struct glx_config *config_base,
+                      struct glx_context *shareList,
+                      int renderType)
+{
+   return indirect_create_context(base, config_base, shareList, renderType);
+}
+#endif
+
+/* This is necessary so that we don't have to link with glxcurrent.c
+ * which would require us to link with X libraries and what not.
+ */
+GLubyte dummyBuffer[__GLX_BUFFER_LIMIT_SIZE];
+struct glx_context_vtable dummyVtable;
+struct glx_context dummyContext = {
+   &dummyBuffer[0],
+   &dummyBuffer[0],
+   &dummyBuffer[0],
+   &dummyBuffer[__GLX_BUFFER_LIMIT_SIZE],
+   sizeof(dummyBuffer),
+   &dummyVtable
+};
+__thread void *__glX_tls_Context = &dummyContext;
+
+#if !defined(USE_ELF_TLS)
+extern "C" struct glx_context *
+__glXGetCurrentContext()
+{
+ return (struct glx_context *) __glX_tls_Context;
+}
+#endif