Commit f79bbc76 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: wined3d_device_set_transform() never fails.

parent b6b9c156
...@@ -1261,16 +1261,15 @@ static HRESULT WINAPI d3d8_device_SetTransform(IDirect3DDevice8 *iface, ...@@ -1261,16 +1261,15 @@ static HRESULT WINAPI d3d8_device_SetTransform(IDirect3DDevice8 *iface,
D3DTRANSFORMSTATETYPE state, const D3DMATRIX *matrix) D3DTRANSFORMSTATETYPE state, const D3DMATRIX *matrix)
{ {
struct d3d8_device *device = impl_from_IDirect3DDevice8(iface); struct d3d8_device *device = impl_from_IDirect3DDevice8(iface);
HRESULT hr;
TRACE("iface %p, state %#x, matrix %p.\n", iface, state, matrix); TRACE("iface %p, state %#x, matrix %p.\n", iface, state, matrix);
/* Note: D3DMATRIX is compatible with struct wined3d_matrix. */ /* Note: D3DMATRIX is compatible with struct wined3d_matrix. */
wined3d_mutex_lock(); wined3d_mutex_lock();
hr = wined3d_device_set_transform(device->wined3d_device, state, (const struct wined3d_matrix *)matrix); wined3d_device_set_transform(device->wined3d_device, state, (const struct wined3d_matrix *)matrix);
wined3d_mutex_unlock(); wined3d_mutex_unlock();
return hr; return D3D_OK;
} }
static HRESULT WINAPI d3d8_device_GetTransform(IDirect3DDevice8 *iface, static HRESULT WINAPI d3d8_device_GetTransform(IDirect3DDevice8 *iface,
......
...@@ -1327,16 +1327,15 @@ static HRESULT WINAPI d3d9_device_SetTransform(IDirect3DDevice9Ex *iface, ...@@ -1327,16 +1327,15 @@ static HRESULT WINAPI d3d9_device_SetTransform(IDirect3DDevice9Ex *iface,
D3DTRANSFORMSTATETYPE state, const D3DMATRIX *matrix) D3DTRANSFORMSTATETYPE state, const D3DMATRIX *matrix)
{ {
struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface); struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface);
HRESULT hr;
TRACE("iface %p, state %#x, matrix %p.\n", iface, state, matrix); TRACE("iface %p, state %#x, matrix %p.\n", iface, state, matrix);
/* Note: D3DMATRIX is compatible with struct wined3d_matrix. */ /* Note: D3DMATRIX is compatible with struct wined3d_matrix. */
wined3d_mutex_lock(); wined3d_mutex_lock();
hr = wined3d_device_set_transform(device->wined3d_device, state, (const struct wined3d_matrix *)matrix); wined3d_device_set_transform(device->wined3d_device, state, (const struct wined3d_matrix *)matrix);
wined3d_mutex_unlock(); wined3d_mutex_unlock();
return hr; return D3D_OK;
} }
static HRESULT WINAPI d3d9_device_GetTransform(IDirect3DDevice9Ex *iface, static HRESULT WINAPI d3d9_device_GetTransform(IDirect3DDevice9Ex *iface,
......
...@@ -3084,7 +3084,6 @@ static HRESULT d3d_device7_SetTransform(IDirect3DDevice7 *iface, ...@@ -3084,7 +3084,6 @@ static HRESULT d3d_device7_SetTransform(IDirect3DDevice7 *iface,
{ {
struct d3d_device *device = impl_from_IDirect3DDevice7(iface); struct d3d_device *device = impl_from_IDirect3DDevice7(iface);
enum wined3d_transform_state wined3d_state; enum wined3d_transform_state wined3d_state;
HRESULT hr;
TRACE("iface %p, state %#x, matrix %p.\n", iface, state, matrix); TRACE("iface %p, state %#x, matrix %p.\n", iface, state, matrix);
...@@ -3111,10 +3110,10 @@ static HRESULT d3d_device7_SetTransform(IDirect3DDevice7 *iface, ...@@ -3111,10 +3110,10 @@ static HRESULT d3d_device7_SetTransform(IDirect3DDevice7 *iface,
/* Note: D3DMATRIX is compatible with struct wined3d_matrix. */ /* Note: D3DMATRIX is compatible with struct wined3d_matrix. */
wined3d_mutex_lock(); wined3d_mutex_lock();
hr = wined3d_device_set_transform(device->wined3d_device, wined3d_state, (struct wined3d_matrix *)matrix); wined3d_device_set_transform(device->wined3d_device, wined3d_state, (struct wined3d_matrix *)matrix);
wined3d_mutex_unlock(); wined3d_mutex_unlock();
return hr; return D3D_OK;
} }
static HRESULT WINAPI d3d_device7_SetTransform_FPUSetup(IDirect3DDevice7 *iface, static HRESULT WINAPI d3d_device7_SetTransform_FPUSetup(IDirect3DDevice7 *iface,
...@@ -3149,17 +3148,15 @@ static HRESULT WINAPI d3d_device3_SetTransform(IDirect3DDevice3 *iface, ...@@ -3149,17 +3148,15 @@ static HRESULT WINAPI d3d_device3_SetTransform(IDirect3DDevice3 *iface,
if (state == D3DTRANSFORMSTATE_PROJECTION) if (state == D3DTRANSFORMSTATE_PROJECTION)
{ {
D3DMATRIX projection; D3DMATRIX projection;
HRESULT hr;
wined3d_mutex_lock(); wined3d_mutex_lock();
multiply_matrix(&projection, &device->legacy_clipspace, matrix); multiply_matrix(&projection, &device->legacy_clipspace, matrix);
hr = wined3d_device_set_transform(device->wined3d_device, wined3d_device_set_transform(device->wined3d_device,
WINED3D_TS_PROJECTION, (struct wined3d_matrix *)&projection); WINED3D_TS_PROJECTION, (struct wined3d_matrix *)&projection);
if (SUCCEEDED(hr)) device->legacy_projection = *matrix;
device->legacy_projection = *matrix;
wined3d_mutex_unlock(); wined3d_mutex_unlock();
return hr; return D3D_OK;
} }
return IDirect3DDevice7_SetTransform(&device->IDirect3DDevice7_iface, state, matrix); return IDirect3DDevice7_SetTransform(&device->IDirect3DDevice7_iface, state, matrix);
...@@ -3363,18 +3360,16 @@ static HRESULT WINAPI d3d_device3_MultiplyTransform(IDirect3DDevice3 *iface, ...@@ -3363,18 +3360,16 @@ static HRESULT WINAPI d3d_device3_MultiplyTransform(IDirect3DDevice3 *iface,
if (state == D3DTRANSFORMSTATE_PROJECTION) if (state == D3DTRANSFORMSTATE_PROJECTION)
{ {
D3DMATRIX projection, tmp; D3DMATRIX projection, tmp;
HRESULT hr;
wined3d_mutex_lock(); wined3d_mutex_lock();
multiply_matrix(&tmp, &device->legacy_projection, matrix); multiply_matrix(&tmp, &device->legacy_projection, matrix);
multiply_matrix(&projection, &device->legacy_clipspace, &tmp); multiply_matrix(&projection, &device->legacy_clipspace, &tmp);
hr = wined3d_device_set_transform(device->wined3d_device, wined3d_device_set_transform(device->wined3d_device,
WINED3D_TS_PROJECTION, (struct wined3d_matrix *)&projection); WINED3D_TS_PROJECTION, (struct wined3d_matrix *)&projection);
if (SUCCEEDED(hr)) device->legacy_projection = tmp;
device->legacy_projection = tmp;
wined3d_mutex_unlock(); wined3d_mutex_unlock();
return hr; return D3D_OK;
} }
return IDirect3DDevice7_MultiplyTransform(&device->IDirect3DDevice7_iface, state, matrix); return IDirect3DDevice7_MultiplyTransform(&device->IDirect3DDevice7_iface, state, matrix);
......
...@@ -41,13 +41,11 @@ static void update_clip_space(struct d3d_device *device, ...@@ -41,13 +41,11 @@ static void update_clip_space(struct d3d_device *device,
offset->x, offset->y, offset->z, 1.0f, offset->x, offset->y, offset->z, 1.0f,
}; };
D3DMATRIX projection; D3DMATRIX projection;
HRESULT hr;
multiply_matrix(&projection, &clip_space, &device->legacy_projection); multiply_matrix(&projection, &clip_space, &device->legacy_projection);
hr = wined3d_device_set_transform(device->wined3d_device, wined3d_device_set_transform(device->wined3d_device,
WINED3D_TS_PROJECTION, (struct wined3d_matrix *)&projection); WINED3D_TS_PROJECTION, (struct wined3d_matrix *)&projection);
if (SUCCEEDED(hr)) device->legacy_clipspace = clip_space;
device->legacy_clipspace = clip_space;
} }
/***************************************************************************** /*****************************************************************************
......
...@@ -1716,7 +1716,7 @@ HRESULT CDECL wined3d_device_get_stream_source_freq(const struct wined3d_device ...@@ -1716,7 +1716,7 @@ HRESULT CDECL wined3d_device_get_stream_source_freq(const struct wined3d_device
return WINED3D_OK; return WINED3D_OK;
} }
HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device, void CDECL wined3d_device_set_transform(struct wined3d_device *device,
enum wined3d_transform_state d3dts, const struct wined3d_matrix *matrix) enum wined3d_transform_state d3dts, const struct wined3d_matrix *matrix)
{ {
TRACE("device %p, state %s, matrix %p.\n", TRACE("device %p, state %s, matrix %p.\n",
...@@ -1732,7 +1732,7 @@ HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device, ...@@ -1732,7 +1732,7 @@ HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device,
TRACE("Recording... not performing anything.\n"); TRACE("Recording... not performing anything.\n");
device->updateStateBlock->changed.transform[d3dts >> 5] |= 1 << (d3dts & 0x1f); device->updateStateBlock->changed.transform[d3dts >> 5] |= 1 << (d3dts & 0x1f);
device->updateStateBlock->state.transforms[d3dts] = *matrix; device->updateStateBlock->state.transforms[d3dts] = *matrix;
return WINED3D_OK; return;
} }
/* If the new matrix is the same as the current one, /* If the new matrix is the same as the current one,
...@@ -1744,7 +1744,7 @@ HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device, ...@@ -1744,7 +1744,7 @@ HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device,
if (!memcmp(&device->stateBlock->state.transforms[d3dts].u.m[0][0], matrix, sizeof(*matrix))) if (!memcmp(&device->stateBlock->state.transforms[d3dts].u.m[0][0], matrix, sizeof(*matrix)))
{ {
TRACE("The application is setting the same matrix over again.\n"); TRACE("The application is setting the same matrix over again.\n");
return WINED3D_OK; return;
} }
device->stateBlock->state.transforms[d3dts] = *matrix; device->stateBlock->state.transforms[d3dts] = *matrix;
...@@ -1753,9 +1753,6 @@ HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device, ...@@ -1753,9 +1753,6 @@ HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device,
if (d3dts < WINED3D_TS_WORLD_MATRIX(device->adapter->gl_info.limits.blends)) if (d3dts < WINED3D_TS_WORLD_MATRIX(device->adapter->gl_info.limits.blends))
device_invalidate_state(device, STATE_TRANSFORM(d3dts)); device_invalidate_state(device, STATE_TRANSFORM(d3dts));
return WINED3D_OK;
} }
HRESULT CDECL wined3d_device_get_transform(const struct wined3d_device *device, HRESULT CDECL wined3d_device_get_transform(const struct wined3d_device *device,
...@@ -1790,7 +1787,9 @@ HRESULT CDECL wined3d_device_multiply_transform(struct wined3d_device *device, ...@@ -1790,7 +1787,9 @@ HRESULT CDECL wined3d_device_multiply_transform(struct wined3d_device *device,
multiply_matrix(&temp, mat, matrix); multiply_matrix(&temp, mat, matrix);
/* Apply change via set transform - will reapply to eg. lights this way. */ /* Apply change via set transform - will reapply to eg. lights this way. */
return wined3d_device_set_transform(device, state, &temp); wined3d_device_set_transform(device, state, &temp);
return WINED3D_OK;
} }
/* Note lights are real special cases. Although the device caps state only /* Note lights are real special cases. Although the device caps state only
......
...@@ -2233,7 +2233,7 @@ HRESULT __cdecl wined3d_device_set_stream_source_freq(struct wined3d_device *dev ...@@ -2233,7 +2233,7 @@ HRESULT __cdecl wined3d_device_set_stream_source_freq(struct wined3d_device *dev
HRESULT __cdecl wined3d_device_set_texture(struct wined3d_device *device, UINT stage, struct wined3d_texture *texture); HRESULT __cdecl wined3d_device_set_texture(struct wined3d_device *device, UINT stage, struct wined3d_texture *texture);
HRESULT __cdecl wined3d_device_set_texture_stage_state(struct wined3d_device *device, HRESULT __cdecl wined3d_device_set_texture_stage_state(struct wined3d_device *device,
UINT stage, enum wined3d_texture_stage_state state, DWORD value); UINT stage, enum wined3d_texture_stage_state state, DWORD value);
HRESULT __cdecl wined3d_device_set_transform(struct wined3d_device *device, void __cdecl wined3d_device_set_transform(struct wined3d_device *device,
enum wined3d_transform_state state, const struct wined3d_matrix *matrix); enum wined3d_transform_state state, const struct wined3d_matrix *matrix);
HRESULT __cdecl wined3d_device_set_vertex_declaration(struct wined3d_device *device, HRESULT __cdecl wined3d_device_set_vertex_declaration(struct wined3d_device *device,
struct wined3d_vertex_declaration *declaration); struct wined3d_vertex_declaration *declaration);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment