Matteo Bruni : wined3d: Make the core extensions enabling table-based.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jul 13 09:30:03 CDT 2015
Module: wine
Branch: master
Commit: 6dc3ac2b04b7df6b84a96a9707ecf2081f3231bb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6dc3ac2b04b7df6b84a96a9707ecf2081f3231bb
Author: Matteo Bruni <mbruni at codeweavers.com>
Date: Fri Jul 10 00:06:17 2015 +0200
wined3d: Make the core extensions enabling table-based.
---
dlls/wined3d/directx.c | 54 +++++++++++++++++++++++++++++---------------------
1 file changed, 31 insertions(+), 23 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 42072e9..f045bb5 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -3342,6 +3342,19 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info)
/* Context activation is done by the caller. */
static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
{
+ static const struct
+ {
+ enum wined3d_gl_extension extension;
+ DWORD min_gl_version;
+ }
+ core_extensions[] =
+ {
+ {EXT_TEXTURE3D, MAKEDWORD_VERSION(1, 2)},
+ {EXT_BLEND_MINMAX, MAKEDWORD_VERSION(1, 4)},
+ {EXT_BLEND_SUBTRACT, MAKEDWORD_VERSION(1, 4)},
+ {NV_POINT_SPRITE, MAKEDWORD_VERSION(1, 4)},
+ {ARB_TEXTURE_NON_POWER_OF_TWO, MAKEDWORD_VERSION(2, 0)},
+ };
struct wined3d_driver_info *driver_info = &adapter->driver_info;
const char *gl_vendor_str, *gl_renderer_str, *gl_version_str;
struct wined3d_gl_info *gl_info = &adapter->gl_info;
@@ -3354,7 +3367,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
enum wined3d_pci_device device;
DWORD gl_version;
HDC hdc;
- unsigned int i;
+ unsigned int i, j;
GLint context_profile = 0;
TRACE("adapter %p.\n", adapter);
@@ -3429,30 +3442,25 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
parse_extension_string(gl_info, WGL_Extensions, wgl_extension_map,
sizeof(wgl_extension_map) / sizeof(*wgl_extension_map));
- if (!gl_info->supported[EXT_TEXTURE3D] && gl_version >= MAKEDWORD_VERSION(1, 2))
- {
- TRACE("GL CORE: GL_EXT_texture3D support.\n");
- gl_info->supported[EXT_TEXTURE3D] = TRUE;
- }
-
- if (!gl_info->supported[NV_POINT_SPRITE] && gl_version >= MAKEDWORD_VERSION(1, 4))
- {
- TRACE("GL CORE: GL_NV_point_sprite support.\n");
- gl_info->supported[NV_POINT_SPRITE] = TRUE;
- }
-
- if ((!gl_info->supported[EXT_BLEND_MINMAX] || !gl_info->supported[EXT_BLEND_SUBTRACT])
- && gl_version >= MAKEDWORD_VERSION(1, 4))
+ for (i = 0; i < ARRAY_SIZE(core_extensions); ++i)
{
- TRACE("GL CORE: GL_EXT_blend_minmax / GL_EXT_blend_subtract support.\n");
- gl_info->supported[EXT_BLEND_MINMAX] = TRUE;
- gl_info->supported[EXT_BLEND_SUBTRACT] = TRUE;
- }
+ if (!gl_info->supported[core_extensions[i].extension]
+ && gl_version >= core_extensions[i].min_gl_version)
+ {
+ for (j = 0; j < ARRAY_SIZE(gl_extension_map); ++j)
+ if (gl_extension_map[j].extension == core_extensions[i].extension)
+ break;
- if (!gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO] && gl_version >= MAKEDWORD_VERSION(2, 0))
- {
- TRACE("GL CORE: GL_ARB_texture_non_power_of_two support.\n");
- gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO] = TRUE;
+ if (j < ARRAY_SIZE(gl_extension_map))
+ {
+ TRACE("GL CORE: %s support.\n", gl_extension_map[j].extension_string);
+ gl_info->supported[core_extensions[i].extension] = TRUE;
+ }
+ else
+ {
+ FIXME("GL extension %u not in the GL extensions map.\n", core_extensions[i].extension);
+ }
+ }
}
if (gl_info->supported[EXT_BLEND_MINMAX] || gl_info->supported[EXT_BLEND_SUBTRACT])
More information about the wine-cvs
mailing list