panfrost: split asserts in pandecode
[mesa.git] / src / gallium / state_trackers / wgl / stw_ext_context.c
index 8a96cac43857acf967388cb4f5f582fbfe937784..6326d20ba82e024c9fbd8177592914b889e39f51 100644 (file)
 #include "stw_icd.h"
 #include "stw_context.h"
 #include "stw_device.h"
+#include "stw_ext_context.h"
+
+#include "util/u_debug.h"
+
+
+wglCreateContext_t wglCreateContext_func = 0;
+wglDeleteContext_t wglDeleteContext_func = 0;
 
 
 /**
 HGLRC WINAPI
 wglCreateContextAttribsARB(HDC hDC, HGLRC hShareContext, const int *attribList)
 {
-   typedef HGLRC (WINAPI *wglCreateContext_t)(HDC hdc);
-   typedef BOOL (WINAPI *wglDeleteContext_t)(HGLRC hglrc);
    HGLRC context;
-   static HMODULE opengl_lib = 0;
-   static wglCreateContext_t wglCreateContext_func = 0;
-   static wglDeleteContext_t wglDeleteContext_func = 0;
 
    int majorVersion = 1, minorVersion = 0, layerPlane = 0;
    int contextFlags = 0x0;
@@ -135,11 +137,11 @@ wglCreateContextAttribsARB(HDC hDC, HGLRC hShareContext, const int *attribList)
    }
 
    /* Get pointer to OPENGL32.DLL's wglCreate/DeleteContext() functions */
-   if (opengl_lib == 0) {
-      /* Open the OPENGL32.DLL library */
-      opengl_lib = LoadLibraryA("OPENGL32.DLL");
+   if (!wglCreateContext_func || !wglDeleteContext_func) {
+      /* Get the OPENGL32.DLL library */
+      HMODULE opengl_lib = GetModuleHandleA("opengl32.dll");
       if (!opengl_lib) {
-         _debug_printf("wgl: LoadLibrary(OPENGL32.DLL) failed\n");
+         _debug_printf("wgl: GetModuleHandleA(\"opengl32.dll\") failed\n");
          return 0;
       }
 
@@ -193,3 +195,18 @@ wglCreateContextAttribsARB(HDC hDC, HGLRC hShareContext, const int *attribList)
 
    return context;
 }
+
+
+/** Defined by WGL_ARB_make_current_read */
+BOOL APIENTRY
+wglMakeContextCurrentARB(HDC hDrawDC, HDC hReadDC, HGLRC hglrc)
+{
+   DHGLRC dhglrc = 0;
+
+   if (stw_dev && stw_dev->callbacks.wglCbGetDhglrc) {
+      /* Convert HGLRC to DHGLRC */
+      dhglrc = stw_dev->callbacks.wglCbGetDhglrc(hglrc);
+   }
+
+   return stw_make_current(hDrawDC, hReadDC, dhglrc);
+}