[PATCH 5/5] wined3d: Store maximum vertex attributes count.
Matteo Bruni
mbruni at codeweavers.com
Fri Aug 26 06:34:01 CDT 2011
---
dlls/wined3d/directx.c | 3 +++
dlls/wined3d/state.c | 8 +-------
dlls/wined3d/wined3d_private.h | 1 +
3 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 506b875..515bc46 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -2253,6 +2253,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
gl_info->limits.vertex_samplers = 0;
gl_info->limits.combined_samplers = gl_info->limits.fragment_samplers + gl_info->limits.vertex_samplers;
gl_info->limits.sampler_stages = 1;
+ gl_info->limits.vertex_attribs = 16;
gl_info->limits.glsl_vs_float_constants = 0;
gl_info->limits.glsl_ps_float_constants = 0;
gl_info->limits.arb_vs_float_constants = 0;
@@ -2446,6 +2447,8 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter)
gl_info->limits.vertex_samplers = tmp;
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, &tmp);
gl_info->limits.combined_samplers = tmp;
+ glGetIntegerv(GL_MAX_VERTEX_ATTRIBS_ARB, &tmp);
+ gl_info->limits.vertex_attribs = tmp;
/* Loading GLSL sampler uniforms is much simpler if we can assume that the sampler setup
* is known at shader link time. In a vertex shader + pixel shader combination this isn't
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 1535e3a..c4e0513 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -3999,15 +3999,9 @@ static inline void unload_numbered_array(struct wined3d_context *context, int i)
static void unload_numbered_arrays(struct wined3d_context *context)
{
/* disable any attribs (this is the same for both GLSL and ARB modes) */
- GLint maxAttribs = 16;
int i;
- /* Leave all the attribs disabled */
- glGetIntegerv(GL_MAX_VERTEX_ATTRIBS_ARB, &maxAttribs);
- /* MESA does not support it right not */
- if (glGetError() != GL_NO_ERROR)
- maxAttribs = 16;
- for (i = 0; i < maxAttribs; ++i) {
+ for (i = 0; i < context->gl_info->limits.vertex_attribs; ++i) {
unload_numbered_array(context, i);
}
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 47eee79..8fb5d27 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1456,6 +1456,7 @@ struct wined3d_gl_limits
UINT anisotropy;
float shininess;
UINT samples;
+ UINT vertex_attribs;
UINT glsl_varyings;
UINT glsl_vs_float_constants;
--
1.7.3.4
More information about the wine-patches
mailing list