[PATCH 6/7] ddraw: Store all 32 user clip planes.
Henri Verbeet
hverbeet at gmail.com
Tue Dec 5 10:42:17 CST 2017
On 5 December 2017 at 02:56, Józef Kucia <jkucia at codeweavers.com> wrote:
> @@ -341,6 +343,8 @@ struct d3d_device
> /* Handle management */
> struct ddraw_handle_table handle_table;
> D3DMATRIXHANDLE world, proj, view;
> +
> + struct wined3d_vec4 user_clip_planes[D3DMAXUSERCLIPPLANES];
> };
>
> HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUnknown *rt_iface,
...
> @@ -6464,8 +6465,16 @@ static HRESULT d3d_device7_SetClipPlane(IDirect3DDevice7 *iface, DWORD idx, D3DV
> if (!plane)
> return DDERR_INVALIDPARAMS;
>
> + wined3d_plane = (struct wined3d_vec4 *)plane;
> +
> wined3d_mutex_lock();
> - hr = wined3d_device_set_clip_plane(device->wined3d_device, idx, (struct wined3d_vec4 *)plane);
> + hr = wined3d_device_set_clip_plane(device->wined3d_device, idx, wined3d_plane);
> + if (hr == WINED3DERR_INVALIDCALL && idx < ARRAY_SIZE(device->user_clip_planes))
> + {
> + WARN("Clip plane %u is not supported.\n", idx);
> + device->user_clip_planes[idx] = *wined3d_plane;
> + hr = D3D_OK;
> + }
> wined3d_mutex_unlock();
>
> return hr;
Ultimately it's perhaps not that big of a deal, but the name
"user_clip_planes" seems to suggest it contains a copy of the UCPs,
while it really only contains the ones you can't use.
More information about the wine-devel
mailing list