diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index e00f981958..762b8a774b 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -822,7 +822,7 @@ static void shader_generate_arb_declarations(const struct wined3d_shader *shader if(use_nv_clip(gl_info) && ctx->target_version >= NV2) { if(ctx->cur_vs_args->super.clip_enabled) - clip_limit = gl_info->limits.clipplanes; + clip_limit = gl_info->limits.user_clip_distances; else clip_limit = 0; } @@ -835,13 +835,16 @@ static void shader_generate_arb_declarations(const struct wined3d_shader *shader max_constantsF -= *num_clipplanes; if(*num_clipplanes < clip_limit) { - WARN("Only %u clipplanes out of %u enabled\n", *num_clipplanes, gl_info->limits.clipplanes); + WARN("Only %u clip planes out of %u enabled.\n", *num_clipplanes, + gl_info->limits.user_clip_distances); } } else { - if (ctx->target_version >= NV2) *num_clipplanes = gl_info->limits.clipplanes; - else *num_clipplanes = min(gl_info->limits.clipplanes, 4); + if (ctx->target_version >= NV2) + *num_clipplanes = gl_info->limits.user_clip_distances; + else + *num_clipplanes = min(gl_info->limits.user_clip_distances, 4); } } @@ -3232,7 +3235,7 @@ static void vshader_add_footer(struct shader_arb_ctx_priv *priv_ctx, unsigned int cur_clip = 0; const char *zero = arb_get_helper_value(WINED3D_SHADER_TYPE_VERTEX, ARB_ZERO); - for (i = 0; i < gl_info->limits.clipplanes; ++i) + for (i = 0; i < gl_info->limits.user_clip_distances; ++i) { if (args->clip.boolclip.clipplane_mask & (1u << i)) { diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index de6d5a41ea..9bf6042d79 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1853,7 +1853,7 @@ HRESULT CDECL wined3d_device_set_clip_plane(struct wined3d_device *device, TRACE("device %p, plane_idx %u, plane %p.\n", device, plane_idx, plane); /* Validate plane_idx. */ - if (plane_idx >= device->adapter->gl_info.limits.clipplanes) + if (plane_idx >= device->adapter->gl_info.limits.user_clip_distances) { TRACE("Application has requested clipplane this device doesn't support.\n"); return WINED3DERR_INVALIDCALL; @@ -1882,7 +1882,7 @@ HRESULT CDECL wined3d_device_get_clip_plane(const struct wined3d_device *device, TRACE("device %p, plane_idx %u, plane %p.\n", device, plane_idx, plane); /* Validate plane_idx. */ - if (plane_idx >= device->adapter->gl_info.limits.clipplanes) + if (plane_idx >= device->adapter->gl_info.limits.user_clip_distances) { TRACE("Application has requested clipplane this device doesn't support.\n"); return WINED3DERR_INVALIDCALL; diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 6cd8535f29..5d324f3807 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -3302,8 +3302,8 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) gl_info->limits.arb_ps_instructions = 0; gl_info->limits.arb_ps_temps = 0; - gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_CLIP_PLANES, &gl_max); - gl_info->limits.clipplanes = min(WINED3DMAXUSERCLIPPLANES, gl_max); + gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_CLIP_DISTANCES, &gl_max); + gl_info->limits.user_clip_distances = min(MAX_CLIP_DISTANCES, gl_max); TRACE("Clip plane support - max planes %d.\n", gl_max); gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_LIGHTS, &gl_max); diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 4d9d9e77fd..9e9c83b645 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -1407,7 +1407,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context if (update_mask & WINED3D_SHADER_CONST_VS_CLIP_PLANES) { - for (i = 0; i < gl_info->limits.clipplanes; ++i) + for (i = 0; i < gl_info->limits.user_clip_distances; ++i) shader_glsl_clip_plane_uniform(context, state, i, prog); } @@ -1894,7 +1894,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont * clipplane as well. */ max_constantsF = gl_info->limits.glsl_vs_float_constants - 3; if (vs_args->clip_enabled) - max_constantsF -= gl_info->limits.clipplanes; + max_constantsF -= gl_info->limits.user_clip_distances; max_constantsF -= wined3d_popcount(reg_maps->integer_constants); /* Strictly speaking a bool only uses one scalar, but the nvidia(Linux) compiler doesn't pack them properly, * so each scalar requires a full vec4. We could work around this by packing the booleans ourselves, but @@ -2097,7 +2097,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont if (!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]) { if (vs_args->clip_enabled) - shader_addline(buffer, "uniform vec4 clip_planes[%u];\n", gl_info->limits.clipplanes); + shader_addline(buffer, "uniform vec4 clip_planes[%u];\n", gl_info->limits.user_clip_distances); if (version->major < 3) { @@ -6087,7 +6087,7 @@ static GLuint shader_glsl_generate_vshader(const struct wined3d_context *context if (legacy_context) shader_addline(buffer, "gl_ClipVertex = gl_Position;\n"); else - for (i = 0; i < gl_info->limits.clipplanes; ++i) + for (i = 0; i < gl_info->limits.user_clip_distances; ++i) shader_addline(buffer, "gl_ClipDistance[%u] = dot(gl_Position, clip_planes[%u]);\n", i, i); } @@ -6625,7 +6625,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr else { if (settings->clipping) - shader_addline(buffer, "uniform vec4 clip_planes[%u];\n", gl_info->limits.clipplanes); + shader_addline(buffer, "uniform vec4 clip_planes[%u];\n", gl_info->limits.user_clip_distances); declare_out_varying(gl_info, buffer, settings->flatshading, "vec4 ffp_varying_diffuse;\n"); declare_out_varying(gl_info, buffer, settings->flatshading, "vec4 ffp_varying_specular;\n"); @@ -6674,7 +6674,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]) shader_addline(buffer, "gl_ClipVertex = ec_pos;\n"); else - for (i = 0; i < gl_info->limits.clipplanes; ++i) + for (i = 0; i < gl_info->limits.user_clip_distances; ++i) shader_addline(buffer, "gl_ClipDistance[%u] = dot(ec_pos, clip_planes[%u]);\n", i, i); } shader_addline(buffer, "ec_pos /= ec_pos.w;\n"); @@ -8943,7 +8943,7 @@ static void glsl_vertex_pipe_vp_get_caps(const struct wined3d_gl_info *gl_info, | WINED3DVTXPCAPS_LOCALVIEWER | WINED3DVTXPCAPS_TEXGEN_SPHEREMAP; caps->fvf_caps = WINED3DFVFCAPS_PSIZE | 8; /* 8 texture coordinates. */ - caps->max_user_clip_planes = gl_info->limits.clipplanes; + caps->max_user_clip_planes = gl_info->limits.user_clip_distances; caps->raster_caps = WINED3DPRASTERCAPS_FOGRANGE; } @@ -9032,7 +9032,7 @@ static void glsl_vertex_pipe_vdecl(struct wined3d_context *context, if (context->last_was_vshader) { if (legacy_context) - for (i = 0; i < gl_info->limits.clipplanes; ++i) + for (i = 0; i < gl_info->limits.user_clip_distances; ++i) clipplane(context, state, STATE_CLIPPLANE(i)); else context->constant_update_mask |= WINED3D_SHADER_CONST_VS_CLIP_PLANES; @@ -9058,7 +9058,7 @@ static void glsl_vertex_pipe_vdecl(struct wined3d_context *context, { /* Vertex shader clipping ignores the view matrix. Update all clip planes. */ if (legacy_context) - for (i = 0; i < gl_info->limits.clipplanes; ++i) + for (i = 0; i < gl_info->limits.user_clip_distances; ++i) clipplane(context, state, STATE_CLIPPLANE(i)); else context->constant_update_mask |= WINED3D_SHADER_CONST_VS_CLIP_PLANES; @@ -9119,7 +9119,7 @@ static void glsl_vertex_pipe_view(struct wined3d_context *context, const struct if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]) { - for (k = 0; k < gl_info->limits.clipplanes; ++k) + for (k = 0; k < gl_info->limits.user_clip_distances; ++k) { if (!isStateDirty(context, STATE_CLIPPLANE(k))) clipplane(context, state, STATE_CLIPPLANE(k)); @@ -9229,7 +9229,7 @@ static void glsl_vertex_pipe_clip_plane(struct wined3d_context *context, const struct wined3d_gl_info *gl_info = context->gl_info; UINT index = state_id - STATE_CLIPPLANE(0); - if (index >= gl_info->limits.clipplanes) + if (index >= gl_info->limits.user_clip_distances) return; context->constant_update_mask |= WINED3D_SHADER_CONST_VS_CLIP_PLANES; diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 9c1ddb0f8b..d462ea5330 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -609,7 +609,7 @@ void state_alpha_test(struct wined3d_context *context, const struct wined3d_stat void state_clipping(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { const struct wined3d_gl_info *gl_info = context->gl_info; - unsigned int clipplane_count = gl_info->limits.clipplanes; + unsigned int clipplane_count = gl_info->limits.user_clip_distances; unsigned int i, enable_mask, disable_mask; if (use_vs(state) && !context->d3d_info->vs_clipping) @@ -3760,7 +3760,7 @@ void clipplane(struct wined3d_context *context, const struct wined3d_state *stat UINT index = state_id - STATE_CLIPPLANE(0); GLdouble plane[4]; - if (isStateDirty(context, STATE_TRANSFORM(WINED3D_TS_VIEW)) || index >= gl_info->limits.clipplanes) + if (isStateDirty(context, STATE_TRANSFORM(WINED3D_TS_VIEW)) || index >= gl_info->limits.user_clip_distances) return; gl_info->gl_ops.gl.p_glMatrixMode(GL_MODELVIEW); @@ -3914,7 +3914,7 @@ static void transform_view(struct wined3d_context *context, const struct wined3d } /* Reset Clipping Planes */ - for (k = 0; k < gl_info->limits.clipplanes; ++k) + for (k = 0; k < gl_info->limits.user_clip_distances; ++k) { if (!isStateDirty(context, STATE_CLIPPLANE(k))) clipplane(context, state, STATE_CLIPPLANE(k)); @@ -4531,7 +4531,7 @@ static void vertexdeclaration(struct wined3d_context *context, const struct wine state_clipping(context, state, STATE_RENDER(WINED3D_RS_CLIPPLANEENABLE)); } - for (i = 0; i < gl_info->limits.clipplanes; ++i) + for (i = 0; i < gl_info->limits.user_clip_distances; ++i) { clipplane(context, state, STATE_CLIPPLANE(i)); } @@ -4548,7 +4548,7 @@ static void vertexdeclaration(struct wined3d_context *context, const struct wine /* Disable all clip planes to get defined results on all drivers. See comment in the * state_clipping state handler */ - for (i = 0; i < gl_info->limits.clipplanes; ++i) + for (i = 0; i < gl_info->limits.user_clip_distances; ++i) { gl_info->gl_ops.gl.p_glDisable(GL_CLIP_PLANE0 + i); checkGLcall("glDisable(GL_CLIP_PLANE0 + i)"); @@ -4580,7 +4580,7 @@ static void vertexdeclaration(struct wined3d_context *context, const struct wine * (Note: ARB shaders can read the clip planes for clipping emulation even if * device->vs_clipping is false. */ - for (i = 0; i < gl_info->limits.clipplanes; ++i) + for (i = 0; i < gl_info->limits.user_clip_distances; ++i) { clipplane(context, state, STATE_CLIPPLANE(i)); } @@ -5699,7 +5699,7 @@ static void vp_ffp_get_caps(const struct wined3d_gl_info *gl_info, struct wined3 | WINED3DVTXPCAPS_TEXGEN | WINED3DVTXPCAPS_TEXGEN_SPHEREMAP; caps->fvf_caps = WINED3DFVFCAPS_PSIZE | 0x0008; /* 8 texture coords */ - caps->max_user_clip_planes = gl_info->limits.clipplanes; + caps->max_user_clip_planes = gl_info->limits.user_clip_distances; caps->raster_caps = 0; if (gl_info->supported[NV_FOG_DISTANCE]) caps->raster_caps |= WINED3DPRASTERCAPS_FOGRANGE; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 45701cc6e5..a9800b3212 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -180,7 +180,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup #define MAX_VERTEX_SAMPLERS 4 #define MAX_COMBINED_SAMPLERS (MAX_FRAGMENT_SAMPLERS + MAX_VERTEX_SAMPLERS) #define MAX_ACTIVE_LIGHTS 8 -#define MAX_CLIPPLANES WINED3DMAXUSERCLIPPLANES +#define MAX_CLIP_DISTANCES WINED3DMAXUSERCLIPPLANES #define MAX_CONSTANT_BUFFERS 15 #define MAX_SAMPLER_OBJECTS 16 #define MAX_SHADER_RESOURCE_VIEWS 128 @@ -1333,9 +1333,9 @@ DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) DECLSPEC_HIDDEN; #define STATE_IS_SCISSORRECT(a) ((a) == STATE_SCISSORRECT) #define STATE_CLIPPLANE(a) (STATE_SCISSORRECT + 1 + (a)) -#define STATE_IS_CLIPPLANE(a) ((a) >= STATE_CLIPPLANE(0) && (a) <= STATE_CLIPPLANE(MAX_CLIPPLANES - 1)) +#define STATE_IS_CLIPPLANE(a) ((a) >= STATE_CLIPPLANE(0) && (a) <= STATE_CLIPPLANE(MAX_CLIP_DISTANCES - 1)) -#define STATE_MATERIAL (STATE_CLIPPLANE(MAX_CLIPPLANES)) +#define STATE_MATERIAL (STATE_CLIPPLANE(MAX_CLIP_DISTANCES)) #define STATE_IS_MATERIAL(a) ((a) == STATE_MATERIAL) #define STATE_FRONTFACE (STATE_MATERIAL + 1) @@ -2057,7 +2057,7 @@ struct wined3d_gl_limits UINT vertex_samplers; UINT combined_samplers; UINT general_combiners; - UINT clipplanes; + UINT user_clip_distances; UINT texture_size; UINT texture3d_size; float pointsize_max; @@ -2396,7 +2396,7 @@ struct wined3d_state DWORD texture_states[MAX_TEXTURES][WINED3D_HIGHEST_TEXTURE_STATE + 1]; struct wined3d_matrix transforms[HIGHEST_TRANSFORMSTATE + 1]; - struct wined3d_vec4 clip_planes[MAX_CLIPPLANES]; + struct wined3d_vec4 clip_planes[MAX_CLIP_DISTANCES]; struct wined3d_material material; struct wined3d_viewport viewport; RECT scissor_rect;