Rename nir_lower_constant_initializers to nir_lower_variable_initalizers
[mesa.git] / src / gallium / state_trackers / wgl / stw_getprocaddress.c
index 2ffeec1a2fb7316c519601119a2b8a96cc140101..c8138f61fa4c191f90beb96535520ca5a355ba79 100644 (file)
@@ -35,6 +35,9 @@
 #include "glapi/glapi.h"
 #include "stw_device.h"
 #include "stw_icd.h"
+#include "stw_nopfuncs.h"
+
+#include "util/u_debug.h"
 
 struct stw_extension_entry
 {
@@ -64,13 +67,21 @@ static const struct stw_extension_entry stw_extension_entries[] = {
    /* WGL_EXT_extensions_string */
    STW_EXTENSION_ENTRY( wglGetExtensionsStringEXT ),
 
-   /* WGL_EXT_swap_interval */
+   /* WGL_EXT_swap_control */
    STW_EXTENSION_ENTRY( wglGetSwapIntervalEXT ),
    STW_EXTENSION_ENTRY( wglSwapIntervalEXT ),
 
    /* WGL_ARB_create_context */
    STW_EXTENSION_ENTRY( wglCreateContextAttribsARB ),
 
+   /* WGL_ARB_render_texture */
+   STW_EXTENSION_ENTRY( wglBindTexImageARB ),
+   STW_EXTENSION_ENTRY( wglReleaseTexImageARB ),
+   STW_EXTENSION_ENTRY( wglSetPbufferAttribARB ),
+
+   /*  WGL_ARB_make_current_read */
+   STW_EXTENSION_ENTRY( wglMakeContextCurrentARB ),
+   STW_EXTENSION_ENTRY( wglGetCurrentReadDCARB ),
    { NULL, NULL }
 };
 
@@ -79,6 +90,7 @@ DrvGetProcAddress(
    LPCSTR lpszProc )
 {
    const struct stw_extension_entry *entry;
+   PROC p;
 
    if (!stw_dev)
       return NULL;
@@ -88,8 +100,23 @@ DrvGetProcAddress(
          if (strcmp( lpszProc, entry->name ) == 0)
             return entry->proc;
 
-   if (lpszProc[0] == 'g' && lpszProc[1] == 'l')
-      return (PROC) _glapi_get_proc_address( lpszProc );
-
+   if (lpszProc[0] == 'g' && lpszProc[1] == 'l') {
+      p = (PROC) _glapi_get_proc_address(lpszProc);
+      if (p)
+         return p;
+   }
+
+   /* If we get here, we'd normally just return NULL, but since some apps
+    * (like Viewperf12) crash when they try to use the null pointer, try
+    * returning a pointer to a no-op function instead.
+    */
+   p = stw_get_nop_function(lpszProc);
+   if (p) {
+      debug_printf("wglGetProcAddress(\"%s\") returning no-op function\n",
+                   lpszProc);
+      return p;
+   }
+
+   debug_printf("wglGetProcAddress(\"%s\") returning NULL\n", lpszProc);
    return NULL;
 }