=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Store only supported user clip planes.
Alexandre Julliard
julliard at winehq.org
Tue Dec 5 15:02:14 CST 2017
Module: wine
Branch: master
Commit: 7225e601086f0cb9e33d10acf400253abe354763
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7225e601086f0cb9e33d10acf400253abe354763
Author: Józef Kucia <jkucia at codeweavers.com>
Date: Tue Dec 5 00:26:35 2017 +0100
wined3d: Store only supported user clip planes.
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wined3d/device.c | 10 ++--------
dlls/wined3d/stateblock.c | 2 +-
dlls/wined3d/wined3d_private.h | 4 +---
3 files changed, 4 insertions(+), 12 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 7340488..d57758d 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1757,7 +1757,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);
- if (plane_idx >= WINED3D_MAX_USER_CLIP_PLANES)
+ 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;
@@ -1774,12 +1774,6 @@ HRESULT CDECL wined3d_device_set_clip_plane(struct wined3d_device *device,
device->update_state->clip_planes[plane_idx] = *plane;
- if (plane_idx >= device->adapter->gl_info.limits.user_clip_distances)
- {
- WARN("Clip plane %u is not supported.\n", plane_idx);
- return WINED3D_OK;
- }
-
if (!device->recording)
wined3d_cs_emit_set_clip_plane(device->cs, plane_idx, plane);
@@ -1791,7 +1785,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);
- if (plane_idx >= WINED3D_MAX_USER_CLIP_PLANES)
+ 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/stateblock.c b/dlls/wined3d/stateblock.c
index f80b875..9d61360 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -218,7 +218,7 @@ static void stateblock_savedstates_set_all(struct wined3d_saved_states *states,
stateblock_set_bits(states->renderState, WINEHIGHEST_RENDER_STATE + 1);
for (i = 0; i < MAX_TEXTURES; ++i) states->textureState[i] = 0x3ffff;
for (i = 0; i < MAX_COMBINED_SAMPLERS; ++i) states->samplerState[i] = 0x3ffe;
- states->clipplane = 0xffffffff;
+ states->clipplane = (1u << MAX_CLIP_DISTANCES) - 1;
states->pixelShaderConstantsB = 0xffff;
states->pixelShaderConstantsI = 0xffff;
states->vertexShaderConstantsB = 0xffff;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 0e72aac..2321b41 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -259,8 +259,6 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
return complex_fixup;
}
-#define WINED3D_MAX_USER_CLIP_PLANES 32
-
/* Device caps */
#define MAX_STREAMS 16
#define MAX_TEXTURES 8
@@ -2829,7 +2827,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[WINED3D_MAX_USER_CLIP_PLANES];
+ struct wined3d_vec4 clip_planes[MAX_CLIP_DISTANCES];
struct wined3d_material material;
struct wined3d_viewport viewport;
RECT scissor_rect;
More information about the wine-cvs
mailing list