aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/glx/glxdricommon.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/glx/glxdricommon.c')
-rw-r--r--xorg-server/glx/glxdricommon.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/xorg-server/glx/glxdricommon.c b/xorg-server/glx/glxdricommon.c
index 44d5a3e7b..6e310f1cd 100644
--- a/xorg-server/glx/glxdricommon.c
+++ b/xorg-server/glx/glxdricommon.c
@@ -25,6 +25,10 @@
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
+#else
+
+#include "glheader.h"
+
#endif
#include <stdint.h>
@@ -40,6 +44,10 @@
#include "glxscreens.h"
#include "glxdricommon.h"
+#ifdef _MSC_VER
+#define dlerror() "Getting loadlibrary error string not implemented"
+#endif
+
static int
getUST(int64_t * ust)
{
@@ -48,6 +56,9 @@ getUST(int64_t * ust)
if (ust == NULL)
return -EFAULT;
+#ifdef _MSC_VER
+ __asm int 3;
+#else
if (gettimeofday(&tv, NULL) == 0) {
ust[0] = (tv.tv_sec * 1000000) + tv.tv_usec;
return 0;
@@ -55,6 +66,7 @@ getUST(int64_t * ust)
else {
return -errno;
}
+ #endif
}
const __DRIsystemTimeExtension systemTimeExtension = {
@@ -221,17 +233,33 @@ glxProbeDriver(const char *driverName,
char filename[PATH_MAX];
const __DRIextension **extensions;
+#ifdef _MSC_VER
+#ifdef _DEBUG
+#define DLLNAME "%s%s_dri_dbg.dll"
+#else
+#define DLLNAME "%s%s_dri.dll"
+#endif
+ snprintf(filename, sizeof filename, DLLNAME,
+ dri_driver_path, driverName);
+
+ driver = LoadLibrary(filename);
+#else
snprintf(filename, sizeof filename, "%s/%s_dri.so",
dri_driver_path, driverName);
driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
+#endif
if (driver == NULL) {
LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
filename, dlerror());
goto cleanup_failure;
}
+#ifdef _MSC_VER
+ extensions = (const __DRIextension **)GetProcAddress(driver, __DRI_DRIVER_EXTENSIONS);
+#else
extensions = dlsym(driver, __DRI_DRIVER_EXTENSIONS);
+#endif
if (extensions == NULL) {
LogMessage(X_ERROR, "AIGLX error: %s exports no extensions (%s)\n",
driverName, dlerror());
@@ -260,7 +288,11 @@ glxProbeDriver(const char *driverName,
cleanup_failure:
if (driver)
+#ifdef _MSC_VER
+ FreeLibrary(driver);
+#else
dlclose(driver);
+#endif
*coreExt = *renderExt = NULL;
return NULL;
}