From 979e3744f7721bef9e88fd671dfd7591c9f85392 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 16 May 2011 23:01:21 +0200 Subject: [PATCH] wined3d: Remove state management methods from the IWineD3DDevice interface. --- dlls/d3d10core/device.c | 13 +- dlls/d3d8/device.c | 131 ++- dlls/d3d9/device.c | 138 +-- dlls/ddraw/device.c | 300 +++-- dlls/ddraw/executebuffer.c | 25 +- dlls/ddraw/surface.c | 4 +- dlls/ddraw/vertexbuffer.c | 53 +- dlls/ddraw/viewport.c | 17 +- dlls/wined3d/device.c | 2254 ++++++++++++++++++------------------ dlls/wined3d/stateblock.c | 56 +- dlls/wined3d/wined3d.spec | 64 + include/wine/wined3d.idl | 340 ++---- 12 files changed, 1621 insertions(+), 1774 deletions(-) diff --git a/dlls/d3d10core/device.c b/dlls/d3d10core/device.c index 8936f36f37a..c2df4132bfe 100644 --- a/dlls/d3d10core/device.c +++ b/dlls/d3d10core/device.c @@ -129,7 +129,7 @@ static void STDMETHODCALLTYPE d3d10_device_PSSetShader(ID3D10Device *iface, ID3D TRACE("iface %p, shader %p\n", iface, shader); - IWineD3DDevice_SetPixelShader(This->wined3d_device, ps ? ps->wined3d_shader : NULL); + wined3d_device_set_pixel_shader(This->wined3d_device, ps ? ps->wined3d_shader : NULL); } static void STDMETHODCALLTYPE d3d10_device_PSSetSamplers(ID3D10Device *iface, @@ -146,7 +146,7 @@ static void STDMETHODCALLTYPE d3d10_device_VSSetShader(ID3D10Device *iface, ID3D TRACE("iface %p, shader %p\n", iface, shader); - IWineD3DDevice_SetVertexShader(This->wined3d_device, vs ? vs->wined3d_shader : NULL); + wined3d_device_set_vertex_shader(This->wined3d_device, vs ? vs->wined3d_shader : NULL); } static void STDMETHODCALLTYPE d3d10_device_DrawIndexed(ID3D10Device *iface, @@ -157,7 +157,7 @@ static void STDMETHODCALLTYPE d3d10_device_DrawIndexed(ID3D10Device *iface, TRACE("iface %p, index_count %u, start_index_location %u, base_vertex_location %d.\n", iface, index_count, start_index_location, base_vertex_location); - IWineD3DDevice_SetBaseVertexIndex(This->wined3d_device, base_vertex_location); + wined3d_device_set_base_vertex_index(This->wined3d_device, base_vertex_location); IWineD3DDevice_DrawIndexedPrimitive(This->wined3d_device, start_index_location, index_count); } @@ -185,7 +185,7 @@ static void STDMETHODCALLTYPE d3d10_device_IASetInputLayout(ID3D10Device *iface, TRACE("iface %p, input_layout %p\n", iface, input_layout); - IWineD3DDevice_SetVertexDeclaration(This->wined3d_device, + wined3d_device_set_vertex_declaration(This->wined3d_device, input_layout ? ((struct d3d10_input_layout *)input_layout)->wined3d_decl : NULL); } @@ -201,7 +201,7 @@ static void STDMETHODCALLTYPE d3d10_device_IASetVertexBuffers(ID3D10Device *ifac for (i = 0; i < buffer_count; ++i) { - IWineD3DDevice_SetStreamSource(This->wined3d_device, start_slot, + wined3d_device_set_stream_source(This->wined3d_device, start_slot, buffers[i] ? ((struct d3d10_buffer *)buffers[i])->wined3d_buffer : NULL, offsets[i], strides[i]); } @@ -215,7 +215,8 @@ static void STDMETHODCALLTYPE d3d10_device_IASetIndexBuffer(ID3D10Device *iface, TRACE("iface %p, buffer %p, format %s, offset %u.\n", iface, buffer, debug_dxgi_format(format), offset); - IWineD3DDevice_SetIndexBuffer(This->wined3d_device, buffer ? ((struct d3d10_buffer *)buffer)->wined3d_buffer : NULL, + wined3d_device_set_index_buffer(This->wined3d_device, + buffer ? ((struct d3d10_buffer *)buffer)->wined3d_buffer : NULL, wined3dformat_from_dxgi_format(format)); if (offset) FIXME("offset %u not supported.\n", offset); } diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c index 2e749e38845..7d5936da0ff 100644 --- a/dlls/d3d8/device.c +++ b/dlls/d3d8/device.c @@ -595,14 +595,14 @@ static HRESULT WINAPI IDirect3DDevice8Impl_Reset(IDirect3DDevice8 *iface, TRACE("iface %p, present_parameters %p.\n", iface, pPresentationParameters); wined3d_mutex_lock(); - IWineD3DDevice_SetIndexBuffer(This->WineD3DDevice, NULL, WINED3DFMT_UNKNOWN); + wined3d_device_set_index_buffer(This->WineD3DDevice, NULL, WINED3DFMT_UNKNOWN); for (i = 0; i < 16; ++i) { - IWineD3DDevice_SetStreamSource(This->WineD3DDevice, i, NULL, 0, 0); + wined3d_device_set_stream_source(This->WineD3DDevice, i, NULL, 0, 0); } for (i = 0; i < 16; ++i) { - IWineD3DDevice_SetTexture(This->WineD3DDevice, i, NULL); + wined3d_device_set_texture(This->WineD3DDevice, i, NULL); } IWineD3DDevice_EnumResources(This->WineD3DDevice, reset_enum_callback, &resources_ok); @@ -634,7 +634,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_Reset(IDirect3DDevice8 *iface, hr = IWineD3DDevice_Reset(This->WineD3DDevice, &localParameters); if (SUCCEEDED(hr)) { - hr = IWineD3DDevice_SetRenderState(This->WineD3DDevice, WINED3DRS_POINTSIZE_MIN, 0); + hr = wined3d_device_set_render_state(This->WineD3DDevice, WINED3DRS_POINTSIZE_MIN, 0); This->lost = FALSE; } else @@ -724,7 +724,7 @@ static void WINAPI IDirect3DDevice8Impl_SetGammaRamp(IDirect3DDevice8 *iface, DW /* Note: D3DGAMMARAMP is compatible with WINED3DGAMMARAMP */ wined3d_mutex_lock(); - IWineD3DDevice_SetGammaRamp(This->WineD3DDevice, 0, Flags, (CONST WINED3DGAMMARAMP *) pRamp); + wined3d_device_set_gamma_ramp(This->WineD3DDevice, 0, Flags, (const WINED3DGAMMARAMP *)pRamp); wined3d_mutex_unlock(); } @@ -736,7 +736,7 @@ static void WINAPI IDirect3DDevice8Impl_GetGammaRamp(IDirect3DDevice8 *iface, D3 /* Note: D3DGAMMARAMP is compatible with WINED3DGAMMARAMP */ wined3d_mutex_lock(); - IWineD3DDevice_GetGammaRamp(This->WineD3DDevice, 0, (WINED3DGAMMARAMP *) pRamp); + wined3d_device_get_gamma_ramp(This->WineD3DDevice, 0, (WINED3DGAMMARAMP *)pRamp); wined3d_mutex_unlock(); } @@ -1137,14 +1137,15 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetRenderTarget(IDirect3DDevice8 *ifa } } - hr = IWineD3DDevice_GetDepthStencilSurface(This->WineD3DDevice, &original_ds); + hr = wined3d_device_get_depth_stencil(This->WineD3DDevice, &original_ds); if (hr == WINED3D_OK || hr == WINED3DERR_NOTFOUND) { - hr = IWineD3DDevice_SetDepthStencilSurface(This->WineD3DDevice, pZSurface ? pZSurface->wined3d_surface : NULL); + hr = wined3d_device_set_depth_stencil(This->WineD3DDevice, pZSurface ? pZSurface->wined3d_surface : NULL); if (SUCCEEDED(hr) && pRenderTarget) { - hr = IWineD3DDevice_SetRenderTarget(This->WineD3DDevice, 0, pSurface->wined3d_surface, TRUE); - if (FAILED(hr)) IWineD3DDevice_SetDepthStencilSurface(This->WineD3DDevice, original_ds); + hr = wined3d_device_set_render_target(This->WineD3DDevice, 0, pSurface->wined3d_surface, TRUE); + if (FAILED(hr)) + wined3d_device_set_depth_stencil(This->WineD3DDevice, original_ds); } } if (original_ds) @@ -1169,7 +1170,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetRenderTarget(IDirect3DDevice8 *ifa } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetRenderTarget(This->WineD3DDevice, 0, &wined3d_surface); + hr = wined3d_device_get_render_target(This->WineD3DDevice, 0, &wined3d_surface); if (SUCCEEDED(hr) && wined3d_surface) { *ppRenderTarget = wined3d_surface_get_parent(wined3d_surface); @@ -1200,7 +1201,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetDepthStencilSurface(IDirect3DDevic } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetDepthStencilSurface(This->WineD3DDevice, &wined3d_surface); + hr = wined3d_device_get_depth_stencil(This->WineD3DDevice, &wined3d_surface); if (SUCCEEDED(hr)) { *ppZStencilSurface = wined3d_surface_get_parent(wined3d_surface); @@ -1272,7 +1273,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetTransform(IDirect3DDevice8 *iface, /* Note: D3DMATRIX is compatible with WINED3DMATRIX */ wined3d_mutex_lock(); - hr = IWineD3DDevice_SetTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) lpMatrix); + hr = wined3d_device_set_transform(This->WineD3DDevice, State, (const WINED3DMATRIX *)lpMatrix); wined3d_mutex_unlock(); return hr; @@ -1288,7 +1289,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetTransform(IDirect3DDevice8 *iface, /* Note: D3DMATRIX is compatible with WINED3DMATRIX */ wined3d_mutex_lock(); - hr = IWineD3DDevice_GetTransform(This->WineD3DDevice, State, (WINED3DMATRIX*) pMatrix); + hr = wined3d_device_get_transform(This->WineD3DDevice, State, (WINED3DMATRIX *)pMatrix); wined3d_mutex_unlock(); return hr; @@ -1320,7 +1321,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetViewport(IDirect3DDevice8 *iface, /* Note: D3DVIEWPORT8 is compatible with WINED3DVIEWPORT */ wined3d_mutex_lock(); - hr = IWineD3DDevice_SetViewport(This->WineD3DDevice, (const WINED3DVIEWPORT *)pViewport); + hr = wined3d_device_set_viewport(This->WineD3DDevice, (const WINED3DVIEWPORT *)pViewport); wined3d_mutex_unlock(); return hr; @@ -1336,7 +1337,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetViewport(IDirect3DDevice8 *iface, /* Note: D3DVIEWPORT8 is compatible with WINED3DVIEWPORT */ wined3d_mutex_lock(); - hr = IWineD3DDevice_GetViewport(This->WineD3DDevice, (WINED3DVIEWPORT *)pViewport); + hr = wined3d_device_get_viewport(This->WineD3DDevice, (WINED3DVIEWPORT *)pViewport); wined3d_mutex_unlock(); return hr; @@ -1352,7 +1353,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetMaterial(IDirect3DDevice8 *iface, /* Note: D3DMATERIAL8 is compatible with WINED3DMATERIAL */ wined3d_mutex_lock(); - hr = IWineD3DDevice_SetMaterial(This->WineD3DDevice, (const WINED3DMATERIAL *)pMaterial); + hr = wined3d_device_set_material(This->WineD3DDevice, (const WINED3DMATERIAL *)pMaterial); wined3d_mutex_unlock(); return hr; @@ -1368,7 +1369,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetMaterial(IDirect3DDevice8 *iface, /* Note: D3DMATERIAL8 is compatible with WINED3DMATERIAL */ wined3d_mutex_lock(); - hr = IWineD3DDevice_GetMaterial(This->WineD3DDevice, (WINED3DMATERIAL *)pMaterial); + hr = wined3d_device_get_material(This->WineD3DDevice, (WINED3DMATERIAL *)pMaterial); wined3d_mutex_unlock(); return hr; @@ -1384,7 +1385,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetLight(IDirect3DDevice8 *iface, DWO /* Note: D3DLIGHT8 is compatible with WINED3DLIGHT */ wined3d_mutex_lock(); - hr = IWineD3DDevice_SetLight(This->WineD3DDevice, Index, (const WINED3DLIGHT *)pLight); + hr = wined3d_device_set_light(This->WineD3DDevice, Index, (const WINED3DLIGHT *)pLight); wined3d_mutex_unlock(); return hr; @@ -1400,7 +1401,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetLight(IDirect3DDevice8 *iface, DWO /* Note: D3DLIGHT8 is compatible with WINED3DLIGHT */ wined3d_mutex_lock(); - hr = IWineD3DDevice_GetLight(This->WineD3DDevice, Index, (WINED3DLIGHT *)pLight); + hr = wined3d_device_get_light(This->WineD3DDevice, Index, (WINED3DLIGHT *)pLight); wined3d_mutex_unlock(); return hr; @@ -1415,7 +1416,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_LightEnable(IDirect3DDevice8 *iface, TRACE("iface %p, index %u, enable %#x.\n", iface, Index, Enable); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetLightEnable(This->WineD3DDevice, Index, Enable); + hr = wined3d_device_set_light_enable(This->WineD3DDevice, Index, Enable); wined3d_mutex_unlock(); return hr; @@ -1430,7 +1431,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetLightEnable(IDirect3DDevice8 *ifac TRACE("iface %p, index %u, enable %p.\n", iface, Index, pEnable); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetLightEnable(This->WineD3DDevice, Index, pEnable); + hr = wined3d_device_get_light_enable(This->WineD3DDevice, Index, pEnable); wined3d_mutex_unlock(); return hr; @@ -1445,7 +1446,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetClipPlane(IDirect3DDevice8 *iface, TRACE("iface %p, index %u, plane %p.\n", iface, Index, pPlane); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetClipPlane(This->WineD3DDevice, Index, pPlane); + hr = wined3d_device_set_clip_plane(This->WineD3DDevice, Index, pPlane); wined3d_mutex_unlock(); return hr; @@ -1460,7 +1461,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetClipPlane(IDirect3DDevice8 *iface, TRACE("iface %p, index %u, plane %p.\n", iface, Index, pPlane); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetClipPlane(This->WineD3DDevice, Index, pPlane); + hr = wined3d_device_get_clip_plane(This->WineD3DDevice, Index, pPlane); wined3d_mutex_unlock(); return hr; @@ -1490,11 +1491,11 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetRenderState(IDirect3DDevice8 *ifac { case D3DRS_ZBIAS: wined3d_value.f = Value * zbias_factor; - hr = IWineD3DDevice_SetRenderState(This->WineD3DDevice, WINED3DRS_DEPTHBIAS, wined3d_value.d); + hr = wined3d_device_set_render_state(This->WineD3DDevice, WINED3DRS_DEPTHBIAS, wined3d_value.d); break; default: - hr = IWineD3DDevice_SetRenderState(This->WineD3DDevice, State, Value); + hr = wined3d_device_set_render_state(This->WineD3DDevice, State, Value); } wined3d_mutex_unlock(); @@ -1518,12 +1519,12 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetRenderState(IDirect3DDevice8 *ifac switch (State) { case D3DRS_ZBIAS: - hr = IWineD3DDevice_GetRenderState(This->WineD3DDevice, WINED3DRS_DEPTHBIAS, &wined3d_value.d); + hr = wined3d_device_get_render_state(This->WineD3DDevice, WINED3DRS_DEPTHBIAS, &wined3d_value.d); if (SUCCEEDED(hr)) *pValue = wined3d_value.f / zbias_factor; break; default: - hr = IWineD3DDevice_GetRenderState(This->WineD3DDevice, State, pValue); + hr = wined3d_device_get_render_state(This->WineD3DDevice, State, pValue); } wined3d_mutex_unlock(); @@ -1707,7 +1708,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetClipStatus(IDirect3DDevice8 *iface /* FIXME: Verify that D3DCLIPSTATUS8 ~= WINED3DCLIPSTATUS */ wined3d_mutex_lock(); - hr = IWineD3DDevice_SetClipStatus(This->WineD3DDevice, (const WINED3DCLIPSTATUS *)pClipStatus); + hr = wined3d_device_set_clip_status(This->WineD3DDevice, (const WINED3DCLIPSTATUS *)pClipStatus); wined3d_mutex_unlock(); return hr; @@ -1722,7 +1723,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetClipStatus(IDirect3DDevice8 *iface TRACE("iface %p, clip_status %p.\n", iface, pClipStatus); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetClipStatus(This->WineD3DDevice, (WINED3DCLIPSTATUS *)pClipStatus); + hr = wined3d_device_get_clip_status(This->WineD3DDevice, (WINED3DCLIPSTATUS *)pClipStatus); wined3d_mutex_unlock(); return hr; @@ -1742,7 +1743,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetTexture(IDirect3DDevice8 *iface, } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetTexture(This->WineD3DDevice, Stage, &wined3d_texture); + hr = wined3d_device_get_texture(This->WineD3DDevice, Stage, &wined3d_texture); if (FAILED(hr)) { WARN("Failed to get texture for stage %u, hr %#x.\n", Stage, hr); @@ -1775,7 +1776,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetTexture(IDirect3DDevice8 *iface, D TRACE("iface %p, stage %u, texture %p.\n", iface, Stage, pTexture); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetTexture(This->WineD3DDevice, Stage, + hr = wined3d_device_set_texture(This->WineD3DDevice, Stage, pTexture ? ((IDirect3DBaseTexture8Impl *)pTexture)->wined3d_texture : NULL); wined3d_mutex_unlock(); @@ -1838,8 +1839,10 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetTextureStageState(IDirect3DDevic l = &tss_lookup[Type]; wined3d_mutex_lock(); - if (l->sampler_state) hr = IWineD3DDevice_GetSamplerState(This->WineD3DDevice, Stage, l->state, pValue); - else hr = IWineD3DDevice_GetTextureStageState(This->WineD3DDevice, Stage, l->state, pValue); + if (l->sampler_state) + hr = wined3d_device_get_sampler_state(This->WineD3DDevice, Stage, l->state, pValue); + else + hr = wined3d_device_get_texture_stage_state(This->WineD3DDevice, Stage, l->state, pValue); wined3d_mutex_unlock(); return hr; @@ -1863,8 +1866,10 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetTextureStageState(IDirect3DDevice8 l = &tss_lookup[Type]; wined3d_mutex_lock(); - if (l->sampler_state) hr = IWineD3DDevice_SetSamplerState(This->WineD3DDevice, Stage, l->state, Value); - else hr = IWineD3DDevice_SetTextureStageState(This->WineD3DDevice, Stage, l->state, Value); + if (l->sampler_state) + hr = wined3d_device_set_sampler_state(This->WineD3DDevice, Stage, l->state, Value); + else + hr = wined3d_device_set_texture_stage_state(This->WineD3DDevice, Stage, l->state, Value); wined3d_mutex_unlock(); return hr; @@ -1902,7 +1907,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetPaletteEntries(IDirect3DDevice8 *i TRACE("iface %p, palette_idx %u, entries %p.\n", iface, PaletteNumber, pEntries); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetPaletteEntries(This->WineD3DDevice, PaletteNumber, pEntries); + hr = wined3d_device_set_palette_entries(This->WineD3DDevice, PaletteNumber, pEntries); wined3d_mutex_unlock(); return hr; @@ -1917,7 +1922,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetPaletteEntries(IDirect3DDevice8 *i TRACE("iface %p, palette_idx %u, entries %p.\n", iface, PaletteNumber, pEntries); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetPaletteEntries(This->WineD3DDevice, PaletteNumber, pEntries); + hr = wined3d_device_get_palette_entries(This->WineD3DDevice, PaletteNumber, pEntries); wined3d_mutex_unlock(); return hr; @@ -1932,7 +1937,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetCurrentTexturePalette(IDirect3DDev TRACE("iface %p, palette_idx %u.\n", iface, PaletteNumber); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetCurrentTexturePalette(This->WineD3DDevice, PaletteNumber); + hr = wined3d_device_set_current_texture_palette(This->WineD3DDevice, PaletteNumber); wined3d_mutex_unlock(); return hr; @@ -1947,7 +1952,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetCurrentTexturePalette(IDirect3DD TRACE("iface %p, palette_idx %p.\n", iface, PaletteNumber); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetCurrentTexturePalette(This->WineD3DDevice, PaletteNumber); + hr = wined3d_device_get_current_texture_palette(This->WineD3DDevice, PaletteNumber); wined3d_mutex_unlock(); return hr; @@ -2176,9 +2181,9 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetVertexShader(IDirect3DDevice8 *ifa TRACE("Setting FVF, %#x\n", pShader); wined3d_mutex_lock(); - IWineD3DDevice_SetVertexDeclaration(This->WineD3DDevice, + wined3d_device_set_vertex_declaration(This->WineD3DDevice, IDirect3DDevice8Impl_FindDecl(This, pShader)->wined3d_vertex_declaration); - IWineD3DDevice_SetVertexShader(This->WineD3DDevice, NULL); + wined3d_device_set_vertex_shader(This->WineD3DDevice, NULL); wined3d_mutex_unlock(); return D3D_OK; @@ -2196,10 +2201,10 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetVertexShader(IDirect3DDevice8 *ifa return D3DERR_INVALIDCALL; } - hr = IWineD3DDevice_SetVertexDeclaration(This->WineD3DDevice, + hr = wined3d_device_set_vertex_declaration(This->WineD3DDevice, ((IDirect3DVertexDeclaration8Impl *)shader->vertex_declaration)->wined3d_vertex_declaration); if (SUCCEEDED(hr)) - hr = IWineD3DDevice_SetVertexShader(This->WineD3DDevice, shader->wined3d_shader); + hr = wined3d_device_set_vertex_shader(This->WineD3DDevice, shader->wined3d_shader); wined3d_mutex_unlock(); TRACE("Returning hr %#x\n", hr); @@ -2217,7 +2222,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShader(IDirect3DDevice8 *ifa TRACE("iface %p, shader %p.\n", iface, ppShader); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetVertexDeclaration(This->WineD3DDevice, &wined3d_declaration); + hr = wined3d_device_get_vertex_declaration(This->WineD3DDevice, &wined3d_declaration); if (FAILED(hr)) { wined3d_mutex_unlock(); @@ -2261,7 +2266,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_DeleteVertexShader(IDirect3DDevice8 * return D3DERR_INVALIDCALL; } - cur = IWineD3DDevice_GetVertexShader(This->WineD3DDevice); + cur = wined3d_device_get_vertex_shader(This->WineD3DDevice); if (cur) { if (cur == shader->wined3d_shader) @@ -2295,7 +2300,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetVertexShaderConstant(IDirect3DDevi } wined3d_mutex_lock(); - hr = IWineD3DDevice_SetVertexShaderConstantF(This->WineD3DDevice, Register, pConstantData, ConstantCount); + hr = wined3d_device_set_vs_consts_f(This->WineD3DDevice, Register, pConstantData, ConstantCount); wined3d_mutex_unlock(); return hr; @@ -2317,7 +2322,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderConstant(IDirect3DDevi } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetVertexShaderConstantF(This->WineD3DDevice, Register, pConstantData, ConstantCount); + hr = wined3d_device_get_vs_consts_f(This->WineD3DDevice, Register, pConstantData, ConstantCount); wined3d_mutex_unlock(); return hr; @@ -2411,8 +2416,8 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetIndices(IDirect3DDevice8 *iface, * problem) */ wined3d_mutex_lock(); - IWineD3DDevice_SetBaseVertexIndex(This->WineD3DDevice, baseVertexIndex); - hr = IWineD3DDevice_SetIndexBuffer(This->WineD3DDevice, + wined3d_device_set_base_vertex_index(This->WineD3DDevice, baseVertexIndex); + hr = wined3d_device_set_index_buffer(This->WineD3DDevice, ib ? ib->wineD3DIndexBuffer : NULL, ib ? ib->format : WINED3DFMT_UNKNOWN); wined3d_mutex_unlock(); @@ -2435,8 +2440,8 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetIndices(IDirect3DDevice8 *iface, /* The case from UINT to INT is safe because d3d8 will never set negative values */ wined3d_mutex_lock(); - IWineD3DDevice_GetBaseVertexIndex(This->WineD3DDevice, (INT *) pBaseVertexIndex); - hr = IWineD3DDevice_GetIndexBuffer(This->WineD3DDevice, &retIndexData); + *pBaseVertexIndex = wined3d_device_get_base_vertex_index(This->WineD3DDevice); + hr = wined3d_device_get_index_buffer(This->WineD3DDevice, &retIndexData); if (SUCCEEDED(hr) && retIndexData) { *ppIndexData = wined3d_buffer_get_parent(retIndexData); @@ -2517,7 +2522,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetPixelShader(IDirect3DDevice8 *ifac if (!pShader) { - hr = IWineD3DDevice_SetPixelShader(This->WineD3DDevice, NULL); + hr = wined3d_device_set_pixel_shader(This->WineD3DDevice, NULL); wined3d_mutex_unlock(); return hr; } @@ -2531,7 +2536,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetPixelShader(IDirect3DDevice8 *ifac } TRACE("(%p) : Setting shader %p\n", This, shader); - hr = IWineD3DDevice_SetPixelShader(This->WineD3DDevice, shader->wined3d_shader); + hr = wined3d_device_set_pixel_shader(This->WineD3DDevice, shader->wined3d_shader); wined3d_mutex_unlock(); return hr; @@ -2550,7 +2555,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetPixelShader(IDirect3DDevice8 *ifac } wined3d_mutex_lock(); - object = IWineD3DDevice_GetPixelShader(This->WineD3DDevice); + object = wined3d_device_get_pixel_shader(This->WineD3DDevice); if (object) { IDirect3DPixelShader8Impl *d3d8_shader; @@ -2587,7 +2592,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_DeletePixelShader(IDirect3DDevice8 *i return D3DERR_INVALIDCALL; } - cur = IWineD3DDevice_GetPixelShader(This->WineD3DDevice); + cur = wined3d_device_get_pixel_shader(This->WineD3DDevice); if (cur) { if (cur == shader->wined3d_shader) @@ -2615,7 +2620,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetPixelShaderConstant(IDirect3DDev iface, Register, pConstantData, ConstantCount); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetPixelShaderConstantF(This->WineD3DDevice, Register, pConstantData, ConstantCount); + hr = wined3d_device_set_ps_consts_f(This->WineD3DDevice, Register, pConstantData, ConstantCount); wined3d_mutex_unlock(); return hr; @@ -2631,7 +2636,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetPixelShaderConstant(IDirect3DDevic iface, Register, pConstantData, ConstantCount); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetPixelShaderConstantF(This->WineD3DDevice, Register, pConstantData, ConstantCount); + hr = wined3d_device_get_ps_consts_f(This->WineD3DDevice, Register, pConstantData, ConstantCount); wined3d_mutex_unlock(); return hr; @@ -2719,9 +2724,9 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetStreamSource(IDirect3DDevice8 *ifa iface, StreamNumber, pStreamData, Stride); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetStreamSource(This->WineD3DDevice, StreamNumber, - NULL == pStreamData ? NULL : ((IDirect3DVertexBuffer8Impl *)pStreamData)->wineD3DVertexBuffer, - 0/* Offset in bytes */, Stride); + hr = wined3d_device_set_stream_source(This->WineD3DDevice, StreamNumber, + pStreamData ? ((IDirect3DVertexBuffer8Impl *)pStreamData)->wineD3DVertexBuffer : NULL, + 0/* Offset in bytes */, Stride); wined3d_mutex_unlock(); return hr; @@ -2742,7 +2747,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetStreamSource(IDirect3DDevice8 *ifa } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetStreamSource(This->WineD3DDevice, StreamNumber, + hr = wined3d_device_get_stream_source(This->WineD3DDevice, StreamNumber, &retStream, 0 /* Offset in bytes */, pStride); if (SUCCEEDED(hr) && retStream) { @@ -3194,7 +3199,7 @@ HRESULT device_init(IDirect3DDevice8Impl *device, struct wined3d *wined3d, UINT return hr; } - hr = IWineD3DDevice_SetRenderState(device->WineD3DDevice, WINED3DRS_POINTSIZE_MIN, 0); + hr = wined3d_device_set_render_state(device->WineD3DDevice, WINED3DRS_POINTSIZE_MIN, 0); wined3d_mutex_unlock(); if (FAILED(hr)) { diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index c7ebfc91ee7..443f229305b 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -591,12 +591,14 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH IDirect3DDevice9Impl_Reset(IDirect3DDevi * below fails, the device is considered "lost", and _Reset and _Release are the only allowed calls */ wined3d_mutex_lock(); - IWineD3DDevice_SetIndexBuffer(This->WineD3DDevice, NULL, WINED3DFMT_UNKNOWN); - for(i = 0; i < 16; i++) { - IWineD3DDevice_SetStreamSource(This->WineD3DDevice, i, NULL, 0, 0); + wined3d_device_set_index_buffer(This->WineD3DDevice, NULL, WINED3DFMT_UNKNOWN); + for (i = 0; i < 16; ++i) + { + wined3d_device_set_stream_source(This->WineD3DDevice, i, NULL, 0, 0); } - for(i = 0; i < 16; i++) { - IWineD3DDevice_SetTexture(This->WineD3DDevice, i, NULL); + for (i = 0; i < 16; ++i) + { + wined3d_device_set_texture(This->WineD3DDevice, i, NULL); } IWineD3DDevice_EnumResources(This->WineD3DDevice, reset_enum_callback, &resources_ok); @@ -730,7 +732,7 @@ static void WINAPI IDirect3DDevice9Impl_SetGammaRamp(IDirect3DDevice9Ex *iface, /* Note: D3DGAMMARAMP is compatible with WINED3DGAMMARAMP */ wined3d_mutex_lock(); - IWineD3DDevice_SetGammaRamp(This->WineD3DDevice, iSwapChain, Flags, (CONST WINED3DGAMMARAMP *)pRamp); + wined3d_device_set_gamma_ramp(This->WineD3DDevice, iSwapChain, Flags, (const WINED3DGAMMARAMP *)pRamp); wined3d_mutex_unlock(); } @@ -743,7 +745,7 @@ static void WINAPI IDirect3DDevice9Impl_GetGammaRamp(IDirect3DDevice9Ex *iface, /* Note: D3DGAMMARAMP is compatible with WINED3DGAMMARAMP */ wined3d_mutex_lock(); - IWineD3DDevice_GetGammaRamp(This->WineD3DDevice, iSwapChain, (WINED3DGAMMARAMP *) pRamp); + wined3d_device_get_gamma_ramp(This->WineD3DDevice, iSwapChain, (WINED3DGAMMARAMP *)pRamp); wined3d_mutex_unlock(); } @@ -1155,7 +1157,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetRenderTarget(IDirect3DDevice9Ex *i } wined3d_mutex_lock(); - hr = IWineD3DDevice_SetRenderTarget(This->WineD3DDevice, RenderTargetIndex, + hr = wined3d_device_set_render_target(This->WineD3DDevice, RenderTargetIndex, pSurface ? pSurface->wined3d_surface : NULL, TRUE); wined3d_mutex_unlock(); @@ -1183,7 +1185,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetRenderTarget(IDirect3DDevice9Ex *i wined3d_mutex_lock(); - hr = IWineD3DDevice_GetRenderTarget(This->WineD3DDevice, RenderTargetIndex, &wined3d_surface); + hr = wined3d_device_get_render_target(This->WineD3DDevice, RenderTargetIndex, &wined3d_surface); if (FAILED(hr)) { @@ -1217,7 +1219,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetDepthStencilSurface(IDirect3DDevic pSurface = (IDirect3DSurface9Impl*)pZStencilSurface; wined3d_mutex_lock(); - hr = IWineD3DDevice_SetDepthStencilSurface(This->WineD3DDevice, pSurface ? pSurface->wined3d_surface : NULL); + hr = wined3d_device_set_depth_stencil(This->WineD3DDevice, pSurface ? pSurface->wined3d_surface : NULL); wined3d_mutex_unlock(); return hr; @@ -1237,7 +1239,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetDepthStencilSurface(IDirect3DDevic } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetDepthStencilSurface(This->WineD3DDevice, &wined3d_surface); + hr = wined3d_device_get_depth_stencil(This->WineD3DDevice, &wined3d_surface); if (SUCCEEDED(hr)) { *ppZStencilSurface = wined3d_surface_get_parent(wined3d_surface); @@ -1310,7 +1312,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetTransform(IDirect3DDevice9Ex *ifac /* Note: D3DMATRIX is compatible with WINED3DMATRIX */ wined3d_mutex_lock(); - hr = IWineD3DDevice_SetTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) lpMatrix); + hr = wined3d_device_set_transform(This->WineD3DDevice, State, (const WINED3DMATRIX *)lpMatrix); wined3d_mutex_unlock(); return hr; @@ -1326,7 +1328,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetTransform(IDirect3DDevice9Ex *ifac /* Note: D3DMATRIX is compatible with WINED3DMATRIX */ wined3d_mutex_lock(); - hr = IWineD3DDevice_GetTransform(This->WineD3DDevice, State, (WINED3DMATRIX*) pMatrix); + hr = wined3d_device_get_transform(This->WineD3DDevice, State, (WINED3DMATRIX *)pMatrix); wined3d_mutex_unlock(); return hr; @@ -1358,7 +1360,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetViewport(IDirect3DDevice9Ex *iface /* Note: D3DVIEWPORT9 is compatible with WINED3DVIEWPORT */ wined3d_mutex_lock(); - hr = IWineD3DDevice_SetViewport(This->WineD3DDevice, (const WINED3DVIEWPORT *)pViewport); + hr = wined3d_device_set_viewport(This->WineD3DDevice, (const WINED3DVIEWPORT *)pViewport); wined3d_mutex_unlock(); return hr; @@ -1374,7 +1376,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetViewport(IDirect3DDevice9Ex *iface /* Note: D3DVIEWPORT9 is compatible with WINED3DVIEWPORT */ wined3d_mutex_lock(); - hr = IWineD3DDevice_GetViewport(This->WineD3DDevice, (WINED3DVIEWPORT *)pViewport); + hr = wined3d_device_get_viewport(This->WineD3DDevice, (WINED3DVIEWPORT *)pViewport); wined3d_mutex_unlock(); return hr; @@ -1390,7 +1392,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetMaterial(IDirect3DDevice9Ex *iface /* Note: D3DMATERIAL9 is compatible with WINED3DMATERIAL */ wined3d_mutex_lock(); - hr = IWineD3DDevice_SetMaterial(This->WineD3DDevice, (const WINED3DMATERIAL *)pMaterial); + hr = wined3d_device_set_material(This->WineD3DDevice, (const WINED3DMATERIAL *)pMaterial); wined3d_mutex_unlock(); return hr; @@ -1406,7 +1408,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetMaterial(IDirect3DDevice9Ex *iface /* Note: D3DMATERIAL9 is compatible with WINED3DMATERIAL */ wined3d_mutex_lock(); - hr = IWineD3DDevice_GetMaterial(This->WineD3DDevice, (WINED3DMATERIAL *)pMaterial); + hr = wined3d_device_get_material(This->WineD3DDevice, (WINED3DMATERIAL *)pMaterial); wined3d_mutex_unlock(); return hr; @@ -1422,7 +1424,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetLight(IDirect3DDevice9Ex *iface, D /* Note: D3DLIGHT9 is compatible with WINED3DLIGHT */ wined3d_mutex_lock(); - hr = IWineD3DDevice_SetLight(This->WineD3DDevice, Index, (const WINED3DLIGHT *)pLight); + hr = wined3d_device_set_light(This->WineD3DDevice, Index, (const WINED3DLIGHT *)pLight); wined3d_mutex_unlock(); return hr; @@ -1438,7 +1440,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetLight(IDirect3DDevice9Ex *iface, D /* Note: D3DLIGHT9 is compatible with WINED3DLIGHT */ wined3d_mutex_lock(); - hr = IWineD3DDevice_GetLight(This->WineD3DDevice, Index, (WINED3DLIGHT *)pLight); + hr = wined3d_device_get_light(This->WineD3DDevice, Index, (WINED3DLIGHT *)pLight); wined3d_mutex_unlock(); return hr; @@ -1453,7 +1455,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_LightEnable(IDirect3DDevice9Ex *iface TRACE("iface %p, index %u, enable %#x.\n", iface, Index, Enable); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetLightEnable(This->WineD3DDevice, Index, Enable); + hr = wined3d_device_set_light_enable(This->WineD3DDevice, Index, Enable); wined3d_mutex_unlock(); return hr; @@ -1468,7 +1470,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetLightEnable(IDirect3DDevice9Ex *if TRACE("iface %p, index %u, enable %p.\n", iface, Index, pEnable); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetLightEnable(This->WineD3DDevice, Index, pEnable); + hr = wined3d_device_get_light_enable(This->WineD3DDevice, Index, pEnable); wined3d_mutex_unlock(); return hr; @@ -1483,7 +1485,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetClipPlane(IDirect3DDevice9Ex *ifac TRACE("iface %p, index %u, plane %p.\n", iface, Index, pPlane); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetClipPlane(This->WineD3DDevice, Index, pPlane); + hr = wined3d_device_set_clip_plane(This->WineD3DDevice, Index, pPlane); wined3d_mutex_unlock(); return hr; @@ -1498,7 +1500,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetClipPlane(IDirect3DDevice9Ex *ifac TRACE("iface %p, index %u, plane %p.\n", iface, Index, pPlane); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetClipPlane(This->WineD3DDevice, Index, pPlane); + hr = wined3d_device_get_clip_plane(This->WineD3DDevice, Index, pPlane); wined3d_mutex_unlock(); return hr; @@ -1513,7 +1515,7 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH IDirect3DDevice9Impl_SetRenderState(IDir TRACE("iface %p, state %#x, value %#x.\n", iface, State, Value); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetRenderState(This->WineD3DDevice, State, Value); + hr = wined3d_device_set_render_state(This->WineD3DDevice, State, Value); wined3d_mutex_unlock(); return hr; @@ -1528,7 +1530,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetRenderState(IDirect3DDevice9Ex *if TRACE("iface %p, state %#x, value %p.\n", iface, State, pValue); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetRenderState(This->WineD3DDevice, State, pValue); + hr = wined3d_device_get_render_state(This->WineD3DDevice, State, pValue); wined3d_mutex_unlock(); return hr; @@ -1639,7 +1641,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetClipStatus(IDirect3DDevice9Ex *ifa TRACE("iface %p, clip_status %p.\n", iface, pClipStatus); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetClipStatus(This->WineD3DDevice, (const WINED3DCLIPSTATUS *)pClipStatus); + hr = wined3d_device_set_clip_status(This->WineD3DDevice, (const WINED3DCLIPSTATUS *)pClipStatus); wined3d_mutex_unlock(); return hr; @@ -1654,7 +1656,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetClipStatus(IDirect3DDevice9Ex *ifa TRACE("iface %p, clip_status %p.\n", iface, pClipStatus); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetClipStatus(This->WineD3DDevice, (WINED3DCLIPSTATUS *)pClipStatus); + hr = wined3d_device_get_clip_status(This->WineD3DDevice, (WINED3DCLIPSTATUS *)pClipStatus); wined3d_mutex_unlock(); return hr; @@ -1674,7 +1676,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetTexture(IDirect3DDevice9Ex *iface, } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetTexture(This->WineD3DDevice, Stage, &wined3d_texture); + hr = wined3d_device_get_texture(This->WineD3DDevice, Stage, &wined3d_texture); if (SUCCEEDED(hr) && wined3d_texture) { *ppTexture = wined3d_texture_get_parent(wined3d_texture); @@ -1703,7 +1705,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetTexture(IDirect3DDevice9Ex *iface, TRACE("iface %p, stage %u, texture %p.\n", iface, stage, texture); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetTexture(device->WineD3DDevice, stage, + hr = wined3d_device_set_texture(device->WineD3DDevice, stage, texture ? ((IDirect3DBaseTexture9Impl *)texture)->wined3d_texture : NULL); wined3d_mutex_unlock(); @@ -1762,7 +1764,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetTextureStageState(IDirect3DDevice9 } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetTextureStageState(This->WineD3DDevice, Stage, tss_lookup[Type], pValue); + hr = wined3d_device_get_texture_stage_state(This->WineD3DDevice, Stage, tss_lookup[Type], pValue); wined3d_mutex_unlock(); return hr; @@ -1783,7 +1785,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetTextureStageState(IDirect3DDevice9 } wined3d_mutex_lock(); - hr = IWineD3DDevice_SetTextureStageState(This->WineD3DDevice, Stage, tss_lookup[Type], Value); + hr = wined3d_device_set_texture_stage_state(This->WineD3DDevice, Stage, tss_lookup[Type], Value); wined3d_mutex_unlock(); return hr; @@ -1798,7 +1800,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetSamplerState(IDirect3DDevice9Ex *i TRACE("iface %p, sampler %u, state %#x, value %p.\n", iface, Sampler, Type, pValue); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetSamplerState(This->WineD3DDevice, Sampler, Type, pValue); + hr = wined3d_device_get_sampler_state(This->WineD3DDevice, Sampler, Type, pValue); wined3d_mutex_unlock(); return hr; @@ -1813,7 +1815,7 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH IDirect3DDevice9Impl_SetSamplerState(IDi TRACE("iface %p, sampler %u, state %#x, value %#x.\n", iface, Sampler, Type, Value); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetSamplerState(This->WineD3DDevice, Sampler, Type, Value); + hr = wined3d_device_set_sampler_state(This->WineD3DDevice, Sampler, Type, Value); wined3d_mutex_unlock(); return hr; @@ -1843,7 +1845,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetPaletteEntries(IDirect3DDevice9Ex TRACE("iface %p, palette_idx %u, entries %p.\n", iface, PaletteNumber, pEntries); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetPaletteEntries(This->WineD3DDevice, PaletteNumber, pEntries); + hr = wined3d_device_set_palette_entries(This->WineD3DDevice, PaletteNumber, pEntries); wined3d_mutex_unlock(); return hr; @@ -1858,7 +1860,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetPaletteEntries(IDirect3DDevice9Ex TRACE("iface %p, palette_idx %u, entries %p.\n", iface, PaletteNumber, pEntries); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetPaletteEntries(This->WineD3DDevice, PaletteNumber, pEntries); + hr = wined3d_device_get_palette_entries(This->WineD3DDevice, PaletteNumber, pEntries); wined3d_mutex_unlock(); return hr; @@ -1873,7 +1875,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetCurrentTexturePalette(IDirect3DDev TRACE("iface %p, palette_idx %u.\n", iface, PaletteNumber); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetCurrentTexturePalette(This->WineD3DDevice, PaletteNumber); + hr = wined3d_device_set_current_texture_palette(This->WineD3DDevice, PaletteNumber); wined3d_mutex_unlock(); return hr; @@ -1888,7 +1890,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetCurrentTexturePalette(IDirect3DDev TRACE("iface %p, palette_idx %p.\n", iface, PaletteNumber); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetCurrentTexturePalette(This->WineD3DDevice, PaletteNumber); + hr = wined3d_device_get_current_texture_palette(This->WineD3DDevice, PaletteNumber); wined3d_mutex_unlock(); return hr; @@ -1903,7 +1905,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetScissorRect(IDirect3DDevice9Ex *if TRACE("iface %p, rect %p.\n", iface, pRect); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetScissorRect(This->WineD3DDevice, pRect); + hr = wined3d_device_set_scissor_rect(This->WineD3DDevice, pRect); wined3d_mutex_unlock(); return hr; @@ -1917,7 +1919,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetScissorRect(IDirect3DDevice9Ex *if TRACE("iface %p, rect %p.\n", iface, pRect); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetScissorRect(This->WineD3DDevice, pRect); + hr = wined3d_device_get_scissor_rect(This->WineD3DDevice, pRect); wined3d_mutex_unlock(); return hr; @@ -1932,7 +1934,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetSoftwareVertexProcessing(IDirect3D TRACE("iface %p, software %#x.\n", iface, bSoftware); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetSoftwareVertexProcessing(This->WineD3DDevice, bSoftware); + hr = wined3d_device_set_software_vertex_processing(This->WineD3DDevice, bSoftware); wined3d_mutex_unlock(); return hr; @@ -1946,7 +1948,7 @@ static BOOL WINAPI IDirect3DDevice9Impl_GetSoftwareVertexProcessing(IDirect3DDev TRACE("iface %p.\n", iface); wined3d_mutex_lock(); - ret = IWineD3DDevice_GetSoftwareVertexProcessing(This->WineD3DDevice); + ret = wined3d_device_get_software_vertex_processing(This->WineD3DDevice); wined3d_mutex_unlock(); return ret; @@ -1960,7 +1962,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetNPatchMode(IDirect3DDevice9Ex *ifa TRACE("iface %p, segment_count %.8e.\n", iface, nSegments); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetNPatchMode(This->WineD3DDevice, nSegments); + hr = wined3d_device_set_npatch_mode(This->WineD3DDevice, nSegments); wined3d_mutex_unlock(); return hr; @@ -1974,7 +1976,7 @@ static float WINAPI IDirect3DDevice9Impl_GetNPatchMode(IDirect3DDevice9Ex *iface TRACE("iface %p.\n", iface); wined3d_mutex_lock(); - ret = IWineD3DDevice_GetNPatchMode(This->WineD3DDevice); + ret = wined3d_device_get_npatch_mode(This->WineD3DDevice); wined3d_mutex_unlock(); return ret; @@ -2011,7 +2013,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_DrawIndexedPrimitive(IDirect3DDevice9 NumVertices, startIndex, primCount); wined3d_mutex_lock(); - IWineD3DDevice_SetBaseVertexIndex(This->WineD3DDevice, BaseVertexIndex); + wined3d_device_set_base_vertex_index(This->WineD3DDevice, BaseVertexIndex); IWineD3DDevice_SetPrimitiveType(This->WineD3DDevice, PrimitiveType); hr = IWineD3DDevice_DrawIndexedPrimitive(This->WineD3DDevice, startIndex, vertex_count_from_primitive_count(PrimitiveType, primCount)); @@ -2127,7 +2129,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexDeclaration(IDirect3DDevice9 TRACE("iface %p, declaration %p.\n", iface, declaration); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetVertexDeclaration(This->WineD3DDevice, + hr = wined3d_device_set_vertex_declaration(This->WineD3DDevice, declaration ? ((IDirect3DVertexDeclaration9Impl *)declaration)->wineD3DVertexDeclaration : NULL); wined3d_mutex_unlock(); @@ -2146,7 +2148,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexDeclaration(IDirect3DDevice9 if (!declaration) return D3DERR_INVALIDCALL; wined3d_mutex_lock(); - hr = IWineD3DDevice_GetVertexDeclaration(This->WineD3DDevice, &wined3d_declaration); + hr = wined3d_device_get_vertex_declaration(This->WineD3DDevice, &wined3d_declaration); if (SUCCEEDED(hr) && wined3d_declaration) { *declaration = wined3d_vertex_declaration_get_parent(wined3d_declaration); @@ -2321,7 +2323,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShader(IDirect3DDevice9Ex *i TRACE("iface %p, shader %p.\n", iface, shader); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetVertexShader(This->WineD3DDevice, + hr = wined3d_device_set_vertex_shader(This->WineD3DDevice, shader ? ((IDirect3DVertexShader9Impl *)shader)->wined3d_shader : NULL); wined3d_mutex_unlock(); @@ -2337,7 +2339,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShader(IDirect3DDevice9Ex *i TRACE("iface %p, shader %p.\n", iface, shader); wined3d_mutex_lock(); - wined3d_shader = IWineD3DDevice_GetVertexShader(This->WineD3DDevice); + wined3d_shader = wined3d_device_get_vertex_shader(This->WineD3DDevice); if (wined3d_shader) { *shader = wined3d_shader_get_parent(wined3d_shader); @@ -2371,7 +2373,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantF(IDirect3DDev } wined3d_mutex_lock(); - hr = IWineD3DDevice_SetVertexShaderConstantF(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_set_vs_consts_f(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2393,7 +2395,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantF(IDirect3DDev } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetVertexShaderConstantF(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_get_vs_consts_f(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2408,7 +2410,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantI(IDirect3DDev TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetVertexShaderConstantI(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_set_vs_consts_i(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2423,7 +2425,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantI(IDirect3DDev TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetVertexShaderConstantI(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_get_vs_consts_i(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2438,7 +2440,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantB(IDirect3DDev TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetVertexShaderConstantB(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_set_vs_consts_b(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2453,7 +2455,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantB(IDirect3DDev TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetVertexShaderConstantB(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_get_vs_consts_b(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2469,7 +2471,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetStreamSource(IDirect3DDevice9Ex *i iface, StreamNumber, pStreamData, OffsetInBytes, Stride); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetStreamSource(This->WineD3DDevice, StreamNumber, + hr = wined3d_device_set_stream_source(This->WineD3DDevice, StreamNumber, pStreamData ? ((IDirect3DVertexBuffer9Impl *)pStreamData)->wineD3DVertexBuffer : NULL, OffsetInBytes, Stride); wined3d_mutex_unlock(); @@ -2492,7 +2494,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetStreamSource(IDirect3DDevice9Ex *i } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetStreamSource(This->WineD3DDevice, StreamNumber, &retStream, OffsetInBytes, pStride); + hr = wined3d_device_get_stream_source(This->WineD3DDevice, StreamNumber, &retStream, OffsetInBytes, pStride); if (SUCCEEDED(hr) && retStream) { *pStream = wined3d_buffer_get_parent(retStream); @@ -2521,7 +2523,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetStreamSourceFreq(IDirect3DDevice9E TRACE("iface %p, stream_idx %u, freq %u.\n", iface, StreamNumber, Divider); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetStreamSourceFreq(This->WineD3DDevice, StreamNumber, Divider); + hr = wined3d_device_set_stream_source_freq(This->WineD3DDevice, StreamNumber, Divider); wined3d_mutex_unlock(); return hr; @@ -2536,7 +2538,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetStreamSourceFreq(IDirect3DDevice9E TRACE("iface %p, stream_idx %u, freq %p.\n", iface, StreamNumber, Divider); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetStreamSourceFreq(This->WineD3DDevice, StreamNumber, Divider); + hr = wined3d_device_get_stream_source_freq(This->WineD3DDevice, StreamNumber, Divider); wined3d_mutex_unlock(); return hr; @@ -2552,7 +2554,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetIndices(IDirect3DDevice9Ex *iface, TRACE("iface %p, buffer %p.\n", iface, pIndexData); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetIndexBuffer(This->WineD3DDevice, + hr = wined3d_device_set_index_buffer(This->WineD3DDevice, ib ? ib->wineD3DIndexBuffer : NULL, ib ? ib->format : WINED3DFMT_UNKNOWN); wined3d_mutex_unlock(); @@ -2574,7 +2576,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetIndices(IDirect3DDevice9Ex *iface, } wined3d_mutex_lock(); - hr = IWineD3DDevice_GetIndexBuffer(This->WineD3DDevice, &retIndexData); + hr = wined3d_device_get_index_buffer(This->WineD3DDevice, &retIndexData); if (SUCCEEDED(hr) && retIndexData) { *ppIndexData = wined3d_buffer_get_parent(retIndexData); @@ -2630,7 +2632,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShader(IDirect3DDevice9Ex *if TRACE("iface %p, shader %p.\n", iface, shader); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetPixelShader(This->WineD3DDevice, + hr = wined3d_device_set_pixel_shader(This->WineD3DDevice, shader ? ((IDirect3DPixelShader9Impl *)shader)->wined3d_shader : NULL); wined3d_mutex_unlock(); @@ -2648,7 +2650,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShader(IDirect3DDevice9Ex *if if (!shader) return D3DERR_INVALIDCALL; wined3d_mutex_lock(); - wined3d_shader = IWineD3DDevice_GetPixelShader(This->WineD3DDevice); + wined3d_shader = wined3d_device_get_pixel_shader(This->WineD3DDevice); if (wined3d_shader) { *shader = wined3d_shader_get_parent(wined3d_shader); @@ -2675,7 +2677,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantF(IDirect3DDevi TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetPixelShaderConstantF(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_set_ps_consts_f(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2690,7 +2692,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantF(IDirect3DDevi TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetPixelShaderConstantF(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_get_ps_consts_f(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2705,7 +2707,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantI(IDirect3DDevi TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetPixelShaderConstantI(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_set_ps_consts_i(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2720,7 +2722,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantI(IDirect3DDevi TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetPixelShaderConstantI(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_get_ps_consts_i(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2735,7 +2737,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantB(IDirect3DDevi TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_SetPixelShaderConstantB(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_set_ps_consts_b(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; @@ -2750,7 +2752,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantB(IDirect3DDevi TRACE("iface %p, reg_idx %u, data %p, count %u.\n", iface, reg_idx, data, count); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetPixelShaderConstantB(This->WineD3DDevice, reg_idx, data, count); + hr = wined3d_device_get_ps_consts_b(This->WineD3DDevice, reg_idx, data, count); wined3d_mutex_unlock(); return hr; diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c index bce0dde1342..79768f87ed9 100644 --- a/dlls/ddraw/device.c +++ b/dlls/ddraw/device.c @@ -297,7 +297,7 @@ IDirect3DDeviceImpl_7_Release(IDirect3DDevice7 *iface) /* Set the device up to render to the front buffer since the back * buffer will vanish soon. */ - IWineD3DDevice_SetRenderTarget(This->wineD3DDevice, 0, + wined3d_device_set_render_target(This->wineD3DDevice, 0, This->ddraw->d3d_target->wined3d_surface, TRUE); /* Release the WineD3DDevice. This won't destroy it */ @@ -1373,24 +1373,14 @@ IDirect3DDeviceImpl_1_SetMatrix(IDirect3DDevice *iface, *m = *D3DMatrix; - if(This->world == D3DMatHandle) - { - IWineD3DDevice_SetTransform(This->wineD3DDevice, - WINED3DTS_WORLDMATRIX(0), - (WINED3DMATRIX *) D3DMatrix); - } - if(This->view == D3DMatHandle) - { - IWineD3DDevice_SetTransform(This->wineD3DDevice, - WINED3DTS_VIEW, - (WINED3DMATRIX *) D3DMatrix); - } - if(This->proj == D3DMatHandle) - { - IWineD3DDevice_SetTransform(This->wineD3DDevice, - WINED3DTS_PROJECTION, - (WINED3DMATRIX *) D3DMatrix); - } + if (D3DMatHandle == This->world) + wined3d_device_set_transform(This->wineD3DDevice, WINED3DTS_WORLDMATRIX(0), (WINED3DMATRIX *)D3DMatrix); + + if (D3DMatHandle == This->view) + wined3d_device_set_transform(This->wineD3DDevice, WINED3DTS_VIEW, (WINED3DMATRIX *)D3DMatrix); + + if (D3DMatHandle == This->proj) + wined3d_device_set_transform(This->wineD3DDevice, WINED3DTS_PROJECTION, (WINED3DMATRIX *)D3DMatrix); LeaveCriticalSection(&ddraw_cs); return D3D_OK; @@ -1861,7 +1851,7 @@ IDirect3DDeviceImpl_7_SetRenderTarget(IDirect3DDevice7 *iface, return D3D_OK; } - hr = IWineD3DDevice_SetRenderTarget(This->wineD3DDevice, 0, + hr = wined3d_device_set_render_target(This->wineD3DDevice, 0, Target ? Target->wined3d_surface : NULL, FALSE); if(hr != D3D_OK) { @@ -2271,9 +2261,7 @@ IDirect3DDeviceImpl_7_GetRenderState(IDirect3DDevice7 *iface, { WINED3DTEXTUREFILTERTYPE tex_mag; - hr = IWineD3DDevice_GetSamplerState(This->wineD3DDevice, - 0, WINED3DSAMP_MAGFILTER, - &tex_mag); + hr = wined3d_device_get_sampler_state(This->wineD3DDevice, 0, WINED3DSAMP_MAGFILTER, &tex_mag); switch (tex_mag) { @@ -2295,14 +2283,14 @@ IDirect3DDeviceImpl_7_GetRenderState(IDirect3DDevice7 *iface, WINED3DTEXTUREFILTERTYPE tex_min; WINED3DTEXTUREFILTERTYPE tex_mip; - hr = IWineD3DDevice_GetSamplerState(This->wineD3DDevice, + hr = wined3d_device_get_sampler_state(This->wineD3DDevice, 0, WINED3DSAMP_MINFILTER, &tex_min); if (FAILED(hr)) { LeaveCriticalSection(&ddraw_cs); return hr; } - hr = IWineD3DDevice_GetSamplerState(This->wineD3DDevice, + hr = wined3d_device_get_sampler_state(This->wineD3DDevice, 0, WINED3DSAMP_MIPFILTER, &tex_mip); switch (tex_min) @@ -2353,14 +2341,12 @@ IDirect3DDeviceImpl_7_GetRenderState(IDirect3DDevice7 *iface, case D3DRENDERSTATE_TEXTUREADDRESS: case D3DRENDERSTATE_TEXTUREADDRESSU: - hr = IWineD3DDevice_GetSamplerState(This->wineD3DDevice, - 0, WINED3DSAMP_ADDRESSU, - Value); + hr = wined3d_device_get_sampler_state(This->wineD3DDevice, + 0, WINED3DSAMP_ADDRESSU, Value); break; case D3DRENDERSTATE_TEXTUREADDRESSV: - hr = IWineD3DDevice_GetSamplerState(This->wineD3DDevice, - 0, WINED3DSAMP_ADDRESSV, - Value); + hr = wined3d_device_get_sampler_state(This->wineD3DDevice, + 0, WINED3DSAMP_ADDRESSV, Value); break; case D3DRENDERSTATE_BORDERCOLOR: @@ -2382,10 +2368,9 @@ IDirect3DDeviceImpl_7_GetRenderState(IDirect3DDevice7 *iface, float f; } wined3d_value; - hr = IWineD3DDevice_GetRenderState(This->wineD3DDevice, - WINED3DRS_DEPTHBIAS, - &wined3d_value.d); - if (SUCCEEDED(hr)) *Value = wined3d_value.f / zbias_factor; + hr = wined3d_device_get_render_state(This->wineD3DDevice, WINED3DRS_DEPTHBIAS, &wined3d_value.d); + if (SUCCEEDED(hr)) + *Value = wined3d_value.f / zbias_factor; break; } @@ -2398,9 +2383,7 @@ IDirect3DDeviceImpl_7_GetRenderState(IDirect3DDevice7 *iface, hr = E_NOTIMPL; break; } - hr = IWineD3DDevice_GetRenderState(This->wineD3DDevice, - RenderStateType, - Value); + hr = wined3d_device_get_render_state(This->wineD3DDevice, RenderStateType, Value); } LeaveCriticalSection(&ddraw_cs); return hr; @@ -2450,7 +2433,7 @@ IDirect3DDeviceImpl_3_GetRenderState(IDirect3DDevice3 *iface, EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_GetTexture(This->wineD3DDevice, 0, &tex); + hr = wined3d_device_get_texture(This->wineD3DDevice, 0, &tex); if (SUCCEEDED(hr) && tex) { /* The parent of the texture is the IDirectDrawSurface7 @@ -2476,12 +2459,12 @@ IDirect3DDeviceImpl_3_GetRenderState(IDirect3DDevice3 *iface, This->legacyTextureBlending = TRUE; - IWineD3DDevice_GetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLOROP, &colorop); - IWineD3DDevice_GetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG1, &colorarg1); - IWineD3DDevice_GetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG2, &colorarg2); - IWineD3DDevice_GetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, &alphaop); - IWineD3DDevice_GetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG1, &alphaarg1); - IWineD3DDevice_GetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG2, &alphaarg2); + wined3d_device_get_texture_stage_state(This->wineD3DDevice, 0, WINED3DTSS_COLOROP, &colorop); + wined3d_device_get_texture_stage_state(This->wineD3DDevice, 0, WINED3DTSS_COLORARG1, &colorarg1); + wined3d_device_get_texture_stage_state(This->wineD3DDevice, 0, WINED3DTSS_COLORARG2, &colorarg2); + wined3d_device_get_texture_stage_state(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, &alphaop); + wined3d_device_get_texture_stage_state(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG1, &alphaarg1); + wined3d_device_get_texture_stage_state(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG2, &alphaarg2); if (colorop == WINED3DTOP_SELECTARG1 && colorarg1 == WINED3DTA_TEXTURE && alphaop == WINED3DTOP_SELECTARG1 && alphaarg1 == WINED3DTA_TEXTURE) @@ -2505,7 +2488,7 @@ IDirect3DDeviceImpl_3_GetRenderState(IDirect3DDevice3 *iface, BOOL tex_alpha = FALSE; DDPIXELFORMAT ddfmt; - hr = IWineD3DDevice_GetTexture(This->wineD3DDevice, 0, &tex); + hr = wined3d_device_get_texture(This->wineD3DDevice, 0, &tex); if(hr == WINED3D_OK && tex) { @@ -2621,9 +2604,7 @@ IDirect3DDeviceImpl_7_SetRenderState(IDirect3DDevice7 *iface, break; } - hr = IWineD3DDevice_SetSamplerState(This->wineD3DDevice, - 0, WINED3DSAMP_MAGFILTER, - tex_mag); + hr = wined3d_device_set_sampler_state(This->wineD3DDevice, 0, WINED3DSAMP_MAGFILTER, tex_mag); break; } @@ -2666,28 +2647,24 @@ IDirect3DDeviceImpl_7_SetRenderState(IDirect3DDevice7 *iface, break; } - IWineD3DDevice_SetSamplerState(This->wineD3DDevice, + wined3d_device_set_sampler_state(This->wineD3DDevice, 0, WINED3DSAMP_MIPFILTER, tex_mip); - hr = IWineD3DDevice_SetSamplerState(This->wineD3DDevice, - 0, WINED3DSAMP_MINFILTER, - tex_min); + hr = wined3d_device_set_sampler_state(This->wineD3DDevice, + 0, WINED3DSAMP_MINFILTER, tex_min); break; } case D3DRENDERSTATE_TEXTUREADDRESS: - IWineD3DDevice_SetSamplerState(This->wineD3DDevice, - 0, WINED3DSAMP_ADDRESSV, - Value); + wined3d_device_set_sampler_state(This->wineD3DDevice, + 0, WINED3DSAMP_ADDRESSV, Value); /* Drop through */ case D3DRENDERSTATE_TEXTUREADDRESSU: - hr = IWineD3DDevice_SetSamplerState(This->wineD3DDevice, - 0, WINED3DSAMP_ADDRESSU, - Value); + hr = wined3d_device_set_sampler_state(This->wineD3DDevice, + 0, WINED3DSAMP_ADDRESSU, Value); break; case D3DRENDERSTATE_TEXTUREADDRESSV: - hr = IWineD3DDevice_SetSamplerState(This->wineD3DDevice, - 0, WINED3DSAMP_ADDRESSV, - Value); + hr = wined3d_device_set_sampler_state(This->wineD3DDevice, + 0, WINED3DSAMP_ADDRESSV, Value); break; case D3DRENDERSTATE_BORDERCOLOR: @@ -2711,9 +2688,7 @@ IDirect3DDeviceImpl_7_SetRenderState(IDirect3DDevice7 *iface, float f; } wined3d_value; wined3d_value.f = Value * zbias_factor; - hr = IWineD3DDevice_SetRenderState(This->wineD3DDevice, - WINED3DRS_DEPTHBIAS, - wined3d_value.d); + hr = wined3d_device_set_render_state(This->wineD3DDevice, WINED3DRS_DEPTHBIAS, wined3d_value.d); break; } @@ -2727,9 +2702,7 @@ IDirect3DDeviceImpl_7_SetRenderState(IDirect3DDevice7 *iface, break; } - hr = IWineD3DDevice_SetRenderState(This->wineD3DDevice, - RenderStateType, - Value); + hr = wined3d_device_set_render_state(This->wineD3DDevice, RenderStateType, Value); break; } LeaveCriticalSection(&ddraw_cs); @@ -2798,9 +2771,7 @@ IDirect3DDeviceImpl_3_SetRenderState(IDirect3DDevice3 *iface, if(Value == 0) { - hr = IWineD3DDevice_SetTexture(This->wineD3DDevice, - 0, - NULL); + hr = wined3d_device_set_texture(This->wineD3DDevice, 0, NULL); break; } @@ -2828,7 +2799,7 @@ IDirect3DDeviceImpl_3_SetRenderState(IDirect3DDevice3 *iface, BOOL tex_alpha = FALSE; DDPIXELFORMAT ddfmt; - hr = IWineD3DDevice_GetTexture(This->wineD3DDevice, 0, &tex); + hr = wined3d_device_get_texture(This->wineD3DDevice, 0, &tex); if(hr == WINED3D_OK && tex) { @@ -2848,49 +2819,75 @@ IDirect3DDeviceImpl_3_SetRenderState(IDirect3DDevice3 *iface, } if (tex_alpha) - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG1); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG1); else - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG2); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG1, WINED3DTA_TEXTURE); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG2, WINED3DTA_CURRENT); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG2, WINED3DTA_CURRENT); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLOROP, WINED3DTOP_MODULATE); - + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG2); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAARG1, WINED3DTA_TEXTURE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAARG2, WINED3DTA_CURRENT); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLORARG2, WINED3DTA_CURRENT); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLOROP, WINED3DTOP_MODULATE); break; } case D3DTBLEND_ADD: - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLOROP, WINED3DTOP_ADD); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG2, WINED3DTA_CURRENT); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG2); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG2, WINED3DTA_CURRENT); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLOROP, WINED3DTOP_ADD); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLORARG2, WINED3DTA_CURRENT); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG2); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAARG2, WINED3DTA_CURRENT); break; case D3DTBLEND_MODULATEALPHA: - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG1, WINED3DTA_TEXTURE); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG2, WINED3DTA_CURRENT); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG2, WINED3DTA_CURRENT); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLOROP, WINED3DTOP_MODULATE); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_MODULATE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAARG1, WINED3DTA_TEXTURE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLORARG2, WINED3DTA_CURRENT); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAARG2, WINED3DTA_CURRENT); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLOROP, WINED3DTOP_MODULATE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAOP, WINED3DTOP_MODULATE); break; case D3DTBLEND_COPY: case D3DTBLEND_DECAL: - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG1, WINED3DTA_TEXTURE); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLOROP, WINED3DTOP_SELECTARG1); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG1); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAARG1, WINED3DTA_TEXTURE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLOROP, WINED3DTOP_SELECTARG1); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG1); break; case D3DTBLEND_DECALALPHA: - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLOROP, WINED3DTOP_BLENDTEXTUREALPHA); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_COLORARG2, WINED3DTA_CURRENT); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG2); - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAARG2, WINED3DTA_CURRENT); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLOROP, WINED3DTOP_BLENDTEXTUREALPHA); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLORARG1, WINED3DTA_TEXTURE); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_COLORARG2, WINED3DTA_CURRENT); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG2); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, + 0, WINED3DTSS_ALPHAARG2, WINED3DTA_CURRENT); break; default: @@ -3171,14 +3168,12 @@ IDirect3DDeviceImpl_7_SetTransform(IDirect3DDevice7 *iface, default: type = TransformStateType; } - if(!Matrix) - return DDERR_INVALIDPARAMS; + if (!Matrix) + return DDERR_INVALIDPARAMS; /* Note: D3DMATRIX is compatible with WINED3DMATRIX */ EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetTransform(This->wineD3DDevice, - type, - (WINED3DMATRIX*) Matrix); + hr = wined3d_device_set_transform(This->wineD3DDevice, type, (WINED3DMATRIX *)Matrix); LeaveCriticalSection(&ddraw_cs); return hr; } @@ -3268,7 +3263,7 @@ IDirect3DDeviceImpl_7_GetTransform(IDirect3DDevice7 *iface, /* Note: D3DMATRIX is compatible with WINED3DMATRIX */ EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_GetTransform(This->wineD3DDevice, type, (WINED3DMATRIX*) Matrix); + hr = wined3d_device_get_transform(This->wineD3DDevice, type, (WINED3DMATRIX *)Matrix); LeaveCriticalSection(&ddraw_cs); return hr; } @@ -3450,7 +3445,7 @@ IDirect3DDeviceImpl_7_DrawPrimitive(IDirect3DDevice7 *iface, /* Set the FVF */ EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetVertexDeclaration(This->wineD3DDevice, ddraw_find_decl(This->ddraw, VertexType)); + hr = wined3d_device_set_vertex_declaration(This->wineD3DDevice, ddraw_find_decl(This->ddraw, VertexType)); if(hr != D3D_OK) { LeaveCriticalSection(&ddraw_cs); @@ -3569,7 +3564,7 @@ IDirect3DDeviceImpl_7_DrawIndexedPrimitive(IDirect3DDevice7 *iface, /* Set the D3DDevice's FVF */ EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetVertexDeclaration(This->wineD3DDevice, ddraw_find_decl(This->ddraw, VertexType)); + hr = wined3d_device_set_vertex_declaration(This->wineD3DDevice, ddraw_find_decl(This->ddraw, VertexType)); if(FAILED(hr)) { ERR(" (%p) Setting the FVF failed, hr = %x!\n", This, hr); @@ -4065,9 +4060,8 @@ IDirect3DDeviceImpl_7_DrawPrimitiveVB(IDirect3DDevice7 *iface, stride = get_flexible_vertex_size(vb->fvf); EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetVertexDeclaration(This->wineD3DDevice, - vb->wineD3DVertexDeclaration); - if(FAILED(hr)) + hr = wined3d_device_set_vertex_declaration(This->wineD3DDevice, vb->wineD3DVertexDeclaration); + if (FAILED(hr)) { ERR(" (%p) Setting the FVF failed, hr = %x!\n", This, hr); LeaveCriticalSection(&ddraw_cs); @@ -4075,11 +4069,7 @@ IDirect3DDeviceImpl_7_DrawPrimitiveVB(IDirect3DDevice7 *iface, } /* Set the vertex stream source */ - hr = IWineD3DDevice_SetStreamSource(This->wineD3DDevice, - 0 /* StreamNumber */, - vb->wineD3DVertexBuffer, - 0 /* StartVertex - we pass this to DrawPrimitive */, - stride); + hr = wined3d_device_set_stream_source(This->wineD3DDevice, 0, vb->wineD3DVertexBuffer, 0, stride); if(hr != D3D_OK) { ERR("(%p) IDirect3DDevice::SetStreamSource failed with hr = %08x\n", This, hr); @@ -4184,9 +4174,8 @@ IDirect3DDeviceImpl_7_DrawIndexedPrimitiveVB(IDirect3DDevice7 *iface, EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetVertexDeclaration(This->wineD3DDevice, - vb->wineD3DVertexDeclaration); - if(FAILED(hr)) + hr = wined3d_device_set_vertex_declaration(This->wineD3DDevice, vb->wineD3DVertexDeclaration); + if (FAILED(hr)) { ERR(" (%p) Setting the FVF failed, hr = %x!\n", This, hr); LeaveCriticalSection(&ddraw_cs); @@ -4233,17 +4222,12 @@ IDirect3DDeviceImpl_7_DrawIndexedPrimitiveVB(IDirect3DDevice7 *iface, wined3d_buffer_unmap(This->indexbuffer); /* Set the index stream */ - IWineD3DDevice_SetBaseVertexIndex(This->wineD3DDevice, StartVertex); - hr = IWineD3DDevice_SetIndexBuffer(This->wineD3DDevice, This->indexbuffer, - WINED3DFMT_R16_UINT); + wined3d_device_set_base_vertex_index(This->wineD3DDevice, StartVertex); + hr = wined3d_device_set_index_buffer(This->wineD3DDevice, This->indexbuffer, WINED3DFMT_R16_UINT); /* Set the vertex stream source */ - hr = IWineD3DDevice_SetStreamSource(This->wineD3DDevice, - 0 /* StreamNumber */, - vb->wineD3DVertexBuffer, - 0 /* offset, we pass this to DrawIndexedPrimitive */, - stride); - if(hr != D3D_OK) + hr = wined3d_device_set_stream_source(This->wineD3DDevice, 0, vb->wineD3DVertexBuffer, 0, stride); + if (FAILED(hr)) { ERR("(%p) IDirect3DDevice::SetStreamSource failed with hr = %08x\n", This, hr); LeaveCriticalSection(&ddraw_cs); @@ -4462,7 +4446,7 @@ IDirect3DDeviceImpl_7_GetTexture(IDirect3DDevice7 *iface, } EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_GetTexture(This->wineD3DDevice, Stage, &wined3d_texture); + hr = wined3d_device_get_texture(This->wineD3DDevice, Stage, &wined3d_texture); if (FAILED(hr) || !wined3d_texture) { *Texture = NULL; @@ -4545,7 +4529,7 @@ IDirect3DDeviceImpl_7_SetTexture(IDirect3DDevice7 *iface, /* Texture may be NULL here */ EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetTexture(This->wineD3DDevice, + hr = wined3d_device_set_texture(This->wineD3DDevice, Stage, surf ? surf->wined3d_texture : NULL); LeaveCriticalSection(&ddraw_cs); return hr; @@ -4602,9 +4586,8 @@ IDirect3DDeviceImpl_3_SetTexture(IDirect3DDevice3 *iface, DDPIXELFORMAT ddfmt; HRESULT result; - result = IWineD3DDevice_GetTexture(This->wineD3DDevice, 0, &tex); - - if(result == WINED3D_OK && tex) + result = wined3d_device_get_texture(This->wineD3DDevice, 0, &tex); + if (result == WINED3D_OK && tex) { struct wined3d_resource *sub_resource; @@ -4623,9 +4606,9 @@ IDirect3DDeviceImpl_3_SetTexture(IDirect3DDevice3 *iface, /* Arg 1/2 are already set to WINED3DTA_TEXTURE/WINED3DTA_CURRENT in case of D3DTBLEND_MODULATE */ if (tex_alpha) - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG1); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG1); else - IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG2); + wined3d_device_set_texture_stage_state(This->wineD3DDevice, 0, WINED3DTSS_ALPHAOP, WINED3DTOP_SELECTARG2); } LeaveCriticalSection(&ddraw_cs); @@ -4713,7 +4696,7 @@ IDirect3DDeviceImpl_7_GetTextureStageState(IDirect3DDevice7 *iface, if (l->sampler_state) { - hr = IWineD3DDevice_GetSamplerState(This->wineD3DDevice, Stage, l->state, State); + hr = wined3d_device_get_sampler_state(This->wineD3DDevice, Stage, l->state, State); switch(TexStageStateType) { @@ -4757,7 +4740,7 @@ IDirect3DDeviceImpl_7_GetTextureStageState(IDirect3DDevice7 *iface, } else { - hr = IWineD3DDevice_GetTextureStageState(This->wineD3DDevice, Stage, l->state, State); + hr = wined3d_device_get_texture_stage_state(This->wineD3DDevice, Stage, l->state, State); } LeaveCriticalSection(&ddraw_cs); @@ -4880,18 +4863,18 @@ IDirect3DDeviceImpl_7_SetTextureStageState(IDirect3DDevice7 *iface, } case D3DTSS_ADDRESS: - IWineD3DDevice_SetSamplerState(This->wineD3DDevice, Stage, WINED3DSAMP_ADDRESSV, State); + wined3d_device_set_sampler_state(This->wineD3DDevice, Stage, WINED3DSAMP_ADDRESSV, State); break; default: break; } - hr = IWineD3DDevice_SetSamplerState(This->wineD3DDevice, Stage, l->state, State); + hr = wined3d_device_set_sampler_state(This->wineD3DDevice, Stage, l->state, State); } else { - hr = IWineD3DDevice_SetTextureStageState(This->wineD3DDevice, Stage, l->state, State); + hr = wined3d_device_set_texture_stage_state(This->wineD3DDevice, Stage, l->state, State); } LeaveCriticalSection(&ddraw_cs); @@ -5098,8 +5081,7 @@ IDirect3DDeviceImpl_7_SetViewport(IDirect3DDevice7 *iface, /* Note: D3DVIEWPORT7 is compatible with WINED3DVIEWPORT */ EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetViewport(This->wineD3DDevice, - (WINED3DVIEWPORT*) Data); + hr = wined3d_device_set_viewport(This->wineD3DDevice, (WINED3DVIEWPORT *)Data); LeaveCriticalSection(&ddraw_cs); return hr; } @@ -5155,8 +5137,7 @@ IDirect3DDeviceImpl_7_GetViewport(IDirect3DDevice7 *iface, /* Note: D3DVIEWPORT7 is compatible with WINED3DVIEWPORT */ EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_GetViewport(This->wineD3DDevice, - (WINED3DVIEWPORT*) Data); + hr = wined3d_device_get_viewport(This->wineD3DDevice, (WINED3DVIEWPORT *)Data); LeaveCriticalSection(&ddraw_cs); return hr_ddraw_from_wined3d(hr); @@ -5211,8 +5192,7 @@ IDirect3DDeviceImpl_7_SetMaterial(IDirect3DDevice7 *iface, if (!Mat) return DDERR_INVALIDPARAMS; /* Note: D3DMATERIAL7 is compatible with WINED3DMATERIAL */ EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetMaterial(This->wineD3DDevice, - (WINED3DMATERIAL*) Mat); + hr = wined3d_device_set_material(This->wineD3DDevice, (WINED3DMATERIAL *)Mat); LeaveCriticalSection(&ddraw_cs); return hr_ddraw_from_wined3d(hr); } @@ -5265,8 +5245,7 @@ IDirect3DDeviceImpl_7_GetMaterial(IDirect3DDevice7 *iface, EnterCriticalSection(&ddraw_cs); /* Note: D3DMATERIAL7 is compatible with WINED3DMATERIAL */ - hr = IWineD3DDevice_GetMaterial(This->wineD3DDevice, - (WINED3DMATERIAL*) Mat); + hr = wined3d_device_get_material(This->wineD3DDevice, (WINED3DMATERIAL *)Mat); LeaveCriticalSection(&ddraw_cs); return hr_ddraw_from_wined3d(hr); } @@ -5320,9 +5299,7 @@ IDirect3DDeviceImpl_7_SetLight(IDirect3DDevice7 *iface, EnterCriticalSection(&ddraw_cs); /* Note: D3DLIGHT7 is compatible with WINED3DLIGHT */ - hr = IWineD3DDevice_SetLight(This->wineD3DDevice, - LightIndex, - (WINED3DLIGHT*) Light); + hr = wined3d_device_set_light(This->wineD3DDevice, LightIndex, (WINED3DLIGHT *)Light); LeaveCriticalSection(&ddraw_cs); return hr_ddraw_from_wined3d(hr); } @@ -5376,9 +5353,7 @@ IDirect3DDeviceImpl_7_GetLight(IDirect3DDevice7 *iface, EnterCriticalSection(&ddraw_cs); /* Note: D3DLIGHT7 is compatible with WINED3DLIGHT */ - rc = IWineD3DDevice_GetLight(This->wineD3DDevice, - LightIndex, - (WINED3DLIGHT*) Light); + rc = wined3d_device_get_light(This->wineD3DDevice, LightIndex, (WINED3DLIGHT *)Light); /* Translate the result. WineD3D returns other values than D3D7 */ LeaveCriticalSection(&ddraw_cs); @@ -6273,7 +6248,7 @@ IDirect3DDeviceImpl_7_LightEnable(IDirect3DDevice7 *iface, TRACE("iface %p, light_idx %u, enabled %#x.\n", iface, LightIndex, Enable); EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetLightEnable(This->wineD3DDevice, LightIndex, Enable); + hr = wined3d_device_set_light_enable(This->wineD3DDevice, LightIndex, Enable); LeaveCriticalSection(&ddraw_cs); return hr_ddraw_from_wined3d(hr); } @@ -6332,7 +6307,7 @@ IDirect3DDeviceImpl_7_GetLightEnable(IDirect3DDevice7 *iface, return DDERR_INVALIDPARAMS; EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_GetLightEnable(This->wineD3DDevice, LightIndex, Enable); + hr = wined3d_device_get_light_enable(This->wineD3DDevice, LightIndex, Enable); LeaveCriticalSection(&ddraw_cs); return hr_ddraw_from_wined3d(hr); } @@ -6391,7 +6366,7 @@ IDirect3DDeviceImpl_7_SetClipPlane(IDirect3DDevice7 *iface, return DDERR_INVALIDPARAMS; EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_SetClipPlane(This->wineD3DDevice, Index, PlaneEquation); + hr = wined3d_device_set_clip_plane(This->wineD3DDevice, Index, PlaneEquation); LeaveCriticalSection(&ddraw_cs); return hr; } @@ -6448,7 +6423,7 @@ IDirect3DDeviceImpl_7_GetClipPlane(IDirect3DDevice7 *iface, return DDERR_INVALIDPARAMS; EnterCriticalSection(&ddraw_cs); - hr = IWineD3DDevice_GetClipPlane(This->wineD3DDevice, Index, PlaneEquation); + hr = wined3d_device_get_clip_plane(This->wineD3DDevice, Index, PlaneEquation); LeaveCriticalSection(&ddraw_cs); return hr; } @@ -6772,14 +6747,13 @@ IDirect3DDeviceImpl_UpdateDepthStencil(IDirect3DDeviceImpl *This) if(!depthStencil) { TRACE("Setting wined3d depth stencil to NULL\n"); - IWineD3DDevice_SetDepthStencilSurface(This->wineD3DDevice, - NULL); + wined3d_device_set_depth_stencil(This->wineD3DDevice, NULL); return WINED3DZB_FALSE; } dsi = (IDirectDrawSurfaceImpl *)depthStencil; TRACE("Setting wined3d depth stencil to %p (wined3d %p)\n", dsi, dsi->wined3d_surface); - IWineD3DDevice_SetDepthStencilSurface(This->wineD3DDevice, dsi->wined3d_surface); + wined3d_device_set_depth_stencil(This->wineD3DDevice, dsi->wined3d_surface); IDirectDrawSurface7_Release(depthStencil); return WINED3DZB_TRUE; @@ -6826,7 +6800,7 @@ HRESULT d3d_device_init(IDirect3DDeviceImpl *device, IDirectDrawImpl *ddraw, IDi IWineD3DDevice_AddRef(ddraw->wineD3DDevice); /* Render to the back buffer */ - hr = IWineD3DDevice_SetRenderTarget(ddraw->wineD3DDevice, 0, target->wined3d_surface, TRUE); + hr = wined3d_device_set_render_target(ddraw->wineD3DDevice, 0, target->wined3d_surface, TRUE); if (FAILED(hr)) { ERR("Failed to set render target, hr %#x.\n", hr); @@ -6849,7 +6823,7 @@ HRESULT d3d_device_init(IDirect3DDeviceImpl *device, IDirectDrawImpl *ddraw, IDi ddraw->d3ddevice = device; - IWineD3DDevice_SetRenderState(ddraw->wineD3DDevice, WINED3DRS_ZENABLE, + wined3d_device_set_render_state(ddraw->wineD3DDevice, WINED3DRS_ZENABLE, IDirect3DDeviceImpl_UpdateDepthStencil(device)); return D3D_OK; diff --git a/dlls/ddraw/executebuffer.c b/dlls/ddraw/executebuffer.c index 070cdc7e454..581e218992d 100644 --- a/dlls/ddraw/executebuffer.c +++ b/dlls/ddraw/executebuffer.c @@ -155,11 +155,8 @@ HRESULT d3d_execute_buffer_execute(IDirect3DExecuteBufferImpl *This, } /* IDirect3DDevices have color keying always enabled - * enable it before drawing. This overwrites any ALPHA* - * render state - */ - IWineD3DDevice_SetRenderState(lpDevice->wineD3DDevice, - WINED3DRS_COLORKEYENABLE, - 1); + * render state. */ + wined3d_device_set_render_state(lpDevice->wineD3DDevice, WINED3DRS_COLORKEYENABLE, 1); IDirect3DDevice7_DrawIndexedPrimitive((IDirect3DDevice7 *)lpDevice, D3DPT_TRIANGLELIST, D3DFVF_TLVERTEX, tl_vx, 0, This->indices, count * 3, 0); } break; @@ -318,18 +315,12 @@ HRESULT d3d_execute_buffer_execute(IDirect3DExecuteBufferImpl *This, /* Get the transform and world matrix */ /* Note: D3DMATRIX is compatible with WINED3DMATRIX */ - - IWineD3DDevice_GetTransform(lpDevice->wineD3DDevice, - D3DTRANSFORMSTATE_VIEW, - (WINED3DMATRIX*) &view_mat); - - IWineD3DDevice_GetTransform(lpDevice->wineD3DDevice, - D3DTRANSFORMSTATE_PROJECTION, - (WINED3DMATRIX*) &proj_mat); - - IWineD3DDevice_GetTransform(lpDevice->wineD3DDevice, - WINED3DTS_WORLDMATRIX(0), - (WINED3DMATRIX*) &world_mat); + wined3d_device_get_transform(lpDevice->wineD3DDevice, + D3DTRANSFORMSTATE_VIEW, (WINED3DMATRIX *)&view_mat); + wined3d_device_get_transform(lpDevice->wineD3DDevice, + D3DTRANSFORMSTATE_PROJECTION, (WINED3DMATRIX *)&proj_mat); + wined3d_device_get_transform(lpDevice->wineD3DDevice, + WINED3DTS_WORLDMATRIX(0), (WINED3DMATRIX *)&world_mat); for (i = 0; i < count; i++) { LPD3DPROCESSVERTICES ci = (LPD3DPROCESSVERTICES) instr; diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index 8ea39e603e9..56774b38fc5 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -2923,7 +2923,7 @@ static HRESULT WINAPI ddraw_gamma_control_GetGammaRamp(IDirectDrawGammaControl * if (surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) { /* Note: DDGAMMARAMP is compatible with WINED3DGAMMARAMP. */ - IWineD3DDevice_GetGammaRamp(surface->ddraw->wineD3DDevice, 0, (WINED3DGAMMARAMP *)gamma_ramp); + wined3d_device_get_gamma_ramp(surface->ddraw->wineD3DDevice, 0, (WINED3DGAMMARAMP *)gamma_ramp); } else { @@ -2965,7 +2965,7 @@ static HRESULT WINAPI ddraw_gamma_control_SetGammaRamp(IDirectDrawGammaControl * if (surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) { /* Note: DDGAMMARAMP is compatible with WINED3DGAMMARAMP */ - IWineD3DDevice_SetGammaRamp(surface->ddraw->wineD3DDevice, 0, flags, (WINED3DGAMMARAMP *)gamma_ramp); + wined3d_device_set_gamma_ramp(surface->ddraw->wineD3DDevice, 0, flags, (WINED3DGAMMARAMP *)gamma_ramp); } else { diff --git a/dlls/ddraw/vertexbuffer.c b/dlls/ddraw/vertexbuffer.c index 7ae4d6eef28..7d622a6dc6b 100644 --- a/dlls/ddraw/vertexbuffer.c +++ b/dlls/ddraw/vertexbuffer.c @@ -141,23 +141,14 @@ IDirect3DVertexBufferImpl_Release(IDirect3DVertexBuffer7 *iface) UINT offset, stride; EnterCriticalSection(&ddraw_cs); - /* D3D7 Vertex buffers don't stay bound in the device, they are passed as a parameter - * to drawPrimitiveVB. DrawPrimitiveVB sets them as the stream source in wined3d, - * and they should get unset there before they are destroyed - */ - IWineD3DDevice_GetStreamSource(This->ddraw->wineD3DDevice, - 0 /* Stream number */, - &curVB, - &offset, - &stride); - if(curVB == This->wineD3DVertexBuffer) - { - IWineD3DDevice_SetStreamSource(This->ddraw->wineD3DDevice, - 0 /* Steam number */, - NULL /* stream data */, - 0 /* Offset */, - 0 /* stride */); - } + /* D3D7 Vertex buffers don't stay bound in the device, they are passed + * as a parameter to drawPrimitiveVB. DrawPrimitiveVB sets them as the + * stream source in wined3d, and they should get unset there before + * they are destroyed. */ + wined3d_device_get_stream_source(This->ddraw->wineD3DDevice, + 0, &curVB, &offset, &stride); + if (curVB == This->wineD3DVertexBuffer) + wined3d_device_set_stream_source(This->ddraw->wineD3DDevice, 0, NULL, 0, 0); if (curVB) wined3d_buffer_decref(curVB); /* For the GetStreamSource */ @@ -335,23 +326,13 @@ IDirect3DVertexBufferImpl_ProcessVertices(IDirect3DVertexBuffer7 *iface, * the vertex ops */ doClip = VertexOp & D3DVOP_CLIP ? TRUE : FALSE; - IWineD3DDevice_GetRenderState(D3D->wineD3DDevice, - WINED3DRS_CLIPPING, - (DWORD *) &oldClip); - if(doClip != oldClip) - { - IWineD3DDevice_SetRenderState(D3D->wineD3DDevice, - WINED3DRS_CLIPPING, - doClip); - } + wined3d_device_get_render_state(D3D->wineD3DDevice, WINED3DRS_CLIPPING, (DWORD *)&oldClip); + if (doClip != oldClip) + wined3d_device_set_render_state(D3D->wineD3DDevice, WINED3DRS_CLIPPING, doClip); - IWineD3DDevice_SetStreamSource(D3D->wineD3DDevice, - 0, /* Stream No */ - Src->wineD3DVertexBuffer, - 0, /* Offset */ - get_flexible_vertex_size(Src->fvf)); - IWineD3DDevice_SetVertexDeclaration(D3D->wineD3DDevice, - Src->wineD3DVertexDeclaration); + wined3d_device_set_stream_source(D3D->wineD3DDevice, + 0, Src->wineD3DVertexBuffer, 0, get_flexible_vertex_size(Src->fvf)); + wined3d_device_set_vertex_declaration(D3D->wineD3DDevice, Src->wineD3DVertexDeclaration); hr = IWineD3DDevice_ProcessVertices(D3D->wineD3DDevice, SrcIndex, DestIndex, @@ -362,10 +343,8 @@ IDirect3DVertexBufferImpl_ProcessVertices(IDirect3DVertexBuffer7 *iface, This->fvf); /* Restore the states if needed */ - if(doClip != oldClip) - IWineD3DDevice_SetRenderState(D3D->wineD3DDevice, - WINED3DRS_CLIPPING, - oldClip); + if (doClip != oldClip) + wined3d_device_set_render_state(D3D->wineD3DDevice, WINED3DRS_CLIPPING, oldClip); LeaveCriticalSection(&ddraw_cs); return hr; } diff --git a/dlls/ddraw/viewport.c b/dlls/ddraw/viewport.c index de2bbcea6b9..7aeda68b0a2 100644 --- a/dlls/ddraw/viewport.c +++ b/dlls/ddraw/viewport.c @@ -387,17 +387,12 @@ IDirect3DViewportImpl_TransformVertices(IDirect3DViewport3 *iface, EnterCriticalSection(&ddraw_cs); - IWineD3DDevice_GetTransform(This->active_device->wineD3DDevice, - D3DTRANSFORMSTATE_VIEW, - (WINED3DMATRIX*) &view_mat); - - IWineD3DDevice_GetTransform(This->active_device->wineD3DDevice, - D3DTRANSFORMSTATE_PROJECTION, - (WINED3DMATRIX*) &proj_mat); - - IWineD3DDevice_GetTransform(This->active_device->wineD3DDevice, - WINED3DTS_WORLDMATRIX(0), - (WINED3DMATRIX*) &world_mat); + wined3d_device_get_transform(This->active_device->wineD3DDevice, + D3DTRANSFORMSTATE_VIEW, (WINED3DMATRIX *)&view_mat); + wined3d_device_get_transform(This->active_device->wineD3DDevice, + D3DTRANSFORMSTATE_PROJECTION, (WINED3DMATRIX *)&proj_mat); + wined3d_device_get_transform(This->active_device->wineD3DDevice, + WINED3DTS_WORLDMATRIX(0), (WINED3DMATRIX *)&world_mat); multiply_matrix(&mat,&view_mat,&world_mat); multiply_matrix(&mat,&proj_mat,&mat); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 5e79f0bede9..885a14e33ec 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1526,7 +1526,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Uninit3D(IWineD3DDevice *iface) for (i = 1; i < gl_info->limits.buffers; ++i) { - IWineD3DDevice_SetRenderTarget(iface, i, NULL, FALSE); + wined3d_device_set_render_target(iface, i, NULL, FALSE); } surface = This->render_targets[0]; @@ -1676,47 +1676,51 @@ static UINT WINAPI IWineD3DDeviceImpl_GetAvailableTextureMem(IWineD3DDevice *ifa return (This->adapter->TextureRam - This->adapter->UsedTextureRam); } -static HRESULT WINAPI IWineD3DDeviceImpl_SetStreamSource(IWineD3DDevice *iface, UINT StreamNumber, - struct wined3d_buffer *buffer, UINT OffsetInBytes, UINT Stride) +HRESULT CDECL wined3d_device_set_stream_source(IWineD3DDevice *iface, UINT stream_idx, + struct wined3d_buffer *buffer, UINT offset, UINT stride) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_stream_state *stream; struct wined3d_buffer *prev_buffer; - TRACE("iface %p, stream_idx %u, buffer %p, offset %u, stride %u.\n", - iface, StreamNumber, buffer, OffsetInBytes, Stride); + TRACE("device %p, stream_idx %u, buffer %p, offset %u, stride %u.\n", + device, stream_idx, buffer, offset, stride); - if (StreamNumber >= MAX_STREAMS) { - WARN("Stream out of range %d\n", StreamNumber); + if (stream_idx >= MAX_STREAMS) + { + WARN("Stream index %u out of range.\n", stream_idx); return WINED3DERR_INVALIDCALL; - } else if(OffsetInBytes & 0x3) { - WARN("OffsetInBytes is not 4 byte aligned: %d\n", OffsetInBytes); + } + else if (offset & 0x3) + { + WARN("Offset %u is not 4 byte aligned.\n", offset); return WINED3DERR_INVALIDCALL; } - stream = &This->updateStateBlock->state.streams[StreamNumber]; + stream = &device->updateStateBlock->state.streams[stream_idx]; prev_buffer = stream->buffer; - This->updateStateBlock->changed.streamSource |= 1 << StreamNumber; + device->updateStateBlock->changed.streamSource |= 1 << stream_idx; if (prev_buffer == buffer - && stream->stride == Stride - && stream->offset == OffsetInBytes) + && stream->stride == stride + && stream->offset == offset) { - TRACE("Application is setting the old values over, nothing to do\n"); + TRACE("Application is setting the old values over, nothing to do.\n"); return WINED3D_OK; } stream->buffer = buffer; if (buffer) { - stream->stride = Stride; - stream->offset = OffsetInBytes; + stream->stride = stride; + stream->offset = offset; } - /* Handle recording of state blocks */ - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); + /* Handle recording of state blocks. */ + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); if (buffer) wined3d_buffer_incref(buffer); if (prev_buffer) @@ -1735,152 +1739,145 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetStreamSource(IWineD3DDevice *iface, wined3d_buffer_decref(prev_buffer); } - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_STREAMSRC); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_STREAMSRC); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetStreamSource(IWineD3DDevice *iface, - UINT StreamNumber, struct wined3d_buffer **buffer, UINT *pOffset, UINT *pStride) +HRESULT CDECL wined3d_device_get_stream_source(IWineD3DDevice *iface, + UINT stream_idx, struct wined3d_buffer **buffer, UINT *offset, UINT *stride) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_stream_state *stream; - TRACE("iface %p, stream_idx %u, buffer %p, offset %p, stride %p.\n", - iface, StreamNumber, buffer, pOffset, pStride); + TRACE("device %p, stream_idx %u, buffer %p, offset %p, stride %p.\n", + device, stream_idx, buffer, offset, stride); - if (StreamNumber >= MAX_STREAMS) + if (stream_idx >= MAX_STREAMS) { - WARN("Stream out of range %d\n", StreamNumber); + WARN("Stream index %u out of range.\n", stream_idx); return WINED3DERR_INVALIDCALL; } - stream = &This->stateBlock->state.streams[StreamNumber]; + stream = &device->stateBlock->state.streams[stream_idx]; *buffer = stream->buffer; - *pStride = stream->stride; - if (pOffset) *pOffset = stream->offset; - if (*buffer) wined3d_buffer_incref(*buffer); + if (offset) + *offset = stream->offset; + *stride = stream->stride; return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetStreamSourceFreq(IWineD3DDevice *iface, UINT StreamNumber, UINT Divider) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +HRESULT CDECL wined3d_device_set_stream_source_freq(IWineD3DDevice *iface, UINT stream_idx, UINT divider) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_stream_state *stream; - UINT old_flags, oldFreq; + UINT old_flags, old_freq; - TRACE("iface %p, stream_idx %u, divider %#x.\n", iface, StreamNumber, Divider); + TRACE("device %p, stream_idx %u, divider %#x.\n", device, stream_idx, divider); - /* Verify input at least in d3d9 this is invalid. */ - if ((Divider & WINED3DSTREAMSOURCE_INSTANCEDATA) && (Divider & WINED3DSTREAMSOURCE_INDEXEDDATA)) + /* Verify input. At least in d3d9 this is invalid. */ + if ((divider & WINED3DSTREAMSOURCE_INSTANCEDATA) && (divider & WINED3DSTREAMSOURCE_INDEXEDDATA)) { - WARN("INSTANCEDATA and INDEXEDDATA were set, returning D3DERR_INVALIDCALL\n"); + WARN("INSTANCEDATA and INDEXEDDATA were set, returning D3DERR_INVALIDCALL.\n"); return WINED3DERR_INVALIDCALL; } - if ((Divider & WINED3DSTREAMSOURCE_INSTANCEDATA) && !StreamNumber) + if ((divider & WINED3DSTREAMSOURCE_INSTANCEDATA) && !stream_idx) { - WARN("INSTANCEDATA used on stream 0, returning D3DERR_INVALIDCALL\n"); + WARN("INSTANCEDATA used on stream 0, returning D3DERR_INVALIDCALL.\n"); return WINED3DERR_INVALIDCALL; } - if (!Divider) + if (!divider) { - WARN("Divider is 0, returning D3DERR_INVALIDCALL\n"); + WARN("Divider is 0, returning D3DERR_INVALIDCALL.\n"); return WINED3DERR_INVALIDCALL; } - stream = &This->updateStateBlock->state.streams[StreamNumber]; + stream = &device->updateStateBlock->state.streams[stream_idx]; old_flags = stream->flags; - oldFreq = stream->frequency; + old_freq = stream->frequency; - stream->flags = Divider & (WINED3DSTREAMSOURCE_INSTANCEDATA | WINED3DSTREAMSOURCE_INDEXEDDATA); - stream->frequency = Divider & 0x7FFFFF; + stream->flags = divider & (WINED3DSTREAMSOURCE_INSTANCEDATA | WINED3DSTREAMSOURCE_INDEXEDDATA); + stream->frequency = divider & 0x7fffff; - This->updateStateBlock->changed.streamFreq |= 1 << StreamNumber; + device->updateStateBlock->changed.streamFreq |= 1 << stream_idx; - if (stream->frequency != oldFreq || stream->flags != old_flags) - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_STREAMSRC); + if (stream->frequency != old_freq || stream->flags != old_flags) + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_STREAMSRC); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetStreamSourceFreq(IWineD3DDevice *iface, UINT StreamNumber, UINT* Divider) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +HRESULT CDECL wined3d_device_get_stream_source_freq(IWineD3DDevice *iface, UINT stream_idx, UINT *divider) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_stream_state *stream; - TRACE("iface %p, stream_idx %u, divider %p.\n", iface, StreamNumber, Divider); + TRACE("device %p, stream_idx %u, divider %p.\n", device, stream_idx, divider); - stream = &This->updateStateBlock->state.streams[StreamNumber]; - *Divider = stream->flags | stream->frequency; + stream = &device->updateStateBlock->state.streams[stream_idx]; + *divider = stream->flags | stream->frequency; - TRACE("Returning %#x.\n", *Divider); + TRACE("Returning %#x.\n", *divider); return WINED3D_OK; } -/***** - * Get / Set & Multiply Transform - *****/ -static HRESULT WINAPI IWineD3DDeviceImpl_SetTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE d3dts, CONST WINED3DMATRIX* lpmatrix) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +HRESULT CDECL wined3d_device_set_transform(IWineD3DDevice *iface, + WINED3DTRANSFORMSTATETYPE d3dts, const WINED3DMATRIX *matrix) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - /* Most of this routine, comments included copied from ddraw tree initially: */ - TRACE("(%p) : Transform State=%s\n", This, debug_d3dtstype(d3dts)); + TRACE("device %p, state %s, matrix %p.\n", + device, debug_d3dtstype(d3dts), matrix); - /* Handle recording of state blocks */ - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); - This->updateStateBlock->changed.transform[d3dts >> 5] |= 1 << (d3dts & 0x1f); - This->updateStateBlock->state.transforms[d3dts] = *lpmatrix; + /* Handle recording of state blocks. */ + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); + device->updateStateBlock->changed.transform[d3dts >> 5] |= 1 << (d3dts & 0x1f); + device->updateStateBlock->state.transforms[d3dts] = *matrix; return WINED3D_OK; } - /* - * If the new matrix is the same as the current one, + /* If the new matrix is the same as the current one, * we cut off any further processing. this seems to be a reasonable * optimization because as was noticed, some apps (warcraft3 for example) * tend towards setting the same matrix repeatedly for some reason. * - * From here on we assume that the new matrix is different, wherever it matters. - */ - if (!memcmp(&This->stateBlock->state.transforms[d3dts].u.m[0][0], lpmatrix, sizeof(*lpmatrix))) + * From here on we assume that the new matrix is different, wherever it matters. */ + if (!memcmp(&device->stateBlock->state.transforms[d3dts].u.m[0][0], matrix, sizeof(*matrix))) { - TRACE("The app is setting the same matrix over again\n"); + TRACE("The application is setting the same matrix over again.\n"); return WINED3D_OK; } - else - { - conv_mat(lpmatrix, &This->stateBlock->state.transforms[d3dts].u.m[0][0]); - } - /* - ScreenCoord = ProjectionMat * ViewMat * WorldMat * ObjectCoord - where ViewMat = Camera space, WorldMat = world space. + conv_mat(matrix, &device->stateBlock->state.transforms[d3dts].u.m[0][0]); - In OpenGL, camera and world space is combined into GL_MODELVIEW - matrix. The Projection matrix stay projection matrix. - */ + /* ScreenCoord = ProjectionMat * ViewMat * WorldMat * ObjectCoord + * where ViewMat = Camera space, WorldMat = world space. + * + * In OpenGL, camera and world space is combined into GL_MODELVIEW + * matrix. The Projection matrix stay projection matrix. */ - /* Capture the times we can just ignore the change for now */ - if (d3dts == WINED3DTS_VIEW) { /* handle the VIEW matrix */ - This->view_ident = !memcmp(lpmatrix, identity, 16 * sizeof(float)); - /* Handled by the state manager */ - } + if (d3dts == WINED3DTS_VIEW) + device->view_ident = !memcmp(matrix, identity, 16 * sizeof(float)); - if (d3dts < WINED3DTS_WORLDMATRIX(This->adapter->gl_info.limits.blends)) - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TRANSFORM(d3dts)); + if (d3dts < WINED3DTS_WORLDMATRIX(device->adapter->gl_info.limits.blends)) + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_TRANSFORM(d3dts)); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetTransform(IWineD3DDevice *iface, +HRESULT CDECL wined3d_device_get_transform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE state, WINED3DMATRIX *matrix) { IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - TRACE("iface %p, state %s, matrix %p.\n", iface, debug_d3dtstype(state), matrix); + TRACE("device %p, state %s, matrix %p.\n", device, debug_d3dtstype(state), matrix); *matrix = device->stateBlock->state.transforms[state]; @@ -1910,47 +1907,43 @@ static HRESULT WINAPI IWineD3DDeviceImpl_MultiplyTransform(IWineD3DDevice *iface multiply_matrix(&temp, mat, pMatrix); - /* Apply change via set transform - will reapply to eg. lights this way */ - return IWineD3DDeviceImpl_SetTransform(iface, State, &temp); + /* Apply change via set transform - will reapply to eg. lights this way. */ + return wined3d_device_set_transform(iface, State, &temp); } -/***** - * Get / Set Light - *****/ -/* Note lights are real special cases. Although the device caps state only eg. 8 are supported, - you can reference any indexes you want as long as that number max are enabled at any - one point in time! Therefore since the indexes can be anything, we need a hashmap of them. - However, this causes stateblock problems. When capturing the state block, I duplicate the hashmap, - but when recording, just build a chain pretty much of commands to be replayed. */ - -static HRESULT WINAPI IWineD3DDeviceImpl_SetLight(IWineD3DDevice *iface, DWORD Index, CONST WINED3DLIGHT* pLight) { - float rho; +/* Note lights are real special cases. Although the device caps state only + * e.g. 8 are supported, you can reference any indexes you want as long as + * that number max are enabled at any one point in time. Therefore since the + * indices can be anything, we need a hashmap of them. However, this causes + * stateblock problems. When capturing the state block, I duplicate the + * hashmap, but when recording, just build a chain pretty much of commands to + * be replayed. */ +HRESULT CDECL wined3d_device_set_light(IWineD3DDevice *iface, DWORD light_idx, CONST WINED3DLIGHT *light) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT hash_idx = LIGHTMAP_HASHFUNC(light_idx); struct wined3d_light_info *object = NULL; - UINT Hi = LIGHTMAP_HASHFUNC(Index); struct list *e; + float rho; - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - TRACE("(%p) : Idx(%d), pLight(%p). Hash index is %d\n", This, Index, pLight, Hi); + TRACE("device %p, light_idx %u, light %p.\n", device, light_idx, light); - /* Check the parameter range. Need for speed most wanted sets junk lights which confuse - * the gl driver. - */ - if(!pLight) { - WARN("Light pointer = NULL, returning WINED3DERR_INVALIDCALL\n"); + /* Check the parameter range. Need for speed most wanted sets junk lights + * which confuse the GL driver. */ + if (!light) return WINED3DERR_INVALIDCALL; - } - switch(pLight->Type) { + switch (light->Type) + { case WINED3DLIGHT_POINT: case WINED3DLIGHT_SPOT: case WINED3DLIGHT_PARALLELPOINT: case WINED3DLIGHT_GLSPOT: - /* Incorrect attenuation values can cause the gl driver to crash. Happens with Need for speed - * most wanted - */ - if (pLight->Attenuation0 < 0.0f || pLight->Attenuation1 < 0.0f || pLight->Attenuation2 < 0.0f) + /* Incorrect attenuation values can cause the gl driver to crash. + * Happens with Need for speed most wanted. */ + if (light->Attenuation0 < 0.0f || light->Attenuation1 < 0.0f || light->Attenuation2 < 0.0f) { - WARN("Attenuation is negative, returning WINED3DERR_INVALIDCALL\n"); + WARN("Attenuation is negative, returning WINED3DERR_INVALIDCALL.\n"); return WINED3DERR_INVALIDCALL; } break; @@ -1964,395 +1957,425 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetLight(IWineD3DDevice *iface, DWORD I return WINED3DERR_INVALIDCALL; } - LIST_FOR_EACH(e, &This->updateStateBlock->state.light_map[Hi]) + LIST_FOR_EACH(e, &device->updateStateBlock->state.light_map[hash_idx]) { object = LIST_ENTRY(e, struct wined3d_light_info, entry); - if(object->OriginalIndex == Index) break; + if (object->OriginalIndex == light_idx) + break; object = NULL; } - if(!object) { + if (!object) + { TRACE("Adding new light\n"); object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object)); - if(!object) { + if (!object) + { ERR("Out of memory error when allocating a light\n"); return E_OUTOFMEMORY; } - list_add_head(&This->updateStateBlock->state.light_map[Hi], &object->entry); + list_add_head(&device->updateStateBlock->state.light_map[hash_idx], &object->entry); object->glIndex = -1; - object->OriginalIndex = Index; + object->OriginalIndex = light_idx; } - /* Initialize the object */ - TRACE("Light %d setting to type %d, Diffuse(%f,%f,%f,%f), Specular(%f,%f,%f,%f), Ambient(%f,%f,%f,%f)\n", Index, pLight->Type, - pLight->Diffuse.r, pLight->Diffuse.g, pLight->Diffuse.b, pLight->Diffuse.a, - pLight->Specular.r, pLight->Specular.g, pLight->Specular.b, pLight->Specular.a, - pLight->Ambient.r, pLight->Ambient.g, pLight->Ambient.b, pLight->Ambient.a); - TRACE("... Pos(%f,%f,%f), Dirn(%f,%f,%f)\n", pLight->Position.x, pLight->Position.y, pLight->Position.z, - pLight->Direction.x, pLight->Direction.y, pLight->Direction.z); - TRACE("... Range(%f), Falloff(%f), Theta(%f), Phi(%f)\n", pLight->Range, pLight->Falloff, pLight->Theta, pLight->Phi); + /* Initialize the object. */ + TRACE("Light %d setting to type %d, Diffuse(%f,%f,%f,%f), Specular(%f,%f,%f,%f), Ambient(%f,%f,%f,%f)\n", + light_idx, light->Type, + light->Diffuse.r, light->Diffuse.g, light->Diffuse.b, light->Diffuse.a, + light->Specular.r, light->Specular.g, light->Specular.b, light->Specular.a, + light->Ambient.r, light->Ambient.g, light->Ambient.b, light->Ambient.a); + TRACE("... Pos(%f,%f,%f), Dir(%f,%f,%f)\n", light->Position.x, light->Position.y, light->Position.z, + light->Direction.x, light->Direction.y, light->Direction.z); + TRACE("... Range(%f), Falloff(%f), Theta(%f), Phi(%f)\n", + light->Range, light->Falloff, light->Theta, light->Phi); - /* Save away the information */ - object->OriginalParms = *pLight; + /* Save away the information. */ + object->OriginalParms = *light; - switch (pLight->Type) { - case WINED3DLIGHT_POINT: - /* Position */ - object->lightPosn[0] = pLight->Position.x; - object->lightPosn[1] = pLight->Position.y; - object->lightPosn[2] = pLight->Position.z; - object->lightPosn[3] = 1.0f; - object->cutoff = 180.0f; - /* FIXME: Range */ - break; + switch (light->Type) + { + case WINED3DLIGHT_POINT: + /* Position */ + object->lightPosn[0] = light->Position.x; + object->lightPosn[1] = light->Position.y; + object->lightPosn[2] = light->Position.z; + object->lightPosn[3] = 1.0f; + object->cutoff = 180.0f; + /* FIXME: Range */ + break; - case WINED3DLIGHT_DIRECTIONAL: - /* Direction */ - object->lightPosn[0] = -pLight->Direction.x; - object->lightPosn[1] = -pLight->Direction.y; - object->lightPosn[2] = -pLight->Direction.z; - object->lightPosn[3] = 0.0f; - object->exponent = 0.0f; - object->cutoff = 180.0f; - break; - - case WINED3DLIGHT_SPOT: - /* Position */ - object->lightPosn[0] = pLight->Position.x; - object->lightPosn[1] = pLight->Position.y; - object->lightPosn[2] = pLight->Position.z; - object->lightPosn[3] = 1.0f; - - /* Direction */ - object->lightDirn[0] = pLight->Direction.x; - object->lightDirn[1] = pLight->Direction.y; - object->lightDirn[2] = pLight->Direction.z; - object->lightDirn[3] = 1.0f; - - /* - * opengl-ish and d3d-ish spot lights use too different models for the - * light "intensity" as a function of the angle towards the main light direction, - * so we only can approximate very roughly. - * however spot lights are rather rarely used in games (if ever used at all). - * furthermore if still used, probably nobody pays attention to such details. - */ - if (!pLight->Falloff) - { - /* Falloff = 0 is easy, because d3d's and opengl's spot light equations have the - * falloff resp. exponent parameter as an exponent, so the spot light lighting - * will always be 1.0 for both of them, and we don't have to care for the - * rest of the rather complex calculation - */ + case WINED3DLIGHT_DIRECTIONAL: + /* Direction */ + object->lightPosn[0] = -light->Direction.x; + object->lightPosn[1] = -light->Direction.y; + object->lightPosn[2] = -light->Direction.z; + object->lightPosn[3] = 0.0f; object->exponent = 0.0f; - } else { - rho = pLight->Theta + (pLight->Phi - pLight->Theta)/(2*pLight->Falloff); - if (rho < 0.0001f) rho = 0.0001f; - object->exponent = -0.3f/logf(cosf(rho/2)); - } - if (object->exponent > 128.0f) - { - object->exponent = 128.0f; - } - object->cutoff = (float) (pLight->Phi*90/M_PI); + object->cutoff = 180.0f; + break; - /* FIXME: Range */ - break; + case WINED3DLIGHT_SPOT: + /* Position */ + object->lightPosn[0] = light->Position.x; + object->lightPosn[1] = light->Position.y; + object->lightPosn[2] = light->Position.z; + object->lightPosn[3] = 1.0f; - default: - FIXME("Unrecognized light type %d\n", pLight->Type); + /* Direction */ + object->lightDirn[0] = light->Direction.x; + object->lightDirn[1] = light->Direction.y; + object->lightDirn[2] = light->Direction.z; + object->lightDirn[3] = 1.0f; + + /* opengl-ish and d3d-ish spot lights use too different models + * for the light "intensity" as a function of the angle towards + * the main light direction, so we only can approximate very + * roughly. However, spot lights are rather rarely used in games + * (if ever used at all). Furthermore if still used, probably + * nobody pays attention to such details. */ + if (!light->Falloff) + { + /* Falloff = 0 is easy, because d3d's and opengl's spot light + * equations have the falloff resp. exponent parameter as an + * exponent, so the spot light lighting will always be 1.0 for + * both of them, and we don't have to care for the rest of the + * rather complex calculation. */ + object->exponent = 0.0f; + } + else + { + rho = light->Theta + (light->Phi - light->Theta) / (2 * light->Falloff); + if (rho < 0.0001f) + rho = 0.0001f; + object->exponent = -0.3f / logf(cosf(rho / 2)); + } + + if (object->exponent > 128.0f) + object->exponent = 128.0f; + + object->cutoff = (float)(light->Phi * 90 / M_PI); + /* FIXME: Range */ + break; + + default: + FIXME("Unrecognized light type %#x.\n", light->Type); } - /* Update the live definitions if the light is currently assigned a glIndex */ - if (object->glIndex != -1 && !This->isRecordingState) { - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(object->glIndex)); - } + /* Update the live definitions if the light is currently assigned a glIndex. */ + if (object->glIndex != -1 && !device->isRecordingState) + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_ACTIVELIGHT(object->glIndex)); + return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetLight(IWineD3DDevice *iface, DWORD Index, WINED3DLIGHT *pLight) +HRESULT CDECL wined3d_device_get_light(IWineD3DDevice *iface, UINT light_idx, WINED3DLIGHT *light) { - struct wined3d_light_info *lightInfo = NULL; - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - DWORD Hi = LIGHTMAP_HASHFUNC(Index); + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT hash_idx = LIGHTMAP_HASHFUNC(light_idx); + struct wined3d_light_info *light_info = NULL; struct list *e; - TRACE("(%p) : Idx(%d), pLight(%p)\n", This, Index, pLight); - LIST_FOR_EACH(e, &This->stateBlock->state.light_map[Hi]) + TRACE("device %p, light_idx %u, light %p.\n", device, light_idx, light); + + LIST_FOR_EACH(e, &device->stateBlock->state.light_map[hash_idx]) { - lightInfo = LIST_ENTRY(e, struct wined3d_light_info, entry); - if(lightInfo->OriginalIndex == Index) break; - lightInfo = NULL; + light_info = LIST_ENTRY(e, struct wined3d_light_info, entry); + if (light_info->OriginalIndex == light_idx) + break; + light_info = NULL; } - if (!lightInfo) + if (!light_info) { TRACE("Light information requested but light not defined\n"); return WINED3DERR_INVALIDCALL; } - *pLight = lightInfo->OriginalParms; + *light = light_info->OriginalParms; return WINED3D_OK; } -/***** - * Get / Set Light Enable - * (Note for consistency, renamed d3dx function by adding the 'set' prefix) - *****/ -static HRESULT WINAPI IWineD3DDeviceImpl_SetLightEnable(IWineD3DDevice *iface, DWORD Index, BOOL Enable) +HRESULT CDECL wined3d_device_set_light_enable(IWineD3DDevice *iface, UINT light_idx, BOOL enable) { - struct wined3d_light_info *lightInfo = NULL; - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - UINT Hi = LIGHTMAP_HASHFUNC(Index); + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT hash_idx = LIGHTMAP_HASHFUNC(light_idx); + struct wined3d_light_info *light_info = NULL; struct list *e; - TRACE("(%p) : Idx(%d), enable? %d\n", This, Index, Enable); - LIST_FOR_EACH(e, &This->updateStateBlock->state.light_map[Hi]) + TRACE("device %p, light_idx %u, enable %#x.\n", device, light_idx, enable); + + LIST_FOR_EACH(e, &device->updateStateBlock->state.light_map[hash_idx]) { - lightInfo = LIST_ENTRY(e, struct wined3d_light_info, entry); - if(lightInfo->OriginalIndex == Index) break; - lightInfo = NULL; + light_info = LIST_ENTRY(e, struct wined3d_light_info, entry); + if (light_info->OriginalIndex == light_idx) + break; + light_info = NULL; } - TRACE("Found light: %p\n", lightInfo); + TRACE("Found light %p.\n", light_info); - /* Special case - enabling an undefined light creates one with a strict set of parms! */ - if (!lightInfo) + /* Special case - enabling an undefined light creates one with a strict set of parameters. */ + if (!light_info) { TRACE("Light enabled requested but light not defined, so defining one!\n"); - IWineD3DDeviceImpl_SetLight(iface, Index, &WINED3D_default_light); + wined3d_device_set_light(iface, light_idx, &WINED3D_default_light); - /* Search for it again! Should be fairly quick as near head of list */ - LIST_FOR_EACH(e, &This->updateStateBlock->state.light_map[Hi]) + /* Search for it again! Should be fairly quick as near head of list. */ + LIST_FOR_EACH(e, &device->updateStateBlock->state.light_map[hash_idx]) { - lightInfo = LIST_ENTRY(e, struct wined3d_light_info, entry); - if(lightInfo->OriginalIndex == Index) break; - lightInfo = NULL; + light_info = LIST_ENTRY(e, struct wined3d_light_info, entry); + if (light_info->OriginalIndex == light_idx) + break; + light_info = NULL; } - if (!lightInfo) + if (!light_info) { FIXME("Adding default lights has failed dismally\n"); return WINED3DERR_INVALIDCALL; } } - if(!Enable) { - if(lightInfo->glIndex != -1) { - if(!This->isRecordingState) { - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(lightInfo->glIndex)); - } + if (!enable) + { + if (light_info->glIndex != -1) + { + if (!device->isRecordingState) + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_ACTIVELIGHT(light_info->glIndex)); - This->updateStateBlock->state.lights[lightInfo->glIndex] = NULL; - lightInfo->glIndex = -1; - } else { + device->updateStateBlock->state.lights[light_info->glIndex] = NULL; + light_info->glIndex = -1; + } + else + { TRACE("Light already disabled, nothing to do\n"); } - lightInfo->enabled = FALSE; - } else { - lightInfo->enabled = TRUE; - if (lightInfo->glIndex != -1) { - /* nop */ + light_info->enabled = FALSE; + } + else + { + light_info->enabled = TRUE; + if (light_info->glIndex != -1) + { TRACE("Nothing to do as light was enabled\n"); - } else { + } + else + { int i; - /* Find a free gl light */ - for (i = 0; i < This->maxConcurrentLights; ++i) + /* Find a free GL light. */ + for (i = 0; i < device->maxConcurrentLights; ++i) { - if (!This->updateStateBlock->state.lights[i]) + if (!device->updateStateBlock->state.lights[i]) { - This->updateStateBlock->state.lights[i] = lightInfo; - lightInfo->glIndex = i; + device->updateStateBlock->state.lights[i] = light_info; + light_info->glIndex = i; break; } } - if(lightInfo->glIndex == -1) { + if (light_info->glIndex == -1) + { /* Our tests show that Windows returns D3D_OK in this situation, even with * D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE devices. This * is consistent among ddraw, d3d8 and d3d9. GetLightEnable returns TRUE * as well for those lights. * - * TODO: Test how this affects rendering - */ + * TODO: Test how this affects rendering. */ WARN("Too many concurrently active lights\n"); return WINED3D_OK; } - /* i == lightInfo->glIndex */ - if(!This->isRecordingState) { - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_ACTIVELIGHT(i)); - } + /* i == light_info->glIndex */ + if (!device->isRecordingState) + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_ACTIVELIGHT(i)); } } return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetLightEnable(IWineD3DDevice *iface, DWORD Index,BOOL* pEnable) +HRESULT CDECL wined3d_device_get_light_enable(IWineD3DDevice *iface, UINT light_idx, BOOL *enable) { - struct wined3d_light_info *lightInfo = NULL; - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT hash_idx = LIGHTMAP_HASHFUNC(light_idx); + struct wined3d_light_info *light_info = NULL; struct list *e; - UINT Hi = LIGHTMAP_HASHFUNC(Index); - TRACE("(%p) : for idx(%d)\n", This, Index); - LIST_FOR_EACH(e, &This->stateBlock->state.light_map[Hi]) + TRACE("device %p, light_idx %u, enable %p.\n", device, light_idx, enable); + + LIST_FOR_EACH(e, &device->stateBlock->state.light_map[hash_idx]) { - lightInfo = LIST_ENTRY(e, struct wined3d_light_info, entry); - if(lightInfo->OriginalIndex == Index) break; - lightInfo = NULL; + light_info = LIST_ENTRY(e, struct wined3d_light_info, entry); + if (light_info->OriginalIndex == light_idx) + break; + light_info = NULL; } - if (!lightInfo) + if (!light_info) { - TRACE("Light enabled state requested but light not defined\n"); + TRACE("Light enabled state requested but light not defined.\n"); return WINED3DERR_INVALIDCALL; } /* true is 128 according to SetLightEnable */ - *pEnable = lightInfo->enabled ? 128 : 0; + *enable = light_info->enabled ? 128 : 0; return WINED3D_OK; } -/***** - * Get / Set Clip Planes - *****/ -static HRESULT WINAPI IWineD3DDeviceImpl_SetClipPlane(IWineD3DDevice *iface, DWORD Index, CONST float *pPlane) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - TRACE("(%p) : for idx %d, %p\n", This, Index, pPlane); - - /* Validate Index */ - if (Index >= This->adapter->gl_info.limits.clipplanes) - { - TRACE("Application has requested clipplane this device doesn't support\n"); - return WINED3DERR_INVALIDCALL; - } - - This->updateStateBlock->changed.clipplane |= 1 << Index; - - if (This->updateStateBlock->state.clip_planes[Index][0] == pPlane[0] - && This->updateStateBlock->state.clip_planes[Index][1] == pPlane[1] - && This->updateStateBlock->state.clip_planes[Index][2] == pPlane[2] - && This->updateStateBlock->state.clip_planes[Index][3] == pPlane[3]) - { - TRACE("Application is setting old values over, nothing to do\n"); - return WINED3D_OK; - } - - This->updateStateBlock->state.clip_planes[Index][0] = pPlane[0]; - This->updateStateBlock->state.clip_planes[Index][1] = pPlane[1]; - This->updateStateBlock->state.clip_planes[Index][2] = pPlane[2]; - This->updateStateBlock->state.clip_planes[Index][3] = pPlane[3]; - - /* Handle recording of state blocks */ - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); - return WINED3D_OK; - } - - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_CLIPPLANE(Index)); - - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetClipPlane(IWineD3DDevice *iface, DWORD Index, float *pPlane) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - TRACE("(%p) : for idx %d\n", This, Index); - - /* Validate Index */ - if (Index >= This->adapter->gl_info.limits.clipplanes) - { - TRACE("Application has requested clipplane this device doesn't support\n"); - return WINED3DERR_INVALIDCALL; - } - - pPlane[0] = (float)This->stateBlock->state.clip_planes[Index][0]; - pPlane[1] = (float)This->stateBlock->state.clip_planes[Index][1]; - pPlane[2] = (float)This->stateBlock->state.clip_planes[Index][2]; - pPlane[3] = (float)This->stateBlock->state.clip_planes[Index][3]; - return WINED3D_OK; -} - -/***** - * Get / Set Clip Plane Status - * WARNING: This code relies on the fact that D3DCLIPSTATUS8 == D3DCLIPSTATUS9 - *****/ -static HRESULT WINAPI IWineD3DDeviceImpl_SetClipStatus(IWineD3DDevice *iface, CONST WINED3DCLIPSTATUS* pClipStatus) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - FIXME("(%p) : stub\n", This); - - if (!pClipStatus) - return WINED3DERR_INVALIDCALL; - - This->updateStateBlock->state.clip_status.ClipUnion = pClipStatus->ClipUnion; - This->updateStateBlock->state.clip_status.ClipIntersection = pClipStatus->ClipIntersection; - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetClipStatus(IWineD3DDevice *iface, WINED3DCLIPSTATUS* pClipStatus) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - FIXME("(%p) : stub\n", This); - - if (!pClipStatus) - return WINED3DERR_INVALIDCALL; - - pClipStatus->ClipUnion = This->updateStateBlock->state.clip_status.ClipUnion; - pClipStatus->ClipIntersection = This->updateStateBlock->state.clip_status.ClipIntersection; - return WINED3D_OK; -} - -/***** - * Get / Set Material - *****/ -static HRESULT WINAPI IWineD3DDeviceImpl_SetMaterial(IWineD3DDevice *iface, CONST WINED3DMATERIAL* pMaterial) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - - This->updateStateBlock->changed.material = TRUE; - This->updateStateBlock->state.material = *pMaterial; - - /* Handle recording of state blocks */ - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); - return WINED3D_OK; - } - - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_MATERIAL); - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetMaterial(IWineD3DDevice *iface, WINED3DMATERIAL* pMaterial) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - *pMaterial = This->updateStateBlock->state.material; - TRACE("(%p) : Diffuse (%f,%f,%f,%f)\n", This, pMaterial->Diffuse.r, pMaterial->Diffuse.g, - pMaterial->Diffuse.b, pMaterial->Diffuse.a); - TRACE("(%p) : Ambient (%f,%f,%f,%f)\n", This, pMaterial->Ambient.r, pMaterial->Ambient.g, - pMaterial->Ambient.b, pMaterial->Ambient.a); - TRACE("(%p) : Specular (%f,%f,%f,%f)\n", This, pMaterial->Specular.r, pMaterial->Specular.g, - pMaterial->Specular.b, pMaterial->Specular.a); - TRACE("(%p) : Emissive (%f,%f,%f,%f)\n", This, pMaterial->Emissive.r, pMaterial->Emissive.g, - pMaterial->Emissive.b, pMaterial->Emissive.a); - TRACE("(%p) : Power (%f)\n", This, pMaterial->Power); - - return WINED3D_OK; -} - -/***** - * Get / Set Indices - *****/ -static HRESULT WINAPI IWineD3DDeviceImpl_SetIndexBuffer(IWineD3DDevice *iface, - struct wined3d_buffer *buffer, enum wined3d_format_id fmt) +HRESULT CDECL wined3d_device_set_clip_plane(IWineD3DDevice *iface, UINT plane_idx, const float *plane) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + 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) + { + TRACE("Application has requested clipplane this device doesn't support.\n"); + return WINED3DERR_INVALIDCALL; + } + + device->updateStateBlock->changed.clipplane |= 1 << plane_idx; + + if (device->updateStateBlock->state.clip_planes[plane_idx][0] == plane[0] + && device->updateStateBlock->state.clip_planes[plane_idx][1] == plane[1] + && device->updateStateBlock->state.clip_planes[plane_idx][2] == plane[2] + && device->updateStateBlock->state.clip_planes[plane_idx][3] == plane[3]) + { + TRACE("Application is setting old values over, nothing to do.\n"); + return WINED3D_OK; + } + + device->updateStateBlock->state.clip_planes[plane_idx][0] = plane[0]; + device->updateStateBlock->state.clip_planes[plane_idx][1] = plane[1]; + device->updateStateBlock->state.clip_planes[plane_idx][2] = plane[2]; + device->updateStateBlock->state.clip_planes[plane_idx][3] = plane[3]; + + /* Handle recording of state blocks. */ + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); + return WINED3D_OK; + } + + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_CLIPPLANE(plane_idx)); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_get_clip_plane(IWineD3DDevice *iface, DWORD plane_idx, float *plane) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + 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) + { + TRACE("Application has requested clipplane this device doesn't support.\n"); + return WINED3DERR_INVALIDCALL; + } + + plane[0] = (float)device->stateBlock->state.clip_planes[plane_idx][0]; + plane[1] = (float)device->stateBlock->state.clip_planes[plane_idx][1]; + plane[2] = (float)device->stateBlock->state.clip_planes[plane_idx][2]; + plane[3] = (float)device->stateBlock->state.clip_planes[plane_idx][3]; + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_set_clip_status(IWineD3DDevice *iface, const WINED3DCLIPSTATUS *clip_status) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + FIXME("device %p, clip_status %p stub!\n", device, clip_status); + + if (!clip_status) + return WINED3DERR_INVALIDCALL; + + device->updateStateBlock->state.clip_status.ClipUnion = clip_status->ClipUnion; + device->updateStateBlock->state.clip_status.ClipIntersection = clip_status->ClipIntersection; + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_get_clip_status(IWineD3DDevice *iface, WINED3DCLIPSTATUS *clip_status) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + FIXME("device %p, clip_status %p stub!\n", device, clip_status); + + if (!clip_status) + return WINED3DERR_INVALIDCALL; + + clip_status->ClipUnion = device->updateStateBlock->state.clip_status.ClipUnion; + clip_status->ClipIntersection = device->updateStateBlock->state.clip_status.ClipIntersection; + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_set_material(IWineD3DDevice *iface, const WINED3DMATERIAL *material) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + TRACE("device %p, material %p.\n", device, material); + + device->updateStateBlock->changed.material = TRUE; + device->updateStateBlock->state.material = *material; + + /* Handle recording of state blocks */ + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); + return WINED3D_OK; + } + + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_MATERIAL); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_get_material(IWineD3DDevice *iface, WINED3DMATERIAL *material) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + TRACE("device %p, material %p.\n", device, material); + + *material = device->updateStateBlock->state.material; + + TRACE("Diffuse {%.8e, %.8e, %.8e, %.8e}\n", + material->Diffuse.r, material->Diffuse.g, + material->Diffuse.b, material->Diffuse.a); + TRACE("Ambient {%.8e, %.8e, %.8e, %.8e}\n", + material->Ambient.r, material->Ambient.g, + material->Ambient.b, material->Ambient.a); + TRACE("Specular {%.8e, %.8e, %.8e, %.8e}\n", + material->Specular.r, material->Specular.g, + material->Specular.b, material->Specular.a); + TRACE("Emissive {%.8e, %.8e, %.8e, %.8e}\n", + material->Emissive.r, material->Emissive.g, + material->Emissive.b, material->Emissive.a); + TRACE("Power %.8e.\n", material->Power); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_set_index_buffer(IWineD3DDevice *iface, + struct wined3d_buffer *buffer, enum wined3d_format_id format_id) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_buffer *prev_buffer; TRACE("iface %p, buffer %p, format %s.\n", - iface, buffer, debug_d3dformat(fmt)); + iface, buffer, debug_d3dformat(format_id)); - prev_buffer = This->updateStateBlock->state.index_buffer; + prev_buffer = device->updateStateBlock->state.index_buffer; - This->updateStateBlock->changed.indices = TRUE; - This->updateStateBlock->state.index_buffer = buffer; - This->updateStateBlock->state.index_format = fmt; + device->updateStateBlock->changed.indices = TRUE; + device->updateStateBlock->state.index_buffer = buffer; + device->updateStateBlock->state.index_format = format_id; - /* Handle recording of state blocks */ - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); + /* Handle recording of state blocks. */ + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); if (buffer) wined3d_buffer_incref(buffer); if (prev_buffer) @@ -2362,7 +2385,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetIndexBuffer(IWineD3DDevice *iface, if (prev_buffer != buffer) { - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_INDEXBUFFER); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_INDEXBUFFER); if (buffer) { InterlockedIncrement(&buffer->bind_count); @@ -2378,13 +2401,13 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetIndexBuffer(IWineD3DDevice *iface, return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetIndexBuffer(IWineD3DDevice *iface, struct wined3d_buffer **buffer) +HRESULT CDECL wined3d_device_get_index_buffer(IWineD3DDevice *iface, struct wined3d_buffer **buffer) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; TRACE("iface %p, buffer %p.\n", iface, buffer); - *buffer = This->stateBlock->state.index_buffer; + *buffer = device->stateBlock->state.index_buffer; if (*buffer) wined3d_buffer_incref(*buffer); @@ -2395,247 +2418,269 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetIndexBuffer(IWineD3DDevice *iface, s } /* Method to offer d3d9 a simple way to set the base vertex index without messing with the index buffer */ -static HRESULT WINAPI IWineD3DDeviceImpl_SetBaseVertexIndex(IWineD3DDevice *iface, INT BaseIndex) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - TRACE("(%p)->(%d)\n", This, BaseIndex); +HRESULT CDECL wined3d_device_set_base_vertex_index(IWineD3DDevice *iface, INT base_index) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - if (This->updateStateBlock->state.base_vertex_index == BaseIndex) + TRACE("device %p, base_index %d.\n", device, base_index); + + if (device->updateStateBlock->state.base_vertex_index == base_index) { TRACE("Application is setting the old value over, nothing to do\n"); return WINED3D_OK; } - This->updateStateBlock->state.base_vertex_index = BaseIndex; + device->updateStateBlock->state.base_vertex_index = base_index; - if (This->isRecordingState) { + if (device->isRecordingState) + { TRACE("Recording... not performing anything\n"); return WINED3D_OK; } + /* The base vertex index affects the stream sources */ - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_STREAMSRC); - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetBaseVertexIndex(IWineD3DDevice *iface, INT* base_index) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - TRACE("(%p) : base_index %p\n", This, base_index); - - *base_index = This->stateBlock->state.base_vertex_index; - - TRACE("Returning %u\n", *base_index); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_STREAMSRC); return WINED3D_OK; } -/***** - * Get / Set Viewports - *****/ -static HRESULT WINAPI IWineD3DDeviceImpl_SetViewport(IWineD3DDevice *iface, CONST WINED3DVIEWPORT* pViewport) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +INT CDECL wined3d_device_get_base_vertex_index(IWineD3DDevice *iface) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - TRACE("(%p)\n", This); - This->updateStateBlock->changed.viewport = TRUE; - This->updateStateBlock->state.viewport = *pViewport; + TRACE("device %p.\n", device); + + return device->stateBlock->state.base_vertex_index; +} + +HRESULT CDECL wined3d_device_set_viewport(IWineD3DDevice *iface, const WINED3DVIEWPORT *viewport) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + TRACE("device %p, viewport %p.\n", device, viewport); + TRACE("x %u, y %u, w %u, h %u, minz %.8e, maxz %.8e.\n", + viewport->X, viewport->Y, viewport->Width, viewport->Height, viewport->MinZ, viewport->MaxZ); + + device->updateStateBlock->changed.viewport = TRUE; + device->updateStateBlock->state.viewport = *viewport; /* Handle recording of state blocks */ - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); - return WINED3D_OK; - } - - TRACE("(%p) : x=%d, y=%d, wid=%d, hei=%d, minz=%f, maxz=%f\n", This, - pViewport->X, pViewport->Y, pViewport->Width, pViewport->Height, pViewport->MinZ, pViewport->MaxZ); - - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VIEWPORT); - return WINED3D_OK; - -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetViewport(IWineD3DDevice *iface, WINED3DVIEWPORT* pViewport) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - TRACE("(%p)\n", This); - *pViewport = This->stateBlock->state.viewport; - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, - WINED3DRENDERSTATETYPE State, DWORD Value) -{ - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - DWORD oldValue = This->stateBlock->state.render_states[State]; - - TRACE("iface %p, state %s (%#x), value %#x.\n", iface, debug_d3drenderstate(State), State, Value); - - This->updateStateBlock->changed.renderState[State >> 5] |= 1 << (State & 0x1f); - This->updateStateBlock->state.render_states[State] = Value; - - /* Handle recording of state blocks */ - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); - return WINED3D_OK; - } - - /* Compared here and not before the assignment to allow proper stateblock recording */ - if(Value == oldValue) { - TRACE("Application is setting the old value over, nothing to do\n"); - } else { - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(State)); - } - - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetRenderState(IWineD3DDevice *iface, - WINED3DRENDERSTATETYPE State, DWORD *pValue) -{ - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - - TRACE("iface %p, state %s (%#x), value %p.\n", iface, debug_d3drenderstate(State), State, pValue); - - *pValue = This->stateBlock->state.render_states[State]; - return WINED3D_OK; -} - -/***** - * Get / Set Sampler States - * TODO: Verify against dx9 definitions - *****/ - -static HRESULT WINAPI IWineD3DDeviceImpl_SetSamplerState(IWineD3DDevice *iface, DWORD Sampler, WINED3DSAMPLERSTATETYPE Type, DWORD Value) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - DWORD oldValue; - - TRACE("(%p) : Sampler %#x, Type %s (%#x), Value %#x\n", - This, Sampler, debug_d3dsamplerstate(Type), Type, Value); - - if (Sampler >= WINED3DVERTEXTEXTURESAMPLER0 && Sampler <= WINED3DVERTEXTEXTURESAMPLER3) { - Sampler -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS); - } - - if (Sampler >= sizeof(This->stateBlock->state.sampler_states) / sizeof(*This->stateBlock->state.sampler_states)) + if (device->isRecordingState) { - ERR("Current Sampler overflows sampleState0 array (sampler %d)\n", Sampler); + TRACE("Recording... not performing anything\n"); + return WINED3D_OK; + } + + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_VIEWPORT); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_get_viewport(IWineD3DDevice *iface, WINED3DVIEWPORT *viewport) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + TRACE("device %p, viewport %p.\n", device, viewport); + + *viewport = device->stateBlock->state.viewport; + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_set_render_state(IWineD3DDevice *iface, + WINED3DRENDERSTATETYPE state, DWORD value) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + DWORD old_value = device->stateBlock->state.render_states[state]; + + TRACE("device %p, state %s (%#x), value %#x.\n", device, debug_d3drenderstate(state), state, value); + + device->updateStateBlock->changed.renderState[state >> 5] |= 1 << (state & 0x1f); + device->updateStateBlock->state.render_states[state] = value; + + /* Handle recording of state blocks. */ + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); + return WINED3D_OK; + } + + /* Compared here and not before the assignment to allow proper stateblock recording. */ + if (value == old_value) + TRACE("Application is setting the old value over, nothing to do.\n"); + else + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(state)); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_get_render_state(IWineD3DDevice *iface, + WINED3DRENDERSTATETYPE state, DWORD *value) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + TRACE("device %p, state %s (%#x), value %p.\n", device, debug_d3drenderstate(state), state, value); + + *value = device->stateBlock->state.render_states[state]; + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_set_sampler_state(IWineD3DDevice *iface, + UINT sampler_idx, WINED3DSAMPLERSTATETYPE state, DWORD value) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + DWORD old_value; + + TRACE("device %p, sampler_idx %u, state %s, value %#x.\n", + device, sampler_idx, debug_d3dsamplerstate(state), value); + + if (sampler_idx >= WINED3DVERTEXTEXTURESAMPLER0 && sampler_idx <= WINED3DVERTEXTEXTURESAMPLER3) + sampler_idx -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS); + + if (sampler_idx >= sizeof(device->stateBlock->state.sampler_states) + / sizeof(*device->stateBlock->state.sampler_states)) + { + WARN("Invalid sampler %u.\n", sampler_idx); return WINED3D_OK; /* Windows accepts overflowing this array ... we do not. */ } - oldValue = This->stateBlock->state.sampler_states[Sampler][Type]; - This->updateStateBlock->state.sampler_states[Sampler][Type] = Value; - This->updateStateBlock->changed.samplerState[Sampler] |= 1 << Type; + old_value = device->stateBlock->state.sampler_states[sampler_idx][state]; + device->updateStateBlock->state.sampler_states[sampler_idx][state] = value; + device->updateStateBlock->changed.samplerState[sampler_idx] |= 1 << state; - /* Handle recording of state blocks */ - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); + /* Handle recording of state blocks. */ + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); return WINED3D_OK; } - if(oldValue == Value) { - TRACE("Application is setting the old value over, nothing to do\n"); + if (old_value == value) + { + TRACE("Application is setting the old value over, nothing to do.\n"); return WINED3D_OK; } - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(Sampler)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_SAMPLER(sampler_idx)); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetSamplerState(IWineD3DDevice *iface, DWORD Sampler, WINED3DSAMPLERSTATETYPE Type, DWORD* Value) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +HRESULT CDECL wined3d_device_get_sampler_state(IWineD3DDevice *iface, + UINT sampler_idx, WINED3DSAMPLERSTATETYPE state, DWORD *value) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - TRACE("(%p) : Sampler %#x, Type %s (%#x)\n", - This, Sampler, debug_d3dsamplerstate(Type), Type); + TRACE("device %p, sampler_idx %u, state %s, value %p.\n", + device, sampler_idx, debug_d3dsamplerstate(state), value); - if (Sampler >= WINED3DVERTEXTEXTURESAMPLER0 && Sampler <= WINED3DVERTEXTEXTURESAMPLER3) { - Sampler -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS); - } + if (sampler_idx >= WINED3DVERTEXTEXTURESAMPLER0 && sampler_idx <= WINED3DVERTEXTEXTURESAMPLER3) + sampler_idx -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS); - if (Sampler >= sizeof(This->stateBlock->state.sampler_states) / sizeof(*This->stateBlock->state.sampler_states)) + if (sampler_idx >= sizeof(device->stateBlock->state.sampler_states) + / sizeof(*device->stateBlock->state.sampler_states)) { - ERR("Current Sampler overflows sampleState0 array (sampler %d)\n", Sampler); + WARN("Invalid sampler %u.\n", sampler_idx); return WINED3D_OK; /* Windows accepts overflowing this array ... we do not. */ } - *Value = This->stateBlock->state.sampler_states[Sampler][Type]; - TRACE("(%p) : Returning %#x\n", This, *Value); + + *value = device->stateBlock->state.sampler_states[sampler_idx][state]; + TRACE("Returning %#x.\n", *value); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetScissorRect(IWineD3DDevice *iface, CONST RECT* pRect) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +HRESULT CDECL wined3d_device_set_scissor_rect(IWineD3DDevice *iface, const RECT *rect) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - This->updateStateBlock->changed.scissorRect = TRUE; - if (EqualRect(&This->updateStateBlock->state.scissor_rect, pRect)) + TRACE("device %p, rect %s.\n", device, wine_dbgstr_rect(rect)); + + device->updateStateBlock->changed.scissorRect = TRUE; + if (EqualRect(&device->updateStateBlock->state.scissor_rect, rect)) { TRACE("App is setting the old scissor rectangle over, nothing to do.\n"); return WINED3D_OK; } - CopyRect(&This->updateStateBlock->state.scissor_rect, pRect); + CopyRect(&device->updateStateBlock->state.scissor_rect, rect); - if(This->isRecordingState) { - TRACE("Recording... not performing anything\n"); + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); return WINED3D_OK; } - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SCISSORRECT); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_SCISSORRECT); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetScissorRect(IWineD3DDevice *iface, RECT* pRect) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - - *pRect = This->updateStateBlock->state.scissor_rect; - TRACE("(%p)Returning a Scissor Rect of %d:%d-%d:%d\n", This, pRect->left, pRect->top, pRect->right, pRect->bottom); - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexDeclaration(IWineD3DDevice *iface, - struct wined3d_vertex_declaration *pDecl) +HRESULT CDECL wined3d_device_get_scissor_rect(IWineD3DDevice *iface, RECT *rect) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface; - struct wined3d_vertex_declaration *oldDecl = This->updateStateBlock->state.vertex_declaration; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - TRACE("iface %p, declaration %p.\n", iface, pDecl); + TRACE("device %p, rect %p.\n", device, rect); - if (pDecl) - wined3d_vertex_declaration_incref(pDecl); - if (oldDecl) - wined3d_vertex_declaration_decref(oldDecl); + *rect = device->updateStateBlock->state.scissor_rect; + TRACE("Returning rect %s.\n", wine_dbgstr_rect(rect)); - This->updateStateBlock->state.vertex_declaration = pDecl; - This->updateStateBlock->changed.vertexDecl = TRUE; + return WINED3D_OK; +} - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); +HRESULT CDECL wined3d_device_set_vertex_declaration(IWineD3DDevice *iface, + struct wined3d_vertex_declaration *declaration) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + struct wined3d_vertex_declaration *prev = device->updateStateBlock->state.vertex_declaration; + + TRACE("device %p, declaration %p.\n", device, declaration); + + if (declaration) + wined3d_vertex_declaration_incref(declaration); + if (prev) + wined3d_vertex_declaration_decref(prev); + + device->updateStateBlock->state.vertex_declaration = declaration; + device->updateStateBlock->changed.vertexDecl = TRUE; + + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); return WINED3D_OK; - } else if(pDecl == oldDecl) { - /* Checked after the assignment to allow proper stateblock recording */ - TRACE("Application is setting the old declaration over, nothing to do\n"); + } + else if (declaration == prev) + { + /* Checked after the assignment to allow proper stateblock recording. */ + TRACE("Application is setting the old declaration over, nothing to do.\n"); return WINED3D_OK; } - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VDECL); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_VDECL); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexDeclaration(IWineD3DDevice *iface, - struct wined3d_vertex_declaration **ppDecl) +HRESULT CDECL wined3d_device_get_vertex_declaration(IWineD3DDevice *iface, + struct wined3d_vertex_declaration **declaration) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - TRACE("iface %p, declaration %p.\n", iface, ppDecl); + TRACE("device %p, declaration %p.\n", device, declaration); - *ppDecl = This->stateBlock->state.vertex_declaration; - if (*ppDecl) - wined3d_vertex_declaration_incref(*ppDecl); + *declaration = device->stateBlock->state.vertex_declaration; + if (*declaration) + wined3d_vertex_declaration_incref(*declaration); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShader(IWineD3DDevice *iface, struct wined3d_shader *shader) +HRESULT CDECL wined3d_device_set_vertex_shader(IWineD3DDevice *iface, struct wined3d_shader *shader) { IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_shader *prev = device->updateStateBlock->state.vertex_shader; + TRACE("device %p, shader %p.\n", device, shader); + device->updateStateBlock->state.vertex_shader = shader; device->updateStateBlock->changed.vertexShader = TRUE; @@ -2648,14 +2693,13 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShader(IWineD3DDevice *iface, TRACE("Recording... not performing anything.\n"); return WINED3D_OK; } - else if(prev == shader) + + if (shader == prev) { - /* Checked here to allow proper stateblock recording */ - TRACE("App is setting the old shader over, nothing to do.\n"); + TRACE("Application is setting the old shader over, nothing to do.\n"); return WINED3D_OK; } - TRACE("(%p) : setting shader(%p)\n", device, shader); if (shader) wined3d_shader_incref(shader); if (prev) @@ -2666,12 +2710,12 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShader(IWineD3DDevice *iface, return WINED3D_OK; } -static struct wined3d_shader * WINAPI IWineD3DDeviceImpl_GetVertexShader(IWineD3DDevice *iface) +struct wined3d_shader * CDECL wined3d_device_get_vertex_shader(IWineD3DDevice *iface) { IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_shader *shader; - TRACE("iface %p.\n", iface); + TRACE("device %p.\n", device); shader = device->stateBlock->state.vertex_shader; if (shader) @@ -2681,150 +2725,145 @@ static struct wined3d_shader * WINAPI IWineD3DDeviceImpl_GetVertexShader(IWineD3 return shader; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShaderConstantB( - IWineD3DDevice *iface, - UINT start, - CONST BOOL *srcData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - unsigned int i, cnt = min(count, MAX_CONST_B - start); - - TRACE("(iface %p, srcData %p, start %d, count %d)\n", - iface, srcData, start, count); - - if (!srcData || start >= MAX_CONST_B) return WINED3DERR_INVALIDCALL; - - memcpy(&This->updateStateBlock->state.vs_consts_b[start], srcData, cnt * sizeof(BOOL)); - for (i = 0; i < cnt; i++) - TRACE("Set BOOL constant %u to %s\n", start + i, srcData[i]? "true":"false"); - - for (i = start; i < cnt + start; ++i) { - This->updateStateBlock->changed.vertexShaderConstantsB |= (1 << i); - } - - if (!This->isRecordingState) IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VERTEXSHADERCONSTANT); - - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexShaderConstantB( - IWineD3DDevice *iface, - UINT start, - BOOL *dstData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - int cnt = min(count, MAX_CONST_B - start); - - TRACE("(iface %p, dstData %p, start %d, count %d)\n", - iface, dstData, start, count); - - if (!dstData || cnt < 0) - return WINED3DERR_INVALIDCALL; - - memcpy(dstData, &This->stateBlock->state.vs_consts_b[start], cnt * sizeof(BOOL)); - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShaderConstantI( - IWineD3DDevice *iface, - UINT start, - CONST int *srcData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - unsigned int i, cnt = min(count, MAX_CONST_I - start); - - TRACE("(iface %p, srcData %p, start %d, count %d)\n", - iface, srcData, start, count); - - if (!srcData || start >= MAX_CONST_I) return WINED3DERR_INVALIDCALL; - - memcpy(&This->updateStateBlock->state.vs_consts_i[start * 4], srcData, cnt * sizeof(int) * 4); - for (i = 0; i < cnt; i++) - TRACE("Set INT constant %u to { %d, %d, %d, %d }\n", start + i, - srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]); - - for (i = start; i < cnt + start; ++i) { - This->updateStateBlock->changed.vertexShaderConstantsI |= (1 << i); - } - - if (!This->isRecordingState) IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VERTEXSHADERCONSTANT); - - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexShaderConstantI( - IWineD3DDevice *iface, - UINT start, - int *dstData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - int cnt = min(count, MAX_CONST_I - start); - - TRACE("(iface %p, dstData %p, start %d, count %d)\n", - iface, dstData, start, count); - - if (!dstData || ((signed int)MAX_CONST_I - (signed int)start) <= 0) - return WINED3DERR_INVALIDCALL; - - memcpy(dstData, &This->stateBlock->state.vs_consts_i[start * 4], cnt * sizeof(int) * 4); - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShaderConstantF( - IWineD3DDevice *iface, - UINT start, - CONST float *srcData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +HRESULT CDECL wined3d_device_set_vs_consts_b(IWineD3DDevice *iface, + UINT start_register, const BOOL *constants, UINT bool_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT count = min(bool_count, MAX_CONST_B - start_register); UINT i; - TRACE("(iface %p, srcData %p, start %d, count %d)\n", - iface, srcData, start, count); + TRACE("device %p, start_register %u, constants %p, bool_count %u.\n", + device, start_register, constants, bool_count); - /* Specifically test start > limit to catch MAX_UINT overflows when adding start + count */ - if (!srcData || start + count > This->d3d_vshader_constantF || start > This->d3d_vshader_constantF) + if (!constants || start_register >= MAX_CONST_B) return WINED3DERR_INVALIDCALL; - memcpy(&This->updateStateBlock->state.vs_consts_f[start * 4], srcData, count * sizeof(float) * 4); - if(TRACE_ON(d3d)) { - for (i = 0; i < count; i++) - TRACE("Set FLOAT constant %u to { %f, %f, %f, %f }\n", start + i, - srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]); - } + memcpy(&device->updateStateBlock->state.vs_consts_b[start_register], constants, count * sizeof(BOOL)); + for (i = 0; i < count; ++i) + TRACE("Set BOOL constant %u to %s.\n", start_register + i, constants[i] ? "true" : "false"); - if (!This->isRecordingState) - { - This->shader_backend->shader_update_float_vertex_constants(This, start, count); - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VERTEXSHADERCONSTANT); - } + for (i = start_register; i < count + start_register; ++i) + device->updateStateBlock->changed.vertexShaderConstantsB |= (1 << i); - memset(This->updateStateBlock->changed.vertexShaderConstantsF + start, 1, - sizeof(*This->updateStateBlock->changed.vertexShaderConstantsF) * count); + if (!device->isRecordingState) + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_VERTEXSHADERCONSTANT); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexShaderConstantF( - IWineD3DDevice *iface, - UINT start, - float *dstData, - UINT count) { +HRESULT CDECL wined3d_device_get_vs_consts_b(IWineD3DDevice *iface, + UINT start_register, BOOL *constants, UINT bool_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT count = min(bool_count, MAX_CONST_B - start_register); - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - int cnt = min(count, This->d3d_vshader_constantF - start); + TRACE("device %p, start_register %u, constants %p, bool_count %u.\n", + device, start_register, constants, bool_count); - TRACE("(iface %p, dstData %p, start %d, count %d)\n", - iface, dstData, start, count); - - if (!dstData || cnt < 0) + if (!constants || start_register >= MAX_CONST_B) return WINED3DERR_INVALIDCALL; - memcpy(dstData, &This->stateBlock->state.vs_consts_f[start * 4], cnt * sizeof(float) * 4); + memcpy(constants, &device->stateBlock->state.vs_consts_b[start_register], count * sizeof(BOOL)); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_set_vs_consts_i(IWineD3DDevice *iface, + UINT start_register, const int *constants, UINT vector4i_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT count = min(vector4i_count, MAX_CONST_I - start_register); + UINT i; + + TRACE("device %p, start_register %u, constants %p, vector4i_count %u.\n", + device, start_register, constants, vector4i_count); + + if (!constants || start_register >= MAX_CONST_I) + return WINED3DERR_INVALIDCALL; + + memcpy(&device->updateStateBlock->state.vs_consts_i[start_register * 4], constants, count * sizeof(int) * 4); + for (i = 0; i < count; ++i) + TRACE("Set INT constant %u to {%d, %d, %d, %d}.\n", start_register + i, + constants[i * 4], constants[i * 4 + 1], + constants[i * 4 + 2], constants[i * 4 + 3]); + + for (i = start_register; i < count + start_register; ++i) + device->updateStateBlock->changed.vertexShaderConstantsI |= (1 << i); + + if (!device->isRecordingState) + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_VERTEXSHADERCONSTANT); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_get_vs_consts_i(IWineD3DDevice *iface, + UINT start_register, int *constants, UINT vector4i_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT count = min(vector4i_count, MAX_CONST_I - start_register); + + TRACE("device %p, start_register %u, constants %p, vector4i_count %u.\n", + device, start_register, constants, vector4i_count); + + if (!constants || start_register >= MAX_CONST_I) + return WINED3DERR_INVALIDCALL; + + memcpy(constants, &device->stateBlock->state.vs_consts_i[start_register * 4], count * sizeof(int) * 4); + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_set_vs_consts_f(IWineD3DDevice *iface, + UINT start_register, const float *constants, UINT vector4f_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT i; + + TRACE("device %p, start_register %u, constants %p, vector4f_count %u.\n", + device, start_register, constants, vector4f_count); + + /* Specifically test start_register > limit to catch MAX_UINT overflows + * when adding start_register + vector4f_count. */ + if (!constants + || start_register + vector4f_count > device->d3d_vshader_constantF + || start_register > device->d3d_vshader_constantF) + return WINED3DERR_INVALIDCALL; + + memcpy(&device->updateStateBlock->state.vs_consts_f[start_register * 4], + constants, vector4f_count * sizeof(float) * 4); + if (TRACE_ON(d3d)) + { + for (i = 0; i < vector4f_count; ++i) + TRACE("Set FLOAT constant %u to {%.8e, %.8e, %.8e, %.8e}.\n", start_register + i, + constants[i * 4], constants[i * 4 + 1], + constants[i * 4 + 2], constants[i * 4 + 3]); + } + + if (!device->isRecordingState) + { + device->shader_backend->shader_update_float_vertex_constants(device, start_register, vector4f_count); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_VERTEXSHADERCONSTANT); + } + + memset(device->updateStateBlock->changed.vertexShaderConstantsF + start_register, 1, + sizeof(*device->updateStateBlock->changed.vertexShaderConstantsF) * vector4f_count); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_get_vs_consts_f(IWineD3DDevice *iface, + UINT start_register, float *constants, UINT vector4f_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + int count = min(vector4f_count, device->d3d_vshader_constantF - start_register); + + TRACE("device %p, start_register %u, constants %p, vector4f_count %u.\n", + device, start_register, constants, vector4f_count); + + if (!constants || count < 0) + return WINED3DERR_INVALIDCALL; + + memcpy(constants, &device->stateBlock->state.vs_consts_f[start_register * 4], count * sizeof(float) * 4); + return WINED3D_OK; } @@ -3033,31 +3072,29 @@ void IWineD3DDeviceImpl_FindTexUnitMap(IWineD3DDeviceImpl *This) if (vs) device_map_vsamplers(This, ps, gl_info); } -static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShader(IWineD3DDevice *iface, struct wined3d_shader *shader) +HRESULT CDECL wined3d_device_set_pixel_shader(IWineD3DDevice *iface, struct wined3d_shader *shader) { IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_shader *prev = device->updateStateBlock->state.pixel_shader; + TRACE("device %p, shader %p.\n", device, shader); + device->updateStateBlock->state.pixel_shader = shader; device->updateStateBlock->changed.pixelShader = TRUE; - /* Handle recording of state blocks */ - if (device->isRecordingState) - TRACE("Recording... not performing anything\n"); - if (device->isRecordingState) { - TRACE("Recording... not performing anything.\n"); if (shader) wined3d_shader_incref(shader); if (prev) wined3d_shader_decref(prev); + TRACE("Recording... not performing anything.\n"); return WINED3D_OK; } if (shader == prev) { - TRACE("App is setting the old pixel shader over, nothing to do.\n"); + TRACE("Application is setting the old shader over, nothing to do.\n"); return WINED3D_OK; } @@ -3066,18 +3103,17 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShader(IWineD3DDevice *iface, s if (prev) wined3d_shader_decref(prev); - TRACE("Setting shader %p.\n", shader); IWineD3DDeviceImpl_MarkStateDirty(device, STATE_PIXELSHADER); return WINED3D_OK; } -static struct wined3d_shader * WINAPI IWineD3DDeviceImpl_GetPixelShader(IWineD3DDevice *iface) +struct wined3d_shader * CDECL wined3d_device_get_pixel_shader(IWineD3DDevice *iface) { IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_shader *shader; - TRACE("iface %p.\n", iface); + TRACE("device %p.\n", device); shader = device->stateBlock->state.pixel_shader; if (shader) @@ -3087,150 +3123,146 @@ static struct wined3d_shader * WINAPI IWineD3DDeviceImpl_GetPixelShader(IWineD3D return shader; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShaderConstantB( - IWineD3DDevice *iface, - UINT start, - CONST BOOL *srcData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - unsigned int i, cnt = min(count, MAX_CONST_B - start); - - TRACE("(iface %p, srcData %p, start %u, count %u)\n", - iface, srcData, start, count); - - if (!srcData || start >= MAX_CONST_B) return WINED3DERR_INVALIDCALL; - - memcpy(&This->updateStateBlock->state.ps_consts_b[start], srcData, cnt * sizeof(BOOL)); - for (i = 0; i < cnt; i++) - TRACE("Set BOOL constant %u to %s\n", start + i, srcData[i]? "true":"false"); - - for (i = start; i < cnt + start; ++i) { - This->updateStateBlock->changed.pixelShaderConstantsB |= (1 << i); - } - - if (!This->isRecordingState) IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADERCONSTANT); - - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetPixelShaderConstantB( - IWineD3DDevice *iface, - UINT start, - BOOL *dstData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - int cnt = min(count, MAX_CONST_B - start); - - TRACE("(iface %p, dstData %p, start %d, count %d)\n", - iface, dstData, start, count); - - if (!dstData || cnt < 0) - return WINED3DERR_INVALIDCALL; - - memcpy(dstData, &This->stateBlock->state.ps_consts_b[start], cnt * sizeof(BOOL)); - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShaderConstantI( - IWineD3DDevice *iface, - UINT start, - CONST int *srcData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - unsigned int i, cnt = min(count, MAX_CONST_I - start); - - TRACE("(iface %p, srcData %p, start %u, count %u)\n", - iface, srcData, start, count); - - if (!srcData || start >= MAX_CONST_I) return WINED3DERR_INVALIDCALL; - - memcpy(&This->updateStateBlock->state.ps_consts_i[start * 4], srcData, cnt * sizeof(int) * 4); - for (i = 0; i < cnt; i++) - TRACE("Set INT constant %u to { %d, %d, %d, %d }\n", start + i, - srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]); - - for (i = start; i < cnt + start; ++i) { - This->updateStateBlock->changed.pixelShaderConstantsI |= (1 << i); - } - - if (!This->isRecordingState) IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADERCONSTANT); - - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_GetPixelShaderConstantI( - IWineD3DDevice *iface, - UINT start, - int *dstData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - int cnt = min(count, MAX_CONST_I - start); - - TRACE("(iface %p, dstData %p, start %d, count %d)\n", - iface, dstData, start, count); - - if (!dstData || cnt < 0) - return WINED3DERR_INVALIDCALL; - - memcpy(dstData, &This->stateBlock->state.ps_consts_i[start * 4], cnt * sizeof(int) * 4); - return WINED3D_OK; -} - -static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShaderConstantF( - IWineD3DDevice *iface, - UINT start, - CONST float *srcData, - UINT count) { - - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +HRESULT CDECL wined3d_device_set_ps_consts_b(IWineD3DDevice *iface, + UINT start_register, const BOOL *constants, UINT bool_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT count = min(bool_count, MAX_CONST_B - start_register); UINT i; - TRACE("(iface %p, srcData %p, start %d, count %d)\n", - iface, srcData, start, count); + TRACE("device %p, start_register %u, constants %p, bool_count %u.\n", + device, start_register, constants, bool_count); - /* Specifically test start > limit to catch MAX_UINT overflows when adding start + count */ - if (!srcData || start + count > This->d3d_pshader_constantF || start > This->d3d_pshader_constantF) + if (!constants || start_register >= MAX_CONST_B) return WINED3DERR_INVALIDCALL; - memcpy(&This->updateStateBlock->state.ps_consts_f[start * 4], srcData, count * sizeof(float) * 4); - if(TRACE_ON(d3d)) { - for (i = 0; i < count; i++) - TRACE("Set FLOAT constant %u to { %f, %f, %f, %f }\n", start + i, - srcData[i*4], srcData[i*4+1], srcData[i*4+2], srcData[i*4+3]); - } + memcpy(&device->updateStateBlock->state.ps_consts_b[start_register], constants, count * sizeof(BOOL)); + for (i = 0; i < count; ++i) + TRACE("Set BOOL constant %u to %s.\n", start_register + i, constants[i] ? "true" : "false"); - if (!This->isRecordingState) - { - This->shader_backend->shader_update_float_pixel_constants(This, start, count); - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADERCONSTANT); - } + for (i = start_register; i < count + start_register; ++i) + device->updateStateBlock->changed.pixelShaderConstantsB |= (1 << i); - memset(This->updateStateBlock->changed.pixelShaderConstantsF + start, 1, - sizeof(*This->updateStateBlock->changed.pixelShaderConstantsF) * count); + if (!device->isRecordingState) + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_PIXELSHADERCONSTANT); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetPixelShaderConstantF( - IWineD3DDevice *iface, - UINT start, - float *dstData, - UINT count) { +HRESULT CDECL wined3d_device_get_ps_consts_b(IWineD3DDevice *iface, + UINT start_register, BOOL *constants, UINT bool_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT count = min(bool_count, MAX_CONST_B - start_register); - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - int cnt = min(count, This->d3d_pshader_constantF - start); + TRACE("device %p, start_register %u, constants %p, bool_count %u.\n", + device, start_register, constants, bool_count); - TRACE("(iface %p, dstData %p, start %d, count %d)\n", - iface, dstData, start, count); - - if (!dstData || cnt < 0) + if (!constants || start_register >= MAX_CONST_B) return WINED3DERR_INVALIDCALL; - memcpy(dstData, &This->stateBlock->state.ps_consts_f[start * 4], cnt * sizeof(float) * 4); + memcpy(constants, &device->stateBlock->state.ps_consts_b[start_register], count * sizeof(BOOL)); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_set_ps_consts_i(IWineD3DDevice *iface, + UINT start_register, const int *constants, UINT vector4i_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT count = min(vector4i_count, MAX_CONST_I - start_register); + UINT i; + + TRACE("device %p, start_register %u, constants %p, vector4i_count %u.\n", + device, start_register, constants, vector4i_count); + + if (!constants || start_register >= MAX_CONST_I) + return WINED3DERR_INVALIDCALL; + + memcpy(&device->updateStateBlock->state.ps_consts_i[start_register * 4], constants, count * sizeof(int) * 4); + for (i = 0; i < count; ++i) + TRACE("Set INT constant %u to {%d, %d, %d, %d}.\n", start_register + i, + constants[i * 4], constants[i * 4 + 1], + constants[i * 4 + 2], constants[i * 4 + 3]); + + for (i = start_register; i < count + start_register; ++i) + device->updateStateBlock->changed.pixelShaderConstantsI |= (1 << i); + + if (!device->isRecordingState) + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_PIXELSHADERCONSTANT); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_get_ps_consts_i(IWineD3DDevice *iface, + UINT start_register, int *constants, UINT vector4i_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT count = min(vector4i_count, MAX_CONST_I - start_register); + + TRACE("device %p, start_register %u, constants %p, vector4i_count %u.\n", + device, start_register, constants, vector4i_count); + + if (!constants || start_register >= MAX_CONST_I) + return WINED3DERR_INVALIDCALL; + + memcpy(constants, &device->stateBlock->state.ps_consts_i[start_register * 4], count * sizeof(int) * 4); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_set_ps_consts_f(IWineD3DDevice *iface, + UINT start_register, const float *constants, UINT vector4f_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT i; + + TRACE("device %p, start_register %u, constants %p, vector4f_count %u.\n", + device, start_register, constants, vector4f_count); + + /* Specifically test start_register > limit to catch MAX_UINT overflows + * when adding start_register + vector4f_count. */ + if (!constants + || start_register + vector4f_count > device->d3d_pshader_constantF + || start_register > device->d3d_pshader_constantF) + return WINED3DERR_INVALIDCALL; + + memcpy(&device->updateStateBlock->state.ps_consts_f[start_register * 4], + constants, vector4f_count * sizeof(float) * 4); + if (TRACE_ON(d3d)) + { + for (i = 0; i < vector4f_count; ++i) + TRACE("Set FLOAT constant %u to {%.8e, %.8e, %.8e, %.8e}.\n", start_register + i, + constants[i * 4], constants[i * 4 + 1], + constants[i * 4 + 2], constants[i * 4 + 3]); + } + + if (!device->isRecordingState) + { + device->shader_backend->shader_update_float_pixel_constants(device, start_register, vector4f_count); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_PIXELSHADERCONSTANT); + } + + memset(device->updateStateBlock->changed.pixelShaderConstantsF + start_register, 1, + sizeof(*device->updateStateBlock->changed.pixelShaderConstantsF) * vector4f_count); + + return WINED3D_OK; +} + +HRESULT CDECL wined3d_device_get_ps_consts_f(IWineD3DDevice *iface, + UINT start_register, float *constants, UINT vector4f_count) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + int count = min(vector4f_count, device->d3d_pshader_constantF - start_register); + + TRACE("device %p, start_register %u, constants %p, vector4f_count %u.\n", + device, start_register, constants, vector4f_count); + + if (!constants || count < 0) + return WINED3DERR_INVALIDCALL; + + memcpy(constants, &device->stateBlock->state.ps_consts_f[start_register * 4], count * sizeof(float) * 4); + return WINED3D_OK; } @@ -3307,15 +3339,9 @@ static HRESULT process_vertices_strided(IWineD3DDeviceImpl *This, DWORD dwDestIn } else doClip = FALSE; dest_ptr = ((char *)buffer_get_sysmem(dest, gl_info)) + dwDestIndex * get_flexible_vertex_size(DestFVF); - IWineD3DDevice_GetTransform( (IWineD3DDevice *) This, - WINED3DTS_VIEW, - &view_mat); - IWineD3DDevice_GetTransform( (IWineD3DDevice *) This, - WINED3DTS_PROJECTION, - &proj_mat); - IWineD3DDevice_GetTransform( (IWineD3DDevice *) This, - WINED3DTS_WORLDMATRIX(0), - &world_mat); + wined3d_device_get_transform((IWineD3DDevice *)This, WINED3DTS_VIEW, &view_mat); + wined3d_device_get_transform((IWineD3DDevice *)This, WINED3DTS_PROJECTION, &proj_mat); + wined3d_device_get_transform((IWineD3DDevice *)This, WINED3DTS_WORLDMATRIX(0), &world_mat); TRACE("View mat:\n"); TRACE("%f %f %f %f\n", view_mat.u.s._11, view_mat.u.s._12, view_mat.u.s._13, view_mat.u.s._14); @@ -3336,7 +3362,7 @@ static HRESULT process_vertices_strided(IWineD3DDeviceImpl *This, DWORD dwDestIn TRACE("%f %f %f %f\n", world_mat.u.s._41, world_mat.u.s._42, world_mat.u.s._43, world_mat.u.s._44); /* Get the viewport */ - IWineD3DDevice_GetViewport( (IWineD3DDevice *) This, &vp); + wined3d_device_get_viewport((IWineD3DDevice *)This, &vp); TRACE("Viewport: X=%d, Y=%d, Width=%d, Height=%d, MinZ=%f, MaxZ=%f\n", vp.X, vp.Y, vp.Width, vp.Height, vp.MinZ, vp.MaxZ); @@ -3644,121 +3670,126 @@ static HRESULT WINAPI IWineD3DDeviceImpl_ProcessVertices(IWineD3DDevice *iface, return hr; } -/***** - * Get / Set Texture Stage States - * TODO: Verify against dx9 definitions - *****/ -static HRESULT WINAPI IWineD3DDeviceImpl_SetTextureStageState(IWineD3DDevice *iface, DWORD Stage, WINED3DTEXTURESTAGESTATETYPE Type, DWORD Value) +HRESULT CDECL wined3d_device_set_texture_stage_state(IWineD3DDevice *iface, + UINT stage, WINED3DTEXTURESTAGESTATETYPE state, DWORD value) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - const struct wined3d_gl_info *gl_info = &This->adapter->gl_info; - DWORD oldValue; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + DWORD old_value; - TRACE("(%p) : Stage=%d, Type=%s(%d), Value=%d\n", This, Stage, debug_d3dtexturestate(Type), Type, Value); + TRACE("device %p, stage %u, state %s, value %#x.\n", + device, stage, debug_d3dtexturestate(state), value); - if (Type > WINED3D_HIGHEST_TEXTURE_STATE) + if (state > WINED3D_HIGHEST_TEXTURE_STATE) { - WARN("Invalid Type %d passed.\n", Type); + WARN("Invalid state %#x passed.\n", state); return WINED3D_OK; } - if (Stage >= gl_info->limits.texture_stages) + if (stage >= gl_info->limits.texture_stages) { WARN("Attempting to set stage %u which is higher than the max stage %u, ignoring.\n", - Stage, gl_info->limits.texture_stages - 1); + stage, gl_info->limits.texture_stages - 1); return WINED3D_OK; } - oldValue = This->updateStateBlock->state.texture_states[Stage][Type]; - This->updateStateBlock->changed.textureState[Stage] |= 1 << Type; - This->updateStateBlock->state.texture_states[Stage][Type] = Value; + old_value = device->updateStateBlock->state.texture_states[stage][state]; + device->updateStateBlock->changed.textureState[stage] |= 1 << state; + device->updateStateBlock->state.texture_states[stage][state] = value; - if (This->isRecordingState) { - TRACE("Recording... not performing anything\n"); + if (device->isRecordingState) + { + TRACE("Recording... not performing anything.\n"); return WINED3D_OK; } - /* Checked after the assignments to allow proper stateblock recording */ - if(oldValue == Value) { - TRACE("App is setting the old value over, nothing to do\n"); + /* Checked after the assignments to allow proper stateblock recording. */ + if (old_value == value) + { + TRACE("Application is setting the old value over, nothing to do.\n"); return WINED3D_OK; } - if (Stage > This->stateBlock->state.lowest_disabled_stage - && This->StateTable[STATE_TEXTURESTAGE(0, Type)].representative + if (stage > device->stateBlock->state.lowest_disabled_stage + && device->StateTable[STATE_TEXTURESTAGE(0, state)].representative == STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP)) { - /* Colorop change above lowest disabled stage? That won't change anything in the gl setup - * Changes in other states are important on disabled stages too - */ + /* Colorop change above lowest disabled stage? That won't change + * anything in the GL setup. Changes in other states are important on + * disabled stages too. */ return WINED3D_OK; } - if(Type == WINED3DTSS_COLOROP) { + if (state == WINED3DTSS_COLOROP) + { unsigned int i; - if(Value == WINED3DTOP_DISABLE && oldValue != WINED3DTOP_DISABLE) { - /* Previously enabled stage disabled now. Make sure to dirtify all enabled stages above Stage, - * they have to be disabled + if (value == WINED3DTOP_DISABLE && old_value != WINED3DTOP_DISABLE) + { + /* Previously enabled stage disabled now. Make sure to dirtify + * all enabled stages above stage, they have to be disabled. * - * The current stage is dirtified below. - */ - for (i = Stage + 1; i < This->stateBlock->state.lowest_disabled_stage; ++i) + * The current stage is dirtified below. */ + for (i = stage + 1; i < device->stateBlock->state.lowest_disabled_stage; ++i) { - TRACE("Additionally dirtifying stage %u\n", i); - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP)); + TRACE("Additionally dirtifying stage %u.\n", i); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP)); } - This->stateBlock->state.lowest_disabled_stage = Stage; - TRACE("New lowest disabled: %u\n", Stage); - } else if(Value != WINED3DTOP_DISABLE && oldValue == WINED3DTOP_DISABLE) { - /* Previously disabled stage enabled. Stages above it may need enabling - * stage must be lowest_disabled_stage here, if it's bigger success is returned above, - * and stages below the lowest disabled stage can't be enabled(because they are enabled already). + device->stateBlock->state.lowest_disabled_stage = stage; + TRACE("New lowest disabled: %u.\n", stage); + } + else if (value != WINED3DTOP_DISABLE && old_value == WINED3DTOP_DISABLE) + { + /* Previously disabled stage enabled. Stages above it may need + * enabling. Stage must be lowest_disabled_stage here, if it's + * bigger success is returned above, and stages below the lowest + * disabled stage can't be enabled (because they are enabled + * already). * - * Again stage Stage doesn't need to be dirtified here, it is handled below. - */ - - for (i = Stage + 1; i < This->adapter->gl_info.limits.texture_stages; ++i) + * Again stage stage doesn't need to be dirtified here, it is + * handled below. */ + for (i = stage + 1; i < gl_info->limits.texture_stages; ++i) { - if (This->updateStateBlock->state.texture_states[i][WINED3DTSS_COLOROP] == WINED3DTOP_DISABLE) + if (device->updateStateBlock->state.texture_states[i][WINED3DTSS_COLOROP] == WINED3DTOP_DISABLE) break; - TRACE("Additionally dirtifying stage %u due to enable\n", i); - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP)); + TRACE("Additionally dirtifying stage %u due to enable.\n", i); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_TEXTURESTAGE(i, WINED3DTSS_COLOROP)); } - This->stateBlock->state.lowest_disabled_stage = i; - TRACE("New lowest disabled: %u\n", i); + device->stateBlock->state.lowest_disabled_stage = i; + TRACE("New lowest disabled: %u.\n", i); } } - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(Stage, Type)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_TEXTURESTAGE(stage, state)); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetTextureStageState(IWineD3DDevice *iface, DWORD Stage, WINED3DTEXTURESTAGESTATETYPE Type, DWORD *pValue) +HRESULT CDECL wined3d_device_get_texture_stage_state(IWineD3DDevice *iface, + DWORD stage, WINED3DTEXTURESTAGESTATETYPE state, DWORD *value) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - TRACE("iface %p, stage %u, state %s, value %p.\n", - iface, Stage, debug_d3dtexturestate(Type), pValue); + TRACE("device %p, stage %u, state %s, value %p.\n", + device, stage, debug_d3dtexturestate(state), value); - if (Type > WINED3D_HIGHEST_TEXTURE_STATE) + if (state > WINED3D_HIGHEST_TEXTURE_STATE) { - WARN("Invalid Type %d passed.\n", Type); + WARN("Invalid state %#x passed.\n", state); return WINED3D_OK; } - *pValue = This->updateStateBlock->state.texture_states[Stage][Type]; - TRACE("Returning %#x.\n", *pValue); + *value = device->updateStateBlock->state.texture_states[stage][state]; + TRACE("Returning %#x.\n", *value); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, +HRESULT CDECL wined3d_device_set_texture(IWineD3DDevice *iface, DWORD stage, struct wined3d_texture *texture) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - const struct wined3d_gl_info *gl_info = &This->adapter->gl_info; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; struct wined3d_texture *prev; TRACE("iface %p, stage %u, texture %p.\n", iface, stage, texture); @@ -3767,7 +3798,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, stage -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS); /* Windows accepts overflowing this array... we do not. */ - if (stage >= sizeof(This->stateBlock->state.textures) / sizeof(*This->stateBlock->state.textures)) + if (stage >= sizeof(device->stateBlock->state.textures) / sizeof(*device->stateBlock->state.textures)) { WARN("Ignoring invalid stage %u.\n", stage); return WINED3D_OK; @@ -3780,9 +3811,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, return WINED3DERR_INVALIDCALL; } - This->updateStateBlock->changed.textures |= 1 << stage; + device->updateStateBlock->changed.textures |= 1 << stage; - prev = This->updateStateBlock->state.textures[stage]; + prev = device->updateStateBlock->state.textures[stage]; TRACE("Previous texture %p.\n", prev); if (texture == prev) @@ -3792,9 +3823,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, } TRACE("Setting new texture to %p.\n", texture); - This->updateStateBlock->state.textures[stage] = texture; + device->updateStateBlock->state.textures[stage] = texture; - if (This->isRecordingState) + if (device->isRecordingState) { TRACE("Recording... not performing anything\n"); @@ -3811,15 +3842,15 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, wined3d_texture_incref(texture); if (!prev || texture->target != prev->target) - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADER); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_PIXELSHADER); if (!prev && stage < gl_info->limits.texture_stages) { /* The source arguments for color and alpha ops have different * meanings when a NULL texture is bound, so the COLOROP and * ALPHAOP have to be dirtified. */ - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(stage, WINED3DTSS_COLOROP)); - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(stage, WINED3DTSS_ALPHAOP)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_TEXTURESTAGE(stage, WINED3DTSS_COLOROP)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_TEXTURESTAGE(stage, WINED3DTSS_ALPHAOP)); } if (bind_count == 1) @@ -3834,8 +3865,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, if (!texture && stage < gl_info->limits.texture_stages) { - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(stage, WINED3DTSS_COLOROP)); - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_TEXTURESTAGE(stage, WINED3DTSS_ALPHAOP)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_TEXTURESTAGE(stage, WINED3DTSS_COLOROP)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_TEXTURESTAGE(stage, WINED3DTSS_ALPHAOP)); } if (bind_count && prev->sampler == stage) @@ -3847,7 +3878,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, TRACE("Searching for other stages the texture is bound to.\n"); for (i = 0; i < MAX_COMBINED_SAMPLERS; ++i) { - if (This->updateStateBlock->state.textures[i] == prev) + if (device->updateStateBlock->state.textures[i] == prev) { TRACE("Texture is also bound to stage %u.\n", i); prev->sampler = i; @@ -3857,28 +3888,28 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, } } - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(stage)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_SAMPLER(stage)); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetTexture(IWineD3DDevice *iface, +HRESULT CDECL wined3d_device_get_texture(IWineD3DDevice *iface, DWORD stage, struct wined3d_texture **texture) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - TRACE("iface %p, stage %u, texture %p.\n", iface, stage, texture); + TRACE("device %p, stage %u, texture %p.\n", device, stage, texture); if (stage >= WINED3DVERTEXTEXTURESAMPLER0 && stage <= WINED3DVERTEXTEXTURESAMPLER3) stage -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS); - if (stage >= sizeof(This->stateBlock->state.textures) / sizeof(*This->stateBlock->state.textures)) + if (stage >= sizeof(device->stateBlock->state.textures) / sizeof(*device->stateBlock->state.textures)) { - WARN("Current stage overflows textures array (stage %u).\n", stage); + WARN("Ignoring invalid stage %u.\n", stage); return WINED3D_OK; /* Windows accepts overflowing this array ... we do not. */ } - *texture = This->stateBlock->state.textures[stage]; + *texture = device->stateBlock->state.textures[stage]; if (*texture) wined3d_texture_incref(*texture); @@ -4592,136 +4623,160 @@ static void dirtify_p8_texture_samplers(IWineD3DDeviceImpl *device) } } -static HRESULT WINAPI IWineD3DDeviceImpl_SetPaletteEntries(IWineD3DDevice *iface, - UINT PaletteNumber, const PALETTEENTRY *pEntries) +HRESULT CDECL wined3d_device_set_palette_entries(IWineD3DDevice *iface, + UINT palette_idx, const PALETTEENTRY *entries) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - int j; - UINT NewSize; - PALETTEENTRY **palettes; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT i; - TRACE("(%p) : PaletteNumber %u\n", This, PaletteNumber); + TRACE("device %p, palette_idx %u, entries %p.\n", device, palette_idx, entries); - if (PaletteNumber >= MAX_PALETTES) { - ERR("(%p) : (%u) Out of range 0-%u, returning Invalid Call\n", This, PaletteNumber, MAX_PALETTES); + if (palette_idx >= MAX_PALETTES) + { + WARN("Invalid palette index %u.\n", palette_idx); return WINED3DERR_INVALIDCALL; } - if (PaletteNumber >= This->palette_count) + if (palette_idx >= device->palette_count) { - NewSize = This->palette_count; - do { - NewSize *= 2; - } while(PaletteNumber >= NewSize); - palettes = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, This->palettes, sizeof(PALETTEENTRY*) * NewSize); - if (!palettes) { + UINT new_size = device->palette_count; + PALETTEENTRY **palettes; + + do + { + new_size *= 2; + } while (palette_idx >= new_size); + palettes = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, device->palettes, sizeof(*palettes) * new_size); + if (!palettes) + { ERR("Out of memory!\n"); return E_OUTOFMEMORY; } - This->palettes = palettes; - This->palette_count = NewSize; + device->palettes = palettes; + device->palette_count = new_size; } - if (!This->palettes[PaletteNumber]) { - This->palettes[PaletteNumber] = HeapAlloc(GetProcessHeap(), 0, sizeof(PALETTEENTRY) * 256); - if (!This->palettes[PaletteNumber]) { + if (!device->palettes[palette_idx]) + { + device->palettes[palette_idx] = HeapAlloc(GetProcessHeap(), 0, sizeof(PALETTEENTRY) * 256); + if (!device->palettes[palette_idx]) + { ERR("Out of memory!\n"); return E_OUTOFMEMORY; } } - for (j = 0; j < 256; ++j) { - This->palettes[PaletteNumber][j].peRed = pEntries[j].peRed; - This->palettes[PaletteNumber][j].peGreen = pEntries[j].peGreen; - This->palettes[PaletteNumber][j].peBlue = pEntries[j].peBlue; - This->palettes[PaletteNumber][j].peFlags = pEntries[j].peFlags; + for (i = 0; i < 256; ++i) + { + device->palettes[palette_idx][i].peRed = entries[i].peRed; + device->palettes[palette_idx][i].peGreen = entries[i].peGreen; + device->palettes[palette_idx][i].peBlue = entries[i].peBlue; + device->palettes[palette_idx][i].peFlags = entries[i].peFlags; } - if (PaletteNumber == This->currentPalette) dirtify_p8_texture_samplers(This); - TRACE("(%p) : returning\n", This); + + if (palette_idx == device->currentPalette) + dirtify_p8_texture_samplers(device); + return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetPaletteEntries(IWineD3DDevice *iface, - UINT PaletteNumber, PALETTEENTRY *pEntries) +HRESULT CDECL wined3d_device_get_palette_entries(IWineD3DDevice *iface, + UINT palette_idx, PALETTEENTRY *entries) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - int j; - TRACE("(%p) : PaletteNumber %u\n", This, PaletteNumber); + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + UINT i; - if (PaletteNumber >= This->palette_count || !This->palettes[PaletteNumber]) + TRACE("device %p, palette_idx %u, entries %p.\n", device, palette_idx, entries); + + if (palette_idx >= device->palette_count || !device->palettes[palette_idx]) { - /* What happens in such situation isn't documented; Native seems to silently abort - on such conditions. Return Invalid Call. */ - ERR("(%p) : (%u) Nonexistent palette. Palette count %u.\n", This, PaletteNumber, This->palette_count); + /* What happens in such situation isn't documented; Native seems to + * silently abort on such conditions. */ + WARN("Invalid palette index %u.\n", palette_idx); return WINED3DERR_INVALIDCALL; } - for (j = 0; j < 256; ++j) { - pEntries[j].peRed = This->palettes[PaletteNumber][j].peRed; - pEntries[j].peGreen = This->palettes[PaletteNumber][j].peGreen; - pEntries[j].peBlue = This->palettes[PaletteNumber][j].peBlue; - pEntries[j].peFlags = This->palettes[PaletteNumber][j].peFlags; + + for (i = 0; i < 256; ++i) + { + entries[i].peRed = device->palettes[palette_idx][i].peRed; + entries[i].peGreen = device->palettes[palette_idx][i].peGreen; + entries[i].peBlue = device->palettes[palette_idx][i].peBlue; + entries[i].peFlags = device->palettes[palette_idx][i].peFlags; } - TRACE("(%p) : returning\n", This); + return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetCurrentTexturePalette(IWineD3DDevice *iface, UINT PaletteNumber) +HRESULT CDECL wined3d_device_set_current_texture_palette(IWineD3DDevice *iface, UINT palette_idx) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - TRACE("(%p) : PaletteNumber %u\n", This, PaletteNumber); - /* Native appears to silently abort on attempt to make an uninitialized palette current and render. - (tested with reference rasterizer). Return Invalid Call. */ - if (PaletteNumber >= This->palette_count || !This->palettes[PaletteNumber]) + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + + TRACE("device %p, palette_idx %u.\n", device, palette_idx); + + /* Native appears to silently abort on attempt to make an uninitialized + * palette current and render. (tested with reference rasterizer). */ + if (palette_idx >= device->palette_count || !device->palettes[palette_idx]) { - ERR("(%p) : (%u) Nonexistent palette. Palette count %u.\n", This, PaletteNumber, This->palette_count); + WARN("Invalid palette index %u.\n", palette_idx); return WINED3DERR_INVALIDCALL; } - /*TODO: stateblocks */ - if (This->currentPalette != PaletteNumber) { - This->currentPalette = PaletteNumber; - dirtify_p8_texture_samplers(This); + + /* TODO: stateblocks? */ + if (device->currentPalette != palette_idx) + { + device->currentPalette = palette_idx; + dirtify_p8_texture_samplers(device); } - TRACE("(%p) : returning\n", This); + return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetCurrentTexturePalette(IWineD3DDevice *iface, UINT* PaletteNumber) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +HRESULT CDECL wined3d_device_get_current_texture_palette(IWineD3DDevice *iface, UINT *palette_idx) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - if (!PaletteNumber) - { - WARN("(%p) : returning Invalid Call\n", This); + TRACE("device %p, palette_idx %p.\n", device, palette_idx); + + if (!palette_idx) return WINED3DERR_INVALIDCALL; - } - /*TODO: stateblocks */ - *PaletteNumber = This->currentPalette; - TRACE("(%p) : returning %u\n", This, *PaletteNumber); + + *palette_idx = device->currentPalette; + return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetSoftwareVertexProcessing(IWineD3DDevice *iface, BOOL bSoftware) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +HRESULT CDECL wined3d_device_set_software_vertex_processing(IWineD3DDevice *iface, BOOL software) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; static BOOL warned; + + TRACE("device %p, software %#x.\n", device, software); + if (!warned) { - FIXME("(%p) : stub\n", This); + FIXME("device %p, software %#x stub!\n", device, software); warned = TRUE; } - This->softwareVertexProcessing = bSoftware; + device->softwareVertexProcessing = software; + return WINED3D_OK; } - -static BOOL WINAPI IWineD3DDeviceImpl_GetSoftwareVertexProcessing(IWineD3DDevice *iface) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +BOOL CDECL wined3d_device_get_software_vertex_processing(IWineD3DDevice *iface) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; static BOOL warned; + + TRACE("device %p.\n", device); + if (!warned) { - FIXME("(%p) : stub\n", This); + TRACE("device %p stub!\n", device); warned = TRUE; } - return This->softwareVertexProcessing; + + return device->softwareVertexProcessing; } static HRESULT WINAPI IWineD3DDeviceImpl_GetRasterStatus(IWineD3DDevice *iface, @@ -4751,27 +4806,36 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetRasterStatus(IWineD3DDevice *iface, return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetNPatchMode(IWineD3DDevice *iface, float nSegments) +HRESULT CDECL wined3d_device_set_npatch_mode(IWineD3DDevice *iface, float segments) { static BOOL warned; - if(nSegments != 0.0f) { + + TRACE("iface %p, segments %.8e.\n", iface, segments); + + if (segments != 0.0f) + { if (!warned) { - FIXME("iface %p, nSegments %.8e stub!\n", iface, nSegments); + FIXME("iface %p, segments %.8e stub!\n", iface, segments); warned = TRUE; } } + return WINED3D_OK; } -static float WINAPI IWineD3DDeviceImpl_GetNPatchMode(IWineD3DDevice *iface) +float CDECL wined3d_device_get_npatch_mode(IWineD3DDevice *iface) { static BOOL warned; + + TRACE("iface %p.\n", iface); + if (!warned) { FIXME("iface %p stub!\n", iface); warned = TRUE; } + return 0.0f; } @@ -5070,8 +5134,7 @@ static void WINAPI IWineD3DDeviceImpl_ClearRendertargetView(IWineD3DDevice *ifac if (FAILED(hr)) ERR("Color fill failed, hr %#x.\n", hr); } -/* rendertarget and depth stencil functions */ -static HRESULT WINAPI IWineD3DDeviceImpl_GetRenderTarget(IWineD3DDevice *iface, +HRESULT CDECL wined3d_device_get_render_target(IWineD3DDevice *iface, DWORD render_target_idx, struct wined3d_surface **render_target) { IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; @@ -5094,29 +5157,31 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetRenderTarget(IWineD3DDevice *iface, return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetDepthStencilSurface(IWineD3DDevice *iface, - struct wined3d_surface **depth_stencil) +HRESULT CDECL wined3d_device_get_depth_stencil(IWineD3DDevice *iface, struct wined3d_surface **depth_stencil) { IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; - TRACE("iface %p, depth_stencil %p.\n", iface, depth_stencil); + TRACE("device %p, depth_stencil %p.\n", device, depth_stencil); *depth_stencil = device->depth_stencil; TRACE("Returning depth/stencil surface %p.\n", *depth_stencil); - if (!*depth_stencil) return WINED3DERR_NOTFOUND; + + if (!*depth_stencil) + return WINED3DERR_NOTFOUND; + wined3d_surface_incref(*depth_stencil); return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetRenderTarget(IWineD3DDevice *iface, +HRESULT CDECL wined3d_device_set_render_target(IWineD3DDevice *iface, DWORD render_target_idx, struct wined3d_surface *render_target, BOOL set_viewport) { IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_surface *prev; - TRACE("iface %p, render_target_idx %u, render_target %p, set_viewport %#x.\n", - iface, render_target_idx, render_target, set_viewport); + TRACE("device %p, render_target_idx %u, render_target %p, set_viewport %#x.\n", + device, render_target_idx, render_target, set_viewport); if (render_target_idx >= device->adapter->gl_info.limits.buffers) { @@ -5176,54 +5241,54 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetRenderTarget(IWineD3DDevice *iface, return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_SetDepthStencilSurface(IWineD3DDevice *iface, - struct wined3d_surface *depth_stencil) +HRESULT CDECL wined3d_device_set_depth_stencil(IWineD3DDevice *iface, struct wined3d_surface *depth_stencil) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; struct wined3d_surface *tmp; - TRACE("device %p, depth_stencil %p, old depth_stencil %p.\n", This, depth_stencil, This->depth_stencil); + TRACE("device %p, depth_stencil %p, old depth_stencil %p.\n", + device, depth_stencil, device->depth_stencil); - if (This->depth_stencil == depth_stencil) + if (device->depth_stencil == depth_stencil) { TRACE("Trying to do a NOP SetRenderTarget operation.\n"); return WINED3D_OK; } - if (This->depth_stencil) + if (device->depth_stencil) { - if (This->swapchains[0]->presentParms.Flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL - || This->depth_stencil->flags & SFLAG_DISCARD) + if (device->swapchains[0]->presentParms.Flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL + || device->depth_stencil->flags & SFLAG_DISCARD) { - surface_modify_ds_location(This->depth_stencil, SFLAG_DS_DISCARDED, - This->depth_stencil->resource.width, - This->depth_stencil->resource.height); - if (This->depth_stencil == This->onscreen_depth_stencil) + surface_modify_ds_location(device->depth_stencil, SFLAG_DS_DISCARDED, + device->depth_stencil->resource.width, + device->depth_stencil->resource.height); + if (device->depth_stencil == device->onscreen_depth_stencil) { - wined3d_surface_decref(This->onscreen_depth_stencil); - This->onscreen_depth_stencil = NULL; + wined3d_surface_decref(device->onscreen_depth_stencil); + device->onscreen_depth_stencil = NULL; } } } - tmp = This->depth_stencil; - This->depth_stencil = depth_stencil; - if (This->depth_stencil) - wined3d_surface_incref(This->depth_stencil); + tmp = device->depth_stencil; + device->depth_stencil = depth_stencil; + if (device->depth_stencil) + wined3d_surface_incref(device->depth_stencil); if (tmp) wined3d_surface_decref(tmp); if ((!tmp && depth_stencil) || (!depth_stencil && tmp)) { /* Swapping NULL / non NULL depth stencil affects the depth and tests */ - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_ZENABLE)); - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_STENCILENABLE)); - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_STENCILWRITEMASK)); - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_DEPTHBIAS)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_ZENABLE)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_STENCILENABLE)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_STENCILWRITEMASK)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_DEPTHBIAS)); } - else if (tmp && tmp->resource.format->depth_size != This->depth_stencil->resource.format->depth_size) + else if (tmp && tmp->resource.format->depth_size != device->depth_stencil->resource.format->depth_size) { - IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_DEPTHBIAS)); + IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_DEPTHBIAS)); } return WINED3D_OK; @@ -5756,9 +5821,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Reset(IWineD3DDevice *iface, /* Reset the depth stencil */ if (pPresentationParameters->EnableAutoDepthStencil) - IWineD3DDevice_SetDepthStencilSurface(iface, This->auto_depth_stencil); + wined3d_device_set_depth_stencil(iface, This->auto_depth_stencil); else - IWineD3DDevice_SetDepthStencilSurface(iface, NULL); + wined3d_device_set_depth_stencil(iface, NULL); TRACE("Resetting stateblock\n"); wined3d_stateblock_decref(This->updateStateBlock); @@ -5935,29 +6000,31 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetCreationParameters(IWineD3DDevice return WINED3D_OK; } -static void WINAPI IWineD3DDeviceImpl_SetGammaRamp(IWineD3DDevice *iface, - UINT iSwapChain, DWORD flags, const WINED3DGAMMARAMP *pRamp) +void CDECL wined3d_device_set_gamma_ramp(IWineD3DDevice *iface, + UINT swapchain_idx, DWORD flags, const WINED3DGAMMARAMP *ramp) { struct wined3d_swapchain *swapchain; - TRACE("Relaying to swapchain\n"); + TRACE("iface %p, swapchain_idx %u, flags %#x, ramp %p.\n", + iface, swapchain_idx, flags, ramp); - if (SUCCEEDED(IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapchain))) + if (SUCCEEDED(IWineD3DDeviceImpl_GetSwapChain(iface, swapchain_idx, &swapchain))) { - wined3d_swapchain_set_gamma_ramp(swapchain, flags, pRamp); + wined3d_swapchain_set_gamma_ramp(swapchain, flags, ramp); wined3d_swapchain_decref(swapchain); } } -static void WINAPI IWineD3DDeviceImpl_GetGammaRamp(IWineD3DDevice *iface, UINT iSwapChain, WINED3DGAMMARAMP* pRamp) +void CDECL wined3d_device_get_gamma_ramp(IWineD3DDevice *iface, UINT swapchain_idx, WINED3DGAMMARAMP *ramp) { struct wined3d_swapchain *swapchain; - TRACE("Relaying to swapchain\n"); + TRACE("iface %p, swapchain_idx %u, ramp %p.\n", + iface, swapchain_idx, ramp); - if (SUCCEEDED(IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapchain))) + if (SUCCEEDED(IWineD3DDeviceImpl_GetSwapChain(iface, swapchain_idx, &swapchain))) { - wined3d_swapchain_get_gamma_ramp(swapchain, pRamp); + wined3d_swapchain_get_gamma_ramp(swapchain, ramp); wined3d_swapchain_decref(swapchain); } } @@ -6162,71 +6229,6 @@ static const IWineD3DDeviceVtbl IWineD3DDevice_Vtbl = IWineD3DDeviceImpl_SetCursorProperties, IWineD3DDeviceImpl_SetCursorPosition, IWineD3DDeviceImpl_ShowCursor, - /*** Getters and setters **/ - IWineD3DDeviceImpl_SetClipPlane, - IWineD3DDeviceImpl_GetClipPlane, - IWineD3DDeviceImpl_SetClipStatus, - IWineD3DDeviceImpl_GetClipStatus, - IWineD3DDeviceImpl_SetCurrentTexturePalette, - IWineD3DDeviceImpl_GetCurrentTexturePalette, - IWineD3DDeviceImpl_SetDepthStencilSurface, - IWineD3DDeviceImpl_GetDepthStencilSurface, - IWineD3DDeviceImpl_SetGammaRamp, - IWineD3DDeviceImpl_GetGammaRamp, - IWineD3DDeviceImpl_SetIndexBuffer, - IWineD3DDeviceImpl_GetIndexBuffer, - IWineD3DDeviceImpl_SetBaseVertexIndex, - IWineD3DDeviceImpl_GetBaseVertexIndex, - IWineD3DDeviceImpl_SetLight, - IWineD3DDeviceImpl_GetLight, - IWineD3DDeviceImpl_SetLightEnable, - IWineD3DDeviceImpl_GetLightEnable, - IWineD3DDeviceImpl_SetMaterial, - IWineD3DDeviceImpl_GetMaterial, - IWineD3DDeviceImpl_SetNPatchMode, - IWineD3DDeviceImpl_GetNPatchMode, - IWineD3DDeviceImpl_SetPaletteEntries, - IWineD3DDeviceImpl_GetPaletteEntries, - IWineD3DDeviceImpl_SetPixelShader, - IWineD3DDeviceImpl_GetPixelShader, - IWineD3DDeviceImpl_SetPixelShaderConstantB, - IWineD3DDeviceImpl_GetPixelShaderConstantB, - IWineD3DDeviceImpl_SetPixelShaderConstantI, - IWineD3DDeviceImpl_GetPixelShaderConstantI, - IWineD3DDeviceImpl_SetPixelShaderConstantF, - IWineD3DDeviceImpl_GetPixelShaderConstantF, - IWineD3DDeviceImpl_SetRenderState, - IWineD3DDeviceImpl_GetRenderState, - IWineD3DDeviceImpl_SetRenderTarget, - IWineD3DDeviceImpl_GetRenderTarget, - IWineD3DDeviceImpl_SetSamplerState, - IWineD3DDeviceImpl_GetSamplerState, - IWineD3DDeviceImpl_SetScissorRect, - IWineD3DDeviceImpl_GetScissorRect, - IWineD3DDeviceImpl_SetSoftwareVertexProcessing, - IWineD3DDeviceImpl_GetSoftwareVertexProcessing, - IWineD3DDeviceImpl_SetStreamSource, - IWineD3DDeviceImpl_GetStreamSource, - IWineD3DDeviceImpl_SetStreamSourceFreq, - IWineD3DDeviceImpl_GetStreamSourceFreq, - IWineD3DDeviceImpl_SetTexture, - IWineD3DDeviceImpl_GetTexture, - IWineD3DDeviceImpl_SetTextureStageState, - IWineD3DDeviceImpl_GetTextureStageState, - IWineD3DDeviceImpl_SetTransform, - IWineD3DDeviceImpl_GetTransform, - IWineD3DDeviceImpl_SetVertexDeclaration, - IWineD3DDeviceImpl_GetVertexDeclaration, - IWineD3DDeviceImpl_SetVertexShader, - IWineD3DDeviceImpl_GetVertexShader, - IWineD3DDeviceImpl_SetVertexShaderConstantB, - IWineD3DDeviceImpl_GetVertexShaderConstantB, - IWineD3DDeviceImpl_SetVertexShaderConstantI, - IWineD3DDeviceImpl_GetVertexShaderConstantI, - IWineD3DDeviceImpl_SetVertexShaderConstantF, - IWineD3DDeviceImpl_GetVertexShaderConstantF, - IWineD3DDeviceImpl_SetViewport, - IWineD3DDeviceImpl_GetViewport, IWineD3DDeviceImpl_MultiplyTransform, IWineD3DDeviceImpl_ValidateDevice, IWineD3DDeviceImpl_ProcessVertices, diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index 8dfa232edb0..d979ed90d39 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -897,8 +897,8 @@ static void apply_lights(IWineD3DDevice *device, const struct wined3d_state *sta { const struct wined3d_light_info *light = LIST_ENTRY(e, struct wined3d_light_info, entry); - IWineD3DDevice_SetLight(device, light->OriginalIndex, &light->OriginalParms); - IWineD3DDevice_SetLightEnable(device, light->OriginalIndex, light->glIndex != -1); + wined3d_device_set_light(device, light->OriginalIndex, &light->OriginalParms); + wined3d_device_set_light_enable(device, light->OriginalIndex, light->glIndex != -1); } } } @@ -913,51 +913,51 @@ HRESULT CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblo TRACE("Blocktype: %#x.\n", stateblock->blockType); if (stateblock->changed.vertexShader) - IWineD3DDevice_SetVertexShader(device, stateblock->state.vertex_shader); + wined3d_device_set_vertex_shader(device, stateblock->state.vertex_shader); /* Vertex Shader Constants. */ for (i = 0; i < stateblock->num_contained_vs_consts_f; ++i) { - IWineD3DDevice_SetVertexShaderConstantF(device, stateblock->contained_vs_consts_f[i], + wined3d_device_set_vs_consts_f(device, stateblock->contained_vs_consts_f[i], stateblock->state.vs_consts_f + stateblock->contained_vs_consts_f[i] * 4, 1); } for (i = 0; i < stateblock->num_contained_vs_consts_i; ++i) { - IWineD3DDevice_SetVertexShaderConstantI(device, stateblock->contained_vs_consts_i[i], + wined3d_device_set_vs_consts_i(device, stateblock->contained_vs_consts_i[i], stateblock->state.vs_consts_i + stateblock->contained_vs_consts_i[i] * 4, 1); } for (i = 0; i < stateblock->num_contained_vs_consts_b; ++i) { - IWineD3DDevice_SetVertexShaderConstantB(device, stateblock->contained_vs_consts_b[i], + wined3d_device_set_vs_consts_b(device, stateblock->contained_vs_consts_b[i], stateblock->state.vs_consts_b + stateblock->contained_vs_consts_b[i], 1); } apply_lights(device, &stateblock->state); if (stateblock->changed.pixelShader) - IWineD3DDevice_SetPixelShader(device, stateblock->state.pixel_shader); + wined3d_device_set_pixel_shader(device, stateblock->state.pixel_shader); /* Pixel Shader Constants. */ for (i = 0; i < stateblock->num_contained_ps_consts_f; ++i) { - IWineD3DDevice_SetPixelShaderConstantF(device, stateblock->contained_ps_consts_f[i], + wined3d_device_set_ps_consts_f(device, stateblock->contained_ps_consts_f[i], stateblock->state.ps_consts_f + stateblock->contained_ps_consts_f[i] * 4, 1); } for (i = 0; i < stateblock->num_contained_ps_consts_i; ++i) { - IWineD3DDevice_SetPixelShaderConstantI(device, stateblock->contained_ps_consts_i[i], + wined3d_device_set_ps_consts_i(device, stateblock->contained_ps_consts_i[i], stateblock->state.ps_consts_i + stateblock->contained_ps_consts_i[i] * 4, 1); } for (i = 0; i < stateblock->num_contained_ps_consts_b; ++i) { - IWineD3DDevice_SetPixelShaderConstantB(device, stateblock->contained_ps_consts_b[i], + wined3d_device_set_ps_consts_b(device, stateblock->contained_ps_consts_b[i], stateblock->state.ps_consts_b + stateblock->contained_ps_consts_b[i], 1); } /* Render states. */ for (i = 0; i < stateblock->num_contained_render_states; ++i) { - IWineD3DDevice_SetRenderState(device, stateblock->contained_render_states[i], + wined3d_device_set_render_state(device, stateblock->contained_render_states[i], stateblock->state.render_states[stateblock->contained_render_states[i]]); } @@ -967,7 +967,7 @@ HRESULT CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblo DWORD stage = stateblock->contained_tss_states[i].stage; DWORD state = stateblock->contained_tss_states[i].state; - IWineD3DDevice_SetTextureStageState(device, stage, state, stateblock->state.texture_states[stage][state]); + wined3d_device_set_texture_stage_state(device, stage, state, stateblock->state.texture_states[stage][state]); } /* Sampler states. */ @@ -978,13 +978,13 @@ HRESULT CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblo DWORD value = stateblock->state.sampler_states[stage][state]; if (stage >= MAX_FRAGMENT_SAMPLERS) stage += WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS; - IWineD3DDevice_SetSamplerState(device, stage, state, value); + wined3d_device_set_sampler_state(device, stage, state, value); } /* Transform states. */ for (i = 0; i < stateblock->num_contained_transform_states; ++i) { - IWineD3DDevice_SetTransform(device, stateblock->contained_transform_states[i], + wined3d_device_set_transform(device, stateblock->contained_transform_states[i], &stateblock->state.transforms[stateblock->contained_transform_states[i]]); } @@ -996,35 +996,27 @@ HRESULT CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblo if (stateblock->changed.indices) { - IWineD3DDevice_SetIndexBuffer(device, stateblock->state.index_buffer, stateblock->state.index_format); - IWineD3DDevice_SetBaseVertexIndex(device, stateblock->state.base_vertex_index); + wined3d_device_set_index_buffer(device, stateblock->state.index_buffer, stateblock->state.index_format); + wined3d_device_set_base_vertex_index(device, stateblock->state.base_vertex_index); } if (stateblock->changed.vertexDecl && stateblock->state.vertex_declaration) - { - IWineD3DDevice_SetVertexDeclaration(device, stateblock->state.vertex_declaration); - } + wined3d_device_set_vertex_declaration(device, stateblock->state.vertex_declaration); if (stateblock->changed.material) - { - IWineD3DDevice_SetMaterial(device, &stateblock->state.material); - } + wined3d_device_set_material(device, &stateblock->state.material); if (stateblock->changed.viewport) - { - IWineD3DDevice_SetViewport(device, &stateblock->state.viewport); - } + wined3d_device_set_viewport(device, &stateblock->state.viewport); if (stateblock->changed.scissorRect) - { - IWineD3DDevice_SetScissorRect(device, &stateblock->state.scissor_rect); - } + wined3d_device_set_scissor_rect(device, &stateblock->state.scissor_rect); map = stateblock->changed.streamSource; for (i = 0; map; map >>= 1, ++i) { if (map & 1) - IWineD3DDevice_SetStreamSource(device, i, + wined3d_device_set_stream_source(device, i, stateblock->state.streams[i].buffer, 0, stateblock->state.streams[i].stride); } @@ -1033,7 +1025,7 @@ HRESULT CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblo for (i = 0; map; map >>= 1, ++i) { if (map & 1) - IWineD3DDevice_SetStreamSourceFreq(device, i, + wined3d_device_set_stream_source_freq(device, i, stateblock->state.streams[i].frequency | stateblock->state.streams[i].flags); } @@ -1045,7 +1037,7 @@ HRESULT CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblo if (!(map & 1)) continue; stage = i < MAX_FRAGMENT_SAMPLERS ? i : WINED3DVERTEXTEXTURESAMPLER0 + i - MAX_FRAGMENT_SAMPLERS; - IWineD3DDevice_SetTexture(device, stage, stateblock->state.textures[i]); + wined3d_device_set_texture(device, stage, stateblock->state.textures[i]); } map = stateblock->changed.clipplane; @@ -1059,7 +1051,7 @@ HRESULT CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblo clip[1] = (float) stateblock->state.clip_planes[i][1]; clip[2] = (float) stateblock->state.clip_planes[i][2]; clip[3] = (float) stateblock->state.clip_planes[i][3]; - IWineD3DDevice_SetClipPlane(device, i, clip); + wined3d_device_set_clip_plane(device, i, clip); } stateblock->device->stateBlock->state.lowest_disabled_stage = MAX_TEXTURES - 1; diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 283d9fa626a..41858943d8a 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -45,6 +45,70 @@ @ cdecl wined3d_clipper_set_window(ptr long ptr) @ cdecl wined3d_device_create(ptr long long ptr long ptr ptr) +@ cdecl wined3d_device_get_base_vertex_index(ptr) +@ cdecl wined3d_device_get_clip_plane(ptr long ptr) +@ cdecl wined3d_device_get_clip_status(ptr ptr) +@ cdecl wined3d_device_get_current_texture_palette(ptr ptr) +@ cdecl wined3d_device_get_depth_stencil(ptr ptr) +@ cdecl wined3d_device_get_gamma_ramp(ptr long ptr) +@ cdecl wined3d_device_get_index_buffer(ptr ptr) +@ cdecl wined3d_device_get_light(ptr long ptr) +@ cdecl wined3d_device_get_light_enable(ptr long ptr) +@ cdecl wined3d_device_get_material(ptr ptr) +@ cdecl wined3d_device_get_npatch_mode(ptr) +@ cdecl wined3d_device_get_palette_entries(ptr long ptr) +@ cdecl wined3d_device_get_pixel_shader(ptr) +@ cdecl wined3d_device_get_ps_consts_b(ptr long ptr long) +@ cdecl wined3d_device_get_ps_consts_f(ptr long ptr long) +@ cdecl wined3d_device_get_ps_consts_i(ptr long ptr long) +@ cdecl wined3d_device_get_render_state(ptr long ptr) +@ cdecl wined3d_device_get_render_target(ptr long ptr) +@ cdecl wined3d_device_get_sampler_state(ptr long long ptr) +@ cdecl wined3d_device_get_scissor_rect(ptr ptr) +@ cdecl wined3d_device_get_software_vertex_processing(ptr) +@ cdecl wined3d_device_get_stream_source(ptr long ptr ptr ptr) +@ cdecl wined3d_device_get_stream_source_freq(ptr long ptr) +@ cdecl wined3d_device_get_texture(ptr long ptr) +@ cdecl wined3d_device_get_texture_stage_state(ptr long long ptr) +@ cdecl wined3d_device_get_transform(ptr long ptr) +@ cdecl wined3d_device_get_vertex_declaration(ptr ptr) +@ cdecl wined3d_device_get_vertex_shader(ptr) +@ cdecl wined3d_device_get_viewport(ptr ptr) +@ cdecl wined3d_device_get_vs_consts_b(ptr long ptr long) +@ cdecl wined3d_device_get_vs_consts_f(ptr long ptr long) +@ cdecl wined3d_device_get_vs_consts_i(ptr long ptr long) +@ cdecl wined3d_device_set_base_vertex_index(ptr long) +@ cdecl wined3d_device_set_clip_plane(ptr long ptr) +@ cdecl wined3d_device_set_clip_status(ptr ptr) +@ cdecl wined3d_device_set_current_texture_palette(ptr long) +@ cdecl wined3d_device_set_depth_stencil(ptr ptr) +@ cdecl wined3d_device_set_gamma_ramp(ptr long long ptr) +@ cdecl wined3d_device_set_index_buffer(ptr ptr long) +@ cdecl wined3d_device_set_light(ptr long ptr) +@ cdecl wined3d_device_set_light_enable(ptr long long) +@ cdecl wined3d_device_set_material(ptr ptr) +@ cdecl wined3d_device_set_npatch_mode(ptr float) +@ cdecl wined3d_device_set_palette_entries(ptr long ptr) +@ cdecl wined3d_device_set_pixel_shader(ptr ptr) +@ cdecl wined3d_device_set_ps_consts_b(ptr long ptr long) +@ cdecl wined3d_device_set_ps_consts_f(ptr long ptr long) +@ cdecl wined3d_device_set_ps_consts_i(ptr long ptr long) +@ cdecl wined3d_device_set_render_state(ptr long long) +@ cdecl wined3d_device_set_render_target(ptr long ptr long) +@ cdecl wined3d_device_set_sampler_state(ptr long long long) +@ cdecl wined3d_device_set_scissor_rect(ptr ptr) +@ cdecl wined3d_device_set_software_vertex_processing(ptr long) +@ cdecl wined3d_device_set_stream_source(ptr long ptr long long) +@ cdecl wined3d_device_set_stream_source_freq(ptr long long) +@ cdecl wined3d_device_set_texture(ptr long ptr) +@ cdecl wined3d_device_set_texture_stage_state(ptr long long long) +@ cdecl wined3d_device_set_transform(ptr long ptr) +@ cdecl wined3d_device_set_vertex_declaration(ptr ptr) +@ cdecl wined3d_device_set_vertex_shader(ptr ptr) +@ cdecl wined3d_device_set_viewport(ptr ptr) +@ cdecl wined3d_device_set_vs_consts_b(ptr long ptr long) +@ cdecl wined3d_device_set_vs_consts_f(ptr long ptr long) +@ cdecl wined3d_device_set_vs_consts_i(ptr long ptr long) @ cdecl wined3d_palette_create(ptr long ptr ptr ptr) @ cdecl wined3d_palette_decref(ptr) diff --git a/include/wine/wined3d.idl b/include/wine/wined3d.idl index 26ed5c63a39..79d4b3a800a 100644 --- a/include/wine/wined3d.idl +++ b/include/wine/wined3d.idl @@ -2238,255 +2238,6 @@ interface IWineD3DDevice : IUnknown BOOL ShowCursor( [in] BOOL show ); - HRESULT SetClipPlane( - [in] DWORD plane_idx, - [in] const float *plane - ); - HRESULT GetClipPlane( - [in] DWORD plane_idx, - [out] float *plane - ); - HRESULT SetClipStatus( - [in] const WINED3DCLIPSTATUS *clip_status - ); - HRESULT GetClipStatus( - [out] WINED3DCLIPSTATUS *clip_status - ); - HRESULT SetCurrentTexturePalette( - [in] UINT palette_number - ); - HRESULT GetCurrentTexturePalette( - [out] UINT *palette_number - ); - HRESULT SetDepthStencilSurface( - [in] struct wined3d_surface *depth_stencil - ); - HRESULT GetDepthStencilSurface( - [out] struct wined3d_surface **depth_stencil - ); - void SetGammaRamp( - [in] UINT swapchain_idx, - [in] DWORD flags, - [in] const WINED3DGAMMARAMP *ramp - ); - void GetGammaRamp( - [in] UINT swapchain_idx, - [out] WINED3DGAMMARAMP *ramp - ); - HRESULT SetIndexBuffer( - [in] struct wined3d_buffer *index_buffer, - [in] enum wined3d_format_id format_id - ); - HRESULT GetIndexBuffer( - [out] struct wined3d_buffer **index_buffer - ); - HRESULT SetBaseVertexIndex( - [in] INT base_index - ); - HRESULT GetBaseVertexIndex( - [out] INT *base_index - ); - HRESULT SetLight( - [in] DWORD light_idx, - [in] const WINED3DLIGHT *light - ); - HRESULT GetLight( - [in] DWORD light_idx, - [out] WINED3DLIGHT *light - ); - HRESULT SetLightEnable( - [in] DWORD light_idx, - [in] BOOL enable - ); - HRESULT GetLightEnable( - [in] DWORD light_idx, - [out] BOOL *enable - ); - HRESULT SetMaterial( - [in] const WINED3DMATERIAL *material - ); - HRESULT GetMaterial( - [out] WINED3DMATERIAL *material - ); - HRESULT SetNPatchMode( - [in] float segments - ); - float GetNPatchMode( - ); - HRESULT SetPaletteEntries( - [in] UINT palette_number, - [in] const PALETTEENTRY *entries - ); - HRESULT GetPaletteEntries( - [in] UINT palette_number, - [out] PALETTEENTRY *entries - ); - HRESULT SetPixelShader( - [in] struct wined3d_shader *shader - ); - struct wined3d_shader *GetPixelShader( - ); - HRESULT SetPixelShaderConstantB( - [in] UINT start_register, - [in] const BOOL *constants, - [in] UINT bool_count - ); - HRESULT GetPixelShaderConstantB( - [in] UINT start_register, - [out] BOOL *constants, - [in] UINT bool_count - ); - HRESULT SetPixelShaderConstantI( - [in] UINT start_register, - [in] const int *constants, - [in] UINT vector4i_count - ); - HRESULT GetPixelShaderConstantI( - [in] UINT start_register, - [out] int *constants, - [in] UINT vector4i_count - ); - HRESULT SetPixelShaderConstantF( - [in] UINT start_register, - [in] const float *constants, - [in] UINT vector4f_count - ); - HRESULT GetPixelShaderConstantF( - [in] UINT start_register, - [out] float *constants, - [in] UINT vector4f_count - ); - HRESULT SetRenderState( - [in] WINED3DRENDERSTATETYPE state, - [in] DWORD value - ); - HRESULT GetRenderState( - [in] WINED3DRENDERSTATETYPE state, - [out] DWORD *value - ); - HRESULT SetRenderTarget( - [in] DWORD render_target_idx, - [in] struct wined3d_surface *render_target, - [in] BOOL set_viewport - ); - HRESULT GetRenderTarget( - [in] DWORD render_target_idx, - [out] struct wined3d_surface **render_target - ); - HRESULT SetSamplerState( - [in] DWORD sampler_idx, - [in] WINED3DSAMPLERSTATETYPE state, - [in] DWORD value - ); - HRESULT GetSamplerState( - [in] DWORD sampler_idx, - [in] WINED3DSAMPLERSTATETYPE state, - [out] DWORD *value - ); - HRESULT SetScissorRect( - [in] const RECT *rect - ); - HRESULT GetScissorRect( - [out] RECT *rect - ); - HRESULT SetSoftwareVertexProcessing( - [in] BOOL software - ); - BOOL GetSoftwareVertexProcessing( - ); - HRESULT SetStreamSource( - [in] UINT stream_idx, - [in] struct wined3d_buffer *buffer, - [in] UINT offset, - [in] UINT stride - ); - HRESULT GetStreamSource( - [in] UINT stream_idx, - [out] struct wined3d_buffer **buffer, - [out] UINT *offset, - [out] UINT *stride - ); - HRESULT SetStreamSourceFreq( - [in] UINT stream_idx, - [in] UINT divider - ); - HRESULT GetStreamSourceFreq( - [in] UINT stream_idx, - [out] UINT *divider - ); - HRESULT SetTexture( - [in] DWORD stage, - [in] struct wined3d_texture *texture - ); - HRESULT GetTexture( - [in] DWORD stage, - [out] struct wined3d_texture **texture - ); - HRESULT SetTextureStageState( - [in] DWORD stage, - [in] WINED3DTEXTURESTAGESTATETYPE state, - [in] DWORD value - ); - HRESULT GetTextureStageState( - [in] DWORD stage, - [in] WINED3DTEXTURESTAGESTATETYPE state, - [out] DWORD *value - ); - HRESULT SetTransform( - [in] WINED3DTRANSFORMSTATETYPE state, - [in] const WINED3DMATRIX *matrix - ); - HRESULT GetTransform( - [in] WINED3DTRANSFORMSTATETYPE state, - [out] WINED3DMATRIX *matrix - ); - HRESULT SetVertexDeclaration( - [in] struct wined3d_vertex_declaration *declaration - ); - HRESULT GetVertexDeclaration( - [out] struct wined3d_vertex_declaration **declaration - ); - HRESULT SetVertexShader( - [in] struct wined3d_shader *shader - ); - struct wined3d_shader *GetVertexShader( - ); - HRESULT SetVertexShaderConstantB( - [in] UINT start_register, - [in] const BOOL *constants, - [in] UINT bool_count - ); - HRESULT GetVertexShaderConstantB( - [in] UINT start_register, - [out] BOOL *constants, - [in] UINT bool_count - ); - HRESULT SetVertexShaderConstantI( - [in] UINT start_register, - [in] const int *constants, - [in] UINT vector4i_count - ); - HRESULT GetVertexShaderConstantI( - [in] UINT start_register, - [out] int *constants, - [in] UINT vector4i_count - ); - HRESULT SetVertexShaderConstantF( - [in] UINT start_register, - [in] const float *constants, - [in] UINT vector4f_count - ); - HRESULT GetVertexShaderConstantF( - [in] UINT start_register, - [out] float *constants, - [in] UINT vector4f_count - ); - HRESULT SetViewport( - [in] const WINED3DVIEWPORT *viewport - ); - HRESULT GetViewport( - [out] WINED3DVIEWPORT *viewport - ); HRESULT MultiplyTransform( [in] WINED3DTRANSFORMSTATETYPE state, [in] const WINED3DMATRIX *matrix @@ -2693,6 +2444,97 @@ HRESULT __cdecl wined3d_clipper_set_window(struct wined3d_clipper *clipper, DWOR HRESULT __cdecl wined3d_device_create(struct wined3d *wined3d, UINT adapter_idx, WINED3DDEVTYPE device_type, HWND focus_window, DWORD behaviour_flags, IWineD3DDeviceParent *device_parent, IWineD3DDevice **device); +INT __cdecl wined3d_device_get_base_vertex_index(IWineD3DDevice *device); +HRESULT __cdecl wined3d_device_get_clip_plane(IWineD3DDevice *device, UINT plane_idx, float *plane); +HRESULT __cdecl wined3d_device_get_clip_status(IWineD3DDevice *device, WINED3DCLIPSTATUS *clip_status); +HRESULT __cdecl wined3d_device_get_current_texture_palette(IWineD3DDevice *device, UINT *palette_idx); +HRESULT __cdecl wined3d_device_get_depth_stencil(IWineD3DDevice *device, struct wined3d_surface **depth_stencil); +void __cdecl wined3d_device_get_gamma_ramp(IWineD3DDevice *device, UINT swapchain_idx, WINED3DGAMMARAMP *ramp); +HRESULT __cdecl wined3d_device_get_index_buffer(IWineD3DDevice *device, struct wined3d_buffer **index_buffer); +HRESULT __cdecl wined3d_device_get_light(IWineD3DDevice *device, UINT light_idx, WINED3DLIGHT *light); +HRESULT __cdecl wined3d_device_get_light_enable(IWineD3DDevice *device, UINT light_idx, BOOL *enable); +HRESULT __cdecl wined3d_device_get_material(IWineD3DDevice *device, WINED3DMATERIAL *material); +float __cdecl wined3d_device_get_npatch_mode(IWineD3DDevice *device); +HRESULT __cdecl wined3d_device_get_palette_entries(IWineD3DDevice *device, UINT palette_idx, PALETTEENTRY *entries); +struct wined3d_shader * __cdecl wined3d_device_get_pixel_shader(IWineD3DDevice *device); +HRESULT __cdecl wined3d_device_get_ps_consts_b(IWineD3DDevice *device, + UINT start_register, BOOL *constants, UINT bool_count); +HRESULT __cdecl wined3d_device_get_ps_consts_f(IWineD3DDevice *device, + UINT start_register, float *constants, UINT vector4f_count); +HRESULT __cdecl wined3d_device_get_ps_consts_i(IWineD3DDevice *device, + UINT start_register, int *constants, UINT vector4i_count); +HRESULT __cdecl wined3d_device_get_render_state(IWineD3DDevice *device, WINED3DRENDERSTATETYPE state, DWORD *value); +HRESULT __cdecl wined3d_device_get_render_target(IWineD3DDevice *device, + UINT render_target_idx, struct wined3d_surface **render_target); +HRESULT __cdecl wined3d_device_get_sampler_state(IWineD3DDevice *device, + UINT sampler_idx, WINED3DSAMPLERSTATETYPE state, DWORD *value); +HRESULT __cdecl wined3d_device_get_scissor_rect(IWineD3DDevice *device, RECT *rect); +BOOL __cdecl wined3d_device_get_software_vertex_processing(IWineD3DDevice *device); +HRESULT __cdecl wined3d_device_get_stream_source(IWineD3DDevice *device, + UINT stream_idx, struct wined3d_buffer **buffer, UINT *offset, UINT *stride); +HRESULT __cdecl wined3d_device_get_stream_source_freq(IWineD3DDevice *device, UINT stream_idx, UINT *divider); +HRESULT __cdecl wined3d_device_get_texture(IWineD3DDevice *device, UINT stage, struct wined3d_texture **texture); +HRESULT __cdecl wined3d_device_get_texture_stage_state(IWineD3DDevice *device, + UINT stage, WINED3DTEXTURESTAGESTATETYPE state, DWORD *value); +HRESULT __cdecl wined3d_device_get_transform(IWineD3DDevice *device, + WINED3DTRANSFORMSTATETYPE state, WINED3DMATRIX *matrix); +HRESULT __cdecl wined3d_device_get_vertex_declaration(IWineD3DDevice *device, + struct wined3d_vertex_declaration **declaration); +struct wined3d_shader * __cdecl wined3d_device_get_vertex_shader(IWineD3DDevice *device); +HRESULT __cdecl wined3d_device_get_viewport(IWineD3DDevice *device, WINED3DVIEWPORT *viewport); +HRESULT __cdecl wined3d_device_get_vs_consts_b(IWineD3DDevice *device, + UINT start_register, BOOL *constants, UINT bool_count); +HRESULT __cdecl wined3d_device_get_vs_consts_f(IWineD3DDevice *device, + UINT start_register, float *constants, UINT vector4f_count); +HRESULT __cdecl wined3d_device_get_vs_consts_i(IWineD3DDevice *device, + UINT start_register, int *constants, UINT vector4i_count); +HRESULT __cdecl wined3d_device_set_base_vertex_index(IWineD3DDevice *device, INT base_index); +HRESULT __cdecl wined3d_device_set_clip_plane(IWineD3DDevice *device, UINT plane_idx, const float *plane); +HRESULT __cdecl wined3d_device_set_clip_status(IWineD3DDevice *device, const WINED3DCLIPSTATUS *clip_status); +HRESULT __cdecl wined3d_device_set_current_texture_palette(IWineD3DDevice *device, UINT palette_idx); +HRESULT __cdecl wined3d_device_set_depth_stencil(IWineD3DDevice *device, struct wined3d_surface *depth_stencil); +void __cdecl wined3d_device_set_gamma_ramp(IWineD3DDevice *device, + UINT swapchain_idx, DWORD flags, const WINED3DGAMMARAMP *ramp); +HRESULT __cdecl wined3d_device_set_index_buffer(IWineD3DDevice *device, + struct wined3d_buffer *index_buffer, enum wined3d_format_id format_id); +HRESULT __cdecl wined3d_device_set_light(IWineD3DDevice *device, UINT light_idx, const WINED3DLIGHT *light); +HRESULT __cdecl wined3d_device_set_light_enable(IWineD3DDevice *device, UINT light_idx, BOOL enable); +HRESULT __cdecl wined3d_device_set_material(IWineD3DDevice *device, const WINED3DMATERIAL *material); +HRESULT __cdecl wined3d_device_set_npatch_mode(IWineD3DDevice *device, float segments); +HRESULT __cdecl wined3d_device_set_palette_entries(IWineD3DDevice *device, + UINT palette_idx, const PALETTEENTRY *entries); +HRESULT __cdecl wined3d_device_set_pixel_shader(IWineD3DDevice *device, struct wined3d_shader *shader); +HRESULT __cdecl wined3d_device_set_ps_consts_b(IWineD3DDevice *device, + UINT start_register, const BOOL *constants, UINT bool_count); +HRESULT __cdecl wined3d_device_set_ps_consts_f(IWineD3DDevice *device, + UINT start_register, const float *constants, UINT vector4f_count); +HRESULT __cdecl wined3d_device_set_ps_consts_i(IWineD3DDevice *device, + UINT start_register, const int *constants, UINT vector4i_count); +HRESULT __cdecl wined3d_device_set_render_state(IWineD3DDevice *device, WINED3DRENDERSTATETYPE state, DWORD value); +HRESULT __cdecl wined3d_device_set_render_target(IWineD3DDevice *device, + UINT render_target_idx, struct wined3d_surface *render_target, BOOL set_viewport); +HRESULT __cdecl wined3d_device_set_sampler_state(IWineD3DDevice *device, + UINT sampler_idx, WINED3DSAMPLERSTATETYPE state, DWORD value); +HRESULT __cdecl wined3d_device_set_scissor_rect(IWineD3DDevice *device, const RECT *rect); +HRESULT __cdecl wined3d_device_set_software_vertex_processing(IWineD3DDevice *device, BOOL software); +HRESULT __cdecl wined3d_device_set_stream_source(IWineD3DDevice *device, + UINT stream_idx, struct wined3d_buffer *buffer, UINT offset, UINT stride); +HRESULT __cdecl wined3d_device_set_stream_source_freq(IWineD3DDevice *device, UINT stream_idx, UINT divider); +HRESULT __cdecl wined3d_device_set_texture(IWineD3DDevice *device, UINT stage, struct wined3d_texture *texture); +HRESULT __cdecl wined3d_device_set_texture_stage_state(IWineD3DDevice *device, + UINT stage, WINED3DTEXTURESTAGESTATETYPE state, DWORD value); +HRESULT __cdecl wined3d_device_set_transform(IWineD3DDevice *device, + WINED3DTRANSFORMSTATETYPE state, const WINED3DMATRIX *matrix); +HRESULT __cdecl wined3d_device_set_vertex_declaration(IWineD3DDevice *device, + struct wined3d_vertex_declaration *declaration); +HRESULT __cdecl wined3d_device_set_vertex_shader(IWineD3DDevice *device, struct wined3d_shader *shader); +HRESULT __cdecl wined3d_device_set_viewport(IWineD3DDevice *device, const WINED3DVIEWPORT *viewport); +HRESULT __cdecl wined3d_device_set_vs_consts_b(IWineD3DDevice *device, + UINT start_register, const BOOL *constants, UINT bool_count); +HRESULT __cdecl wined3d_device_set_vs_consts_f(IWineD3DDevice *device, + UINT start_register, const float *constants, UINT vector4f_count); +HRESULT __cdecl wined3d_device_set_vs_consts_i(IWineD3DDevice *device, + UINT start_register, const int *constants, UINT vector4i_count); HRESULT __cdecl wined3d_palette_create(IWineD3DDevice *device, DWORD flags, const PALETTEENTRY *entries, void *parent, struct wined3d_palette **palette);