[PATCH 3/5] wined3d: Use the same code for parsing the WGL extension string as for the regular GL extension string.
Henri Verbeet
hverbeet at codeweavers.com
Thu Mar 15 15:49:56 CDT 2012
---
dlls/wined3d/directx.c | 72 ++++++++++++++---------------------------------
1 files changed, 22 insertions(+), 50 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index d63abf5..f36c6ad 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -79,7 +79,7 @@ struct wined3d_extension_map
DWORD version;
};
-static const struct wined3d_extension_map EXTENSION_MAP[] =
+static const struct wined3d_extension_map gl_extension_map[] =
{
/* APPLE */
{"GL_APPLE_client_storage", APPLE_CLIENT_STORAGE, 0 },
@@ -200,6 +200,13 @@ static const struct wined3d_extension_map EXTENSION_MAP[] =
{"GL_SGIS_generate_mipmap", SGIS_GENERATE_MIPMAP, 0 },
};
+static const struct wined3d_extension_map wgl_extension_map[] =
+{
+ {"WGL_ARB_pixel_format", WGL_ARB_PIXEL_FORMAT, 0 },
+ {"WGL_EXT_swap_control", WGL_EXT_SWAP_CONTROL, 0 },
+ {"WGL_WINE_pixel_format_passthrough", WGL_WINE_PIXEL_FORMAT_PASSTHROUGH, 0 },
+};
+
/**********************************************************
* Utility functions follow
**********************************************************/
@@ -447,10 +454,11 @@ static inline BOOL test_arb_vs_offset_limit(const struct wined3d_gl_info *gl_inf
static DWORD ver_for_ext(enum wined3d_gl_extension ext)
{
unsigned int i;
- for (i = 0; i < (sizeof(EXTENSION_MAP) / sizeof(*EXTENSION_MAP)); ++i) {
- if(EXTENSION_MAP[i].extension == ext) {
- return EXTENSION_MAP[i].version;
- }
+
+ for (i = 0; i < (sizeof(gl_extension_map) / sizeof(*gl_extension_map)); ++i)
+ {
+ if (gl_extension_map[i].extension == ext)
+ return gl_extension_map[i].version;
}
return 0;
}
@@ -2346,7 +2354,6 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
unsigned i;
HDC hdc;
DWORD gl_version;
- size_t len;
TRACE_(d3d_caps)("(%p)\n", gl_info);
@@ -2439,7 +2446,8 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
gl_info->supported[WINED3D_GL_EXT_NONE] = TRUE;
- parse_extension_string(gl_info, GL_Extensions, EXTENSION_MAP, sizeof(EXTENSION_MAP) / sizeof(*EXTENSION_MAP));
+ parse_extension_string(gl_info, GL_Extensions, gl_extension_map,
+ sizeof(gl_extension_map) / sizeof(*gl_extension_map));
/* Now work out what GL support this card really has */
load_gl_funcs( gl_info, gl_version );
@@ -2449,13 +2457,13 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
/* Now mark all the extensions supported which are included in the opengl core version. Do this *after*
* loading the functions, otherwise the code above will load the extension entry points instead of the
* core functions, which may not work. */
- for (i = 0; i < (sizeof(EXTENSION_MAP) / sizeof(*EXTENSION_MAP)); ++i)
+ for (i = 0; i < (sizeof(gl_extension_map) / sizeof(*gl_extension_map)); ++i)
{
- if (!gl_info->supported[EXTENSION_MAP[i].extension]
- && EXTENSION_MAP[i].version <= gl_version && EXTENSION_MAP[i].version)
+ if (!gl_info->supported[gl_extension_map[i].extension]
+ && gl_extension_map[i].version <= gl_version && gl_extension_map[i].version)
{
- TRACE_(d3d_caps)(" GL CORE: %s support.\n", EXTENSION_MAP[i].extension_string);
- gl_info->supported[EXTENSION_MAP[i].extension] = TRUE;
+ TRACE_(d3d_caps)(" GL CORE: %s support.\n", gl_extension_map[i].extension_string);
+ gl_info->supported[gl_extension_map[i].extension] = TRUE;
}
}
@@ -2842,44 +2850,8 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
if (!WGL_Extensions)
WARN_(d3d_caps)("WGL extensions not supported.\n");
else
- {
- TRACE_(d3d_caps)("WGL_Extensions reported:\n");
- while (*WGL_Extensions)
- {
- const char *start;
- char current_ext[256];
-
- while (isspace(*WGL_Extensions))
- ++WGL_Extensions;
- start = WGL_Extensions;
- while (!isspace(*WGL_Extensions) && *WGL_Extensions)
- ++WGL_Extensions;
-
- len = WGL_Extensions - start;
- if (!len || len >= sizeof(current_ext))
- continue;
-
- memcpy(current_ext, start, len);
- current_ext[len] = '\0';
- TRACE_(d3d_caps)("- %s\n", debugstr_a(current_ext));
-
- if (!strcmp(current_ext, "WGL_ARB_pixel_format"))
- {
- gl_info->supported[WGL_ARB_PIXEL_FORMAT] = TRUE;
- TRACE_(d3d_caps)("FOUND: WGL_ARB_pixel_format support\n");
- }
- if (!strcmp(current_ext, "WGL_EXT_swap_control"))
- {
- gl_info->supported[WGL_EXT_SWAP_CONTROL] = TRUE;
- TRACE_(d3d_caps)("FOUND: WGL_EXT_swap_control support\n");
- }
- if (!strcmp(current_ext, "WGL_WINE_pixel_format_passthrough"))
- {
- gl_info->supported[WGL_WINE_PIXEL_FORMAT_PASSTHROUGH] = TRUE;
- TRACE_(d3d_caps)("FOUND: WGL_WINE_pixel_format_passthrough support\n");
- }
- }
- }
+ parse_extension_string(gl_info, WGL_Extensions, wgl_extension_map,
+ sizeof(wgl_extension_map) / sizeof(*wgl_extension_map));
fixup_extensions(gl_info, gl_renderer_str, gl_vendor, card_vendor, device);
init_driver_info(driver_info, card_vendor, device);
--
1.7.3.4
More information about the wine-patches
mailing list