[PATCH 5/5] wined3d: Cleanup user clip distances defines and fields a bit.
Matteo Bruni
mbruni at codeweavers.com
Wed Oct 12 18:04:10 CDT 2016
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
dlls/wined3d/arb_program_shader.c | 13 ++++++++-----
dlls/wined3d/device.c | 4 ++--
dlls/wined3d/directx.c | 4 ++--
dlls/wined3d/glsl_shader.c | 22 +++++++++++-----------
dlls/wined3d/state.c | 14 +++++++-------
dlls/wined3d/wined3d_private.h | 10 +++++-----
6 files changed, 35 insertions(+), 32 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index e00f981..762b8a7 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 de6d5a4..9bf6042 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 6cd8535..5d324f3 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 4d9d9e7..9e9c83b 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 9c1ddb0..d462ea5 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 45701cc..a9800b3 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;
--
2.7.3
More information about the wine-patches
mailing list