Rename nir_lower_constant_initializers to nir_lower_variable_initalizers
[mesa.git] / src / gallium / state_trackers / wgl / stw_getprocaddress.c
index 8875dc22f3dc3e6f302225ceeafd5da9a66b5f63..c8138f61fa4c191f90beb96535520ca5a355ba79 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
  *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2008 VMware, Inc.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -18,7 +18,7 @@
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <GL/wglext.h>
 
 #include "glapi/glapi.h"
-#include "stw_ext_gallium.h"
+#include "stw_device.h"
+#include "stw_icd.h"
+#include "stw_nopfuncs.h"
+
+#include "util/u_debug.h"
 
 struct stw_extension_entry
 {
@@ -48,6 +52,13 @@ static const struct stw_extension_entry stw_extension_entries[] = {
    /* WGL_ARB_extensions_string */
    STW_EXTENSION_ENTRY( wglGetExtensionsStringARB ),
 
+   /* WGL_ARB_pbuffer */
+   STW_EXTENSION_ENTRY( wglCreatePbufferARB ),
+   STW_EXTENSION_ENTRY( wglGetPbufferDCARB ),
+   STW_EXTENSION_ENTRY( wglReleasePbufferDCARB ),
+   STW_EXTENSION_ENTRY( wglDestroyPbufferARB ),
+   STW_EXTENSION_ENTRY( wglQueryPbufferARB ),
+
    /* WGL_ARB_pixel_format */
    STW_EXTENSION_ENTRY( wglChoosePixelFormatARB ),
    STW_EXTENSION_ENTRY( wglGetPixelFormatAttribfvARB ),
@@ -56,14 +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_EXT_gallium ? */
-   STW_EXTENSION_ENTRY( wglGetGalliumScreenMESA ),
-   STW_EXTENSION_ENTRY( wglCreateGalliumContextMESA ),
+   /* 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 }
 };
 
@@ -72,14 +90,33 @@ DrvGetProcAddress(
    LPCSTR lpszProc )
 {
    const struct stw_extension_entry *entry;
+   PROC p;
+
+   if (!stw_dev)
+      return NULL;
 
    if (lpszProc[0] == 'w' && lpszProc[1] == 'g' && lpszProc[2] == 'l')
       for (entry = stw_extension_entries; entry->name; entry++)
          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;
 }