winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
November 2012
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
708 discussions
Start a n
N
ew thread
Henri Verbeet : d3d10core: Implement d3d10_device_GSGetShader().
by Alexandre Julliard
14 Nov '12
14 Nov '12
Module: wine Branch: master Commit: 25c449247f40f2e637187a6066eadf17610fd015 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=25c449247f40f2e637187a606…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Tue Nov 13 21:24:23 2012 +0100 d3d10core: Implement d3d10_device_GSGetShader(). --- dlls/d3d10core/device.c | 16 +++++++++++++++- dlls/wined3d/device.c | 7 +++++++ dlls/wined3d/wined3d.spec | 1 + include/wine/wined3d.h | 1 + 4 files changed, 24 insertions(+), 1 deletions(-) diff --git a/dlls/d3d10core/device.c b/dlls/d3d10core/device.c index 0f30a13..84fff72 100644 --- a/dlls/d3d10core/device.c +++ b/dlls/d3d10core/device.c @@ -546,7 +546,21 @@ static void STDMETHODCALLTYPE d3d10_device_GSGetConstantBuffers(ID3D10Device *if static void STDMETHODCALLTYPE d3d10_device_GSGetShader(ID3D10Device *iface, ID3D10GeometryShader **shader) { - FIXME("iface %p, shader %p stub!\n", iface, shader); + struct d3d10_device *device = impl_from_ID3D10Device(iface); + struct d3d10_geometry_shader *shader_impl; + struct wined3d_shader *wined3d_shader; + + TRACE("iface %p, shader %p.\n", iface, shader); + + if (!(wined3d_shader = wined3d_device_get_geometry_shader(device->wined3d_device))) + { + *shader = NULL; + return; + } + + shader_impl = wined3d_shader_get_parent(wined3d_shader); + *shader = &shader_impl->ID3D10GeometryShader_iface; + ID3D10GeometryShader_AddRef(*shader); } static void STDMETHODCALLTYPE d3d10_device_IAGetPrimitiveTopology(ID3D10Device *iface, diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 979a248..2242cc3 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3012,6 +3012,13 @@ void CDECL wined3d_device_set_geometry_shader(struct wined3d_device *device, str device_invalidate_state(device, STATE_GEOMETRY_SHADER); } +struct wined3d_shader * CDECL wined3d_device_get_geometry_shader(const struct wined3d_device *device) +{ + TRACE("device %p.\n", device); + + return device->stateBlock->state.geometry_shader; +} + /* Context activation is done by the caller. */ /* Do not call while under the GL lock. */ #define copy_and_next(dest, src, size) memcpy(dest, src, size); dest += (size) diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 3bfa239..f8364e1 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -64,6 +64,7 @@ @ cdecl wined3d_device_get_display_mode(ptr long ptr ptr) @ cdecl wined3d_device_get_front_buffer_data(ptr long ptr) @ cdecl wined3d_device_get_gamma_ramp(ptr long ptr) +@ cdecl wined3d_device_get_geometry_shader(ptr) @ cdecl wined3d_device_get_index_buffer(ptr) @ cdecl wined3d_device_get_light(ptr long ptr) @ cdecl wined3d_device_get_light_enable(ptr long ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index fff8bd9..7169a25 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2124,6 +2124,7 @@ HRESULT __cdecl wined3d_device_get_front_buffer_data(const struct wined3d_device UINT swapchain_idx, struct wined3d_surface *dst_surface); void __cdecl wined3d_device_get_gamma_ramp(const struct wined3d_device *device, UINT swapchain_idx, struct wined3d_gamma_ramp *ramp); +struct wined3d_shader * __cdecl wined3d_device_get_geometry_shader(const struct wined3d_device *device); struct wined3d_buffer * __cdecl wined3d_device_get_index_buffer(const struct wined3d_device *device); HRESULT __cdecl wined3d_device_get_light(const struct wined3d_device *device, UINT light_idx, struct wined3d_light *light);
1
0
0
0
Henri Verbeet : d3d10core: Implement d3d10_device_GSSetShader().
by Alexandre Julliard
14 Nov '12
14 Nov '12
Module: wine Branch: master Commit: 9081f8afb1ce135e5de6dd29d2d1dbfccc8fcfca URL:
http://source.winehq.org/git/wine.git/?a=commit;h=9081f8afb1ce135e5de6dd29d…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Tue Nov 13 21:24:22 2012 +0100 d3d10core: Implement d3d10_device_GSSetShader(). --- dlls/d3d10core/d3d10core_private.h | 1 + dlls/d3d10core/device.c | 8 ++++++-- dlls/d3d10core/shader.c | 9 +++++++++ dlls/wined3d/device.c | 19 +++++++++++++++++++ dlls/wined3d/state.c | 7 +++++++ dlls/wined3d/utils.c | 2 ++ dlls/wined3d/wined3d.spec | 1 + dlls/wined3d/wined3d_private.h | 7 ++++++- include/wine/wined3d.h | 1 + 9 files changed, 52 insertions(+), 3 deletions(-) diff --git a/dlls/d3d10core/d3d10core_private.h b/dlls/d3d10core/d3d10core_private.h index 4297adf..a4e29e2 100644 --- a/dlls/d3d10core/d3d10core_private.h +++ b/dlls/d3d10core/d3d10core_private.h @@ -191,6 +191,7 @@ struct d3d10_geometry_shader HRESULT d3d10_geometry_shader_init(struct d3d10_geometry_shader *shader, struct d3d10_device *device, const void *byte_code, SIZE_T byte_code_length) DECLSPEC_HIDDEN; +struct d3d10_geometry_shader *unsafe_impl_from_ID3D10GeometryShader(ID3D10GeometryShader *iface) DECLSPEC_HIDDEN; /* ID3D10PixelShader */ struct d3d10_pixel_shader diff --git a/dlls/d3d10core/device.c b/dlls/d3d10core/device.c index 0889f3b..0f30a13 100644 --- a/dlls/d3d10core/device.c +++ b/dlls/d3d10core/device.c @@ -260,8 +260,12 @@ static void STDMETHODCALLTYPE d3d10_device_GSSetConstantBuffers(ID3D10Device *if static void STDMETHODCALLTYPE d3d10_device_GSSetShader(ID3D10Device *iface, ID3D10GeometryShader *shader) { - if (shader) FIXME("iface %p, shader %p stub!\n", iface, shader); - else WARN("iface %p, shader %p stub!\n", iface, shader); + struct d3d10_device *device = impl_from_ID3D10Device(iface); + struct d3d10_geometry_shader *gs = unsafe_impl_from_ID3D10GeometryShader(shader); + + TRACE("iface %p, shader %p.\n", iface, shader); + + wined3d_device_set_geometry_shader(device->wined3d_device, gs ? gs->wined3d_shader : NULL); } static void STDMETHODCALLTYPE d3d10_device_IASetPrimitiveTopology(ID3D10Device *iface, diff --git a/dlls/d3d10core/shader.c b/dlls/d3d10core/shader.c index c6803ed..4f189e9 100644 --- a/dlls/d3d10core/shader.c +++ b/dlls/d3d10core/shader.c @@ -420,6 +420,15 @@ HRESULT d3d10_geometry_shader_init(struct d3d10_geometry_shader *shader, struct return S_OK; } +struct d3d10_geometry_shader *unsafe_impl_from_ID3D10GeometryShader(ID3D10GeometryShader *iface) +{ + if (!iface) + return NULL; + assert(iface->lpVtbl == &d3d10_geometry_shader_vtbl); + + return impl_from_ID3D10GeometryShader(iface); +} + static inline struct d3d10_pixel_shader *impl_from_ID3D10PixelShader(ID3D10PixelShader *iface) { return CONTAINING_RECORD(iface, struct d3d10_pixel_shader, ID3D10PixelShader_iface); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index e01048b..979a248 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -2993,6 +2993,25 @@ HRESULT CDECL wined3d_device_get_ps_consts_f(const struct wined3d_device *device return WINED3D_OK; } +void CDECL wined3d_device_set_geometry_shader(struct wined3d_device *device, struct wined3d_shader *shader) +{ + struct wined3d_shader *prev = device->updateStateBlock->state.geometry_shader; + + TRACE("device %p, shader %p.\n", device, shader); + + if (shader) + wined3d_shader_incref(shader); + if (prev) + wined3d_shader_decref(prev); + + device->updateStateBlock->state.geometry_shader = shader; + + if (device->isRecordingState || shader == prev) + return; + + device_invalidate_state(device, STATE_GEOMETRY_SHADER); +} + /* Context activation is done by the caller. */ /* Do not call while under the GL lock. */ #define copy_and_next(dest, src, size) memcpy(dest, src, size); dest += (size) diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index c16fa2a..2376527 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -3760,6 +3760,11 @@ void apply_pixelshader(struct wined3d_context *context, const struct wined3d_sta context->load_constants = 1; } +void state_geometry_shader(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) +{ + context->select_shader = 1; +} + static void shader_bumpenvmat(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { DWORD stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); @@ -5129,6 +5134,7 @@ const struct StateEntryTemplate misc_state_template[] = { { STATE_BASEVERTEXINDEX, { STATE_STREAMSRC, NULL, }, WINED3D_GL_EXT_NONE }, { STATE_FRAMEBUFFER, { STATE_FRAMEBUFFER, context_state_fb }, WINED3D_GL_EXT_NONE }, { STATE_PIXELSHADER, { STATE_PIXELSHADER, context_state_drawbuf},WINED3D_GL_EXT_NONE }, + { STATE_GEOMETRY_SHADER, { STATE_GEOMETRY_SHADER, state_geometry_shader}, WINED3D_GL_EXT_NONE }, {0 /* Terminate */, { 0, 0 }, WINED3D_GL_EXT_NONE }, }; @@ -5789,6 +5795,7 @@ static void validate_state_table(struct StateEntry *state_table) STATE_VERTEXSHADERCONSTANT, STATE_PIXELSHADERCONSTANT, STATE_VSHADER, + STATE_GEOMETRY_SHADER, STATE_PIXELSHADER, STATE_VIEWPORT, STATE_SCISSORRECT, diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 0624694..9e008f8 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -2335,6 +2335,8 @@ const char *debug_d3dstate(DWORD state) return "STATE_VDECL"; if (STATE_IS_VSHADER(state)) return "STATE_VSHADER"; + if (STATE_IS_GEOMETRY_SHADER(state)) + return "STATE_GEOMETRY_SHADER"; if (STATE_IS_VIEWPORT(state)) return "STATE_VIEWPORT"; if (STATE_IS_VERTEXSHADERCONSTANT(state)) diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 2aaa9ce..3bfa239 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -111,6 +111,7 @@ @ cdecl wined3d_device_set_depth_stencil(ptr ptr) @ cdecl wined3d_device_set_dialog_box_mode(ptr long) @ cdecl wined3d_device_set_gamma_ramp(ptr long long ptr) +@ cdecl wined3d_device_set_geometry_shader(ptr 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) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 56d7f38..e525414 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -995,7 +995,10 @@ extern glMultiTexCoordFunc multi_texcoord_funcs[WINED3D_FFP_EMIT_COUNT] DECLSPEC #define STATE_VSHADER (STATE_VDECL + 1) #define STATE_IS_VSHADER(a) ((a) == STATE_VSHADER) -#define STATE_VIEWPORT (STATE_VSHADER + 1) +#define STATE_GEOMETRY_SHADER (STATE_VSHADER + 1) +#define STATE_IS_GEOMETRY_SHADER(a) ((a) == STATE_GEOMETRY_SHADER) + +#define STATE_VIEWPORT (STATE_GEOMETRY_SHADER + 1) #define STATE_IS_VIEWPORT(a) ((a) == STATE_VIEWPORT) #define STATE_VERTEXSHADERCONSTANT (STATE_VIEWPORT + 1) @@ -2296,6 +2299,8 @@ struct wined3d_state INT vs_consts_i[MAX_CONST_I * 4]; float *vs_consts_f; + struct wined3d_shader *geometry_shader; + struct wined3d_shader *pixel_shader; BOOL ps_consts_b[MAX_CONST_B]; INT ps_consts_i[MAX_CONST_I * 4]; diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index e201c2e..fff8bd9 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2198,6 +2198,7 @@ void __cdecl wined3d_device_set_depth_stencil(struct wined3d_device *device, str HRESULT __cdecl wined3d_device_set_dialog_box_mode(struct wined3d_device *device, BOOL enable_dialogs); void __cdecl wined3d_device_set_gamma_ramp(const struct wined3d_device *device, UINT swapchain_idx, DWORD flags, const struct wined3d_gamma_ramp *ramp); +void __cdecl wined3d_device_set_geometry_shader(struct wined3d_device *device, struct wined3d_shader *shader); void __cdecl wined3d_device_set_index_buffer(struct wined3d_device *device, struct wined3d_buffer *index_buffer, enum wined3d_format_id format_id); HRESULT __cdecl wined3d_device_set_light(struct wined3d_device *device,
1
0
0
0
Henri Verbeet : ddraw: Avoid LPDIRECT3DDEVICE3.
by Alexandre Julliard
14 Nov '12
14 Nov '12
Module: wine Branch: master Commit: a0ee8b20bc6f3e7c9fec22923c6fbee2a294d11d URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a0ee8b20bc6f3e7c9fec22923…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Tue Nov 13 21:24:21 2012 +0100 ddraw: Avoid LPDIRECT3DDEVICE3. --- include/d3d.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/d3d.h b/include/d3d.h index 9cab6f7..5a8f576 100644 --- a/include/d3d.h +++ b/include/d3d.h @@ -534,7 +534,7 @@ DECLARE_INTERFACE_(IDirect3DMaterial3,IUnknown) /*** IDirect3DMaterial3 methods ***/ STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE; STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE; - STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE3 lpDirect3DDevice3, LPD3DMATERIALHANDLE lpHandle) PURE; + STDMETHOD(GetHandle)(THIS_ struct IDirect3DDevice3 *device, D3DMATERIALHANDLE *handle) PURE; }; #undef INTERFACE @@ -1472,7 +1472,7 @@ DECLARE_INTERFACE_(IDirect3DVertexBuffer,IUnknown) IDirect3DVertexBuffer *src_buffer, DWORD src_idx, IDirect3DDevice3 *device, DWORD flags) PURE; STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertexBufferDesc) PURE; - STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE3 lpD3DDevice,DWORD dwFlags) PURE; + STDMETHOD(Optimize)(THIS_ IDirect3DDevice3 *device, DWORD flags) PURE; }; #undef INTERFACE
1
0
0
0
Henri Verbeet : ddraw: Avoid LPDIRECT3DDEVICE7.
by Alexandre Julliard
14 Nov '12
14 Nov '12
Module: wine Branch: master Commit: a24d59a1dd619f8a7892fe00d75cc2ddde26bbbb URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a24d59a1dd619f8a7892fe00d…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Tue Nov 13 21:24:20 2012 +0100 ddraw: Avoid LPDIRECT3DDEVICE7. --- dlls/ddraw/tests/d3d.c | 2 +- include/d3d.h | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c index 7968b09..73317a8 100644 --- a/dlls/ddraw/tests/d3d.c +++ b/dlls/ddraw/tests/d3d.c @@ -33,7 +33,7 @@ static IDirectDraw7 *lpDD; static LPDIRECT3D7 lpD3D = NULL; static IDirectDrawSurface7 *lpDDS; static IDirectDrawSurface7 *lpDDSdepth; -static LPDIRECT3DDEVICE7 lpD3DDevice = NULL; +static IDirect3DDevice7 *lpD3DDevice; static IDirect3DVertexBuffer7 *lpVBufSrc; static IDirectDraw *DirectDraw1 = NULL; diff --git a/include/d3d.h b/include/d3d.h index 7911497..9cab6f7 100644 --- a/include/d3d.h +++ b/include/d3d.h @@ -1517,8 +1517,9 @@ DECLARE_INTERFACE_(IDirect3DVertexBuffer7,IUnknown) IDirect3DVertexBuffer7 *src_buffer, DWORD src_idx, IDirect3DDevice7 *device, DWORD flags) PURE; STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertexBufferDesc) PURE; - STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE7 lpD3DDevice,DWORD dwFlags) PURE; - STDMETHOD(ProcessVerticesStrided)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPD3DDRAWPRIMITIVESTRIDEDDATA lpStrideData,DWORD dwVertexTypeDesc,LPDIRECT3DDEVICE7 lpD3DDevice,DWORD dwFlags) PURE; + STDMETHOD(Optimize)(THIS_ IDirect3DDevice7 *device, DWORD flags) PURE; + STDMETHOD(ProcessVerticesStrided)(THIS_ DWORD vertex_op, DWORD dst_idx, DWORD count, + D3DDRAWPRIMITIVESTRIDEDDATA *data, DWORD fvf, IDirect3DDevice7 *device, DWORD flags) PURE; }; #undef INTERFACE
1
0
0
0
Henri Verbeet : ddraw: Avoid LPDIRECT3DVIEWPORT.
by Alexandre Julliard
14 Nov '12
14 Nov '12
Module: wine Branch: master Commit: 785033d19d6d910cdb10bfee331cff5c6d7a818d URL:
http://source.winehq.org/git/wine.git/?a=commit;h=785033d19d6d910cdb10bfee3…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Tue Nov 13 21:24:19 2012 +0100 ddraw: Avoid LPDIRECT3DVIEWPORT. --- include/d3d.h | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/include/d3d.h b/include/d3d.h index c7c7838..7911497 100644 --- a/include/d3d.h +++ b/include/d3d.h @@ -215,7 +215,7 @@ DECLARE_INTERFACE_(IDirect3D,IUnknown) STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE; STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE; STDMETHOD(CreateMaterial)(THIS_ struct IDirect3DMaterial **material, IUnknown *outer) PURE; - STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT *lplpD3DViewport, IUnknown *pUnkOuter) PURE; + STDMETHOD(CreateViewport)(THIS_ struct IDirect3DViewport **viewport, IUnknown *outer) PURE; STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lplpD3DDevice) PURE; }; #undef INTERFACE @@ -944,9 +944,10 @@ DECLARE_INTERFACE_(IDirect3DDevice,IUnknown) STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE; STDMETHOD(Execute)(THIS_ IDirect3DExecuteBuffer *buffer, IDirect3DViewport *viewport, DWORD flags) PURE; - STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport) PURE; - STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport) PURE; - STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport, LPDIRECT3DVIEWPORT *lplpDirect3DViewport, DWORD dwFlags) PURE; + STDMETHOD(AddViewport)(THIS_ IDirect3DViewport *viewport) PURE; + STDMETHOD(DeleteViewport)(THIS_ IDirect3DViewport *viewport) PURE; + STDMETHOD(NextViewport)(THIS_ IDirect3DViewport *ref, + IDirect3DViewport **viewport, DWORD flags) PURE; STDMETHOD(Pick)(THIS_ IDirect3DExecuteBuffer *buffer, IDirect3DViewport *viewport, DWORD flags, D3DRECT *rect) PURE; STDMETHOD(GetPickRecords)(THIS_ LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec) PURE;
1
0
0
0
Nozomi Kodama : d3dx9_36: Fix the case out = in for D3DXSHRotate.
by Alexandre Julliard
13 Nov '12
13 Nov '12
Module: wine Branch: master Commit: 965e27149abc5d1becd4530d01f03dff42677721 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=965e27149abc5d1becd4530d0…
Author: Nozomi Kodama <nozomi.kodama(a)yahoo.com> Date: Sun Nov 11 15:23:57 2012 -1000 d3dx9_36: Fix the case out = in for D3DXSHRotate. --- dlls/d3dx9_36/math.c | 12 ++++---- dlls/d3dx9_36/tests/math.c | 65 ++++++++++++++++++++++++++++++------------- 2 files changed, 51 insertions(+), 26 deletions(-) diff --git a/dlls/d3dx9_36/math.c b/dlls/d3dx9_36/math.c index 05125f7..12073e3 100644 --- a/dlls/d3dx9_36/math.c +++ b/dlls/d3dx9_36/math.c @@ -2774,7 +2774,7 @@ static void rotate_X(FLOAT *out, UINT order, FLOAT a, FLOAT *in) FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, CONST D3DXMATRIX *matrix, CONST FLOAT *in) { - FLOAT alpha, beta, gamma, sinb, temp[36]; + FLOAT alpha, beta, gamma, sinb, temp[36], temp1[36]; TRACE("out %p, order %u, matrix %p, in %p\n", out, order, matrix, in); @@ -2848,11 +2848,11 @@ FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, CONST D3DXMATRIX *matrix, CON gamma = 0.0f; } - D3DXSHRotateZ(out, order, gamma, in); - rotate_X(temp, order, 1.0f, out); - D3DXSHRotateZ(out, order, beta, temp); - rotate_X(temp, order, -1.0f, out); - D3DXSHRotateZ(out, order, alpha, temp); + D3DXSHRotateZ(temp, order, gamma, in); + rotate_X(temp1, order, 1.0f, temp); + D3DXSHRotateZ(temp, order, beta, temp1); + rotate_X(temp1, order, -1.0f, temp); + D3DXSHRotateZ(out, order, alpha, temp1); return out; } diff --git a/dlls/d3dx9_36/tests/math.c b/dlls/d3dx9_36/tests/math.c index 53262b7..c727c5f 100644 --- a/dlls/d3dx9_36/tests/math.c +++ b/dlls/d3dx9_36/tests/math.c @@ -2751,7 +2751,7 @@ static void test_D3DXSHMultiply4(void) static void test_D3DXSHRotate(void) { D3DXMATRIX m[4]; - FLOAT expected, in[49], out[49], *received_ptr; + FLOAT expected, in[49], out[49], *out_temp, *received_ptr; static const FLOAT table[]= { /* Rotation around X-axis Pi/2 */ 1.01f, -3.01f, 2.01f, 4.01f, -8.01f, -6.01f, @@ -2760,6 +2760,8 @@ static void test_D3DXSHRotate(void) 30.241013f, 26.919991f, 39.236877f, -22.632446f, 6.707388f, -11.768282f, 3.443672f, -6.07445f, 11.61839f, 1.527561f, 37.89633f, -56.9012f, 47.42289f, 50.39153f, 10.61819f, 25.50101f, 0.049241f, 16.98330f, + + 1.01f, -3.01f, -3.01f, 4.01f, -8.01f, -6.01f, -11.307889f, -8.01f, 14.297919f, /* Rotation around X-axis -Pi/2 */ 1.01f, 3.01f, -2.01f, 4.01f, 8.01f, -6.01f, -11.307890f, -5.01f, -1.565839f, -1.093598f, -11.01f, -19.833414f, @@ -2767,6 +2769,8 @@ static void test_D3DXSHRotate(void) -30.241013f, 26.919991f, 39.236877f, 22.632446f, 6.707388f, 11.768282f, 3.443672f, 6.07445f, 11.61839f, -1.527561f, 37.89633f, 56.9012f, -47.42289f, 50.39153f, -10.61819f, 25.50101f, -0.049248f, 16.98330f, + + 1.01f, 3.01f, -3.01f, 4.01f, 8.01f, -6.01f, -11.307890f, -8.01f, 14.297919f, /* Yaw Pi/3, Pitch Pi/4, Roll Pi/5 */ 1.01f, 4.944899f, 1.442301f, 1.627281f, 0.219220f, 10.540824f, -9.136903f, 2.763750f, -7.30904f, -5.875721f, 5.303124f, -8.682154f, @@ -2774,41 +2778,62 @@ static void test_D3DXSHRotate(void) 14.629795f, -54.467102f, -12.231035f, -4.089857f, -9.444222f, 3.056035f, 0.179257f, -10.041875f, 23.090092f, -23.188709f, 11.727098f, -65.183090f, 48.671577f, -15.073209f, 38.793171f, -26.039536f, 6.192769f, -17.672247f, + + 1.01f, 4.944899f, -0.891142f, 4.607695f, 0.219218f, 10.773325f, + -8.204769f, 13.563829f, -12.007767f, /* Rotation around Z-axis Pi/6 */ 1.01f, 3.745711f, 3.01f, 2.467762f, 10.307889f, 9.209813f, 7.01f, 3.931864f, 0.166212f, 16.01f, 18.504042f, 17.405966f, 13.01f, 6.128016f, -2.029941f, -10.01f, 13.154292f, 24.01f, 29.432245f, 28.334167f, 21.01f, 9.056221f, -4.958143f, -18.01f, -27.236094f, -4.520332f, 16.814543f, 34.01f, 43.092495f, 41.994423f, - 31.01f, 12.716471f, -8.618400f, -28.01f, -40.896347f, -44.190571,}; - unsigned int i, j, order; + 31.01f, 12.716471f, -8.618400f, -28.01f, -40.896347f, -44.190571, + + 1.01f, 3.745711f, 3.01f, 1.599906f, 10.307889f, 9.209813f, + 7.01f, 2.331957f, -4.421894f, }; + unsigned int i, j, l, order; D3DXMatrixRotationX(&m[0], -D3DX_PI / 2.0f); D3DXMatrixRotationX(&m[1], D3DX_PI / 2.0f); D3DXMatrixRotationYawPitchRoll(&m[2], D3DX_PI / 3.0f, D3DX_PI / 4.0f, D3DX_PI / 5.0f); D3DXMatrixRotationZ(&m[3], D3DX_PI / 6.0f); - for (i = 0; i < 49; i++) - in[i] = i + 1.01f; - - for (j = 0; j < 4; j++) + for (l = 0; l < 2; l++) { - for (order = 0; order <= D3DXSH_MAXORDER; order++) - { - for (i = 0; i < 49; i++) - out[i] = ( i + 1.0f ) * ( i + 1.0f ); - - received_ptr = D3DXSHRotate(out, order, &m[j], in); - ok(received_ptr == out, "Order %u, expected %p, received %p\n", order, out, received_ptr); + if (l == 0) + out_temp = out; + else + out_temp = in; - for (i = 0; i < 49; i++) + for (j = 0; j < 4; j++) + { + for (order = 0; order <= D3DXSH_MAXORDER; order++) { - if ( ( i > 0 ) && ( ( i >= order * order ) || ( order > D3DXSH_MAXORDER ) ) ) - expected = ( i + 1.0f ) * ( i + 1.0f ); - else - expected = table[36 * j + i]; + for (i = 0; i < 49; i++) + { + out[i] = ( i + 1.0f ) * ( i + 1.0f ); + in[i] = i + 1.01f; + } + + received_ptr = D3DXSHRotate(out_temp, order, &m[j], in); + ok(received_ptr == out_temp, "Order %u, expected %p, received %p\n", order, out, received_ptr); - ok(relative_error(out[i], expected) < admitted_error, "Order %u index %u, expected %f, received %f\n", order, i, expected, out[i]); + for (i = 0; i < 49; i++) + { + if ((i > 0) && ((i >= order * order) || (order > D3DXSH_MAXORDER))) + { + if (l == 0) + expected = ( i + 1.0f ) * ( i + 1.0f ); + else + expected = i + 1.01f; + } + else if ((l == 0) || (order > 3)) + expected = table[45 * j + i]; + else + expected = table[45 * j + 36 +i]; + ok(relative_error(out_temp[i], expected) < admitted_error, + "Order %u index %u, expected %f, received %f\n", order, i, expected, out_temp[i]); + } } } }
1
0
0
0
Nozomi Kodama : d3dx9_36: Implement handy computations for small orders in D3DXSHRotate.
by Alexandre Julliard
13 Nov '12
13 Nov '12
Module: wine Branch: master Commit: 1ca9ed90e32e7dc984cb7b50da8f8aaeb78aa791 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1ca9ed90e32e7dc984cb7b50d…
Author: Nozomi Kodama <nozomi.kodama(a)yahoo.com> Date: Sun Nov 11 15:21:36 2012 -1000 d3dx9_36: Implement handy computations for small orders in D3DXSHRotate. --- dlls/d3dx9_36/math.c | 78 +++++++++++++++++++++++++++++++++++++------------ 1 files changed, 59 insertions(+), 19 deletions(-) diff --git a/dlls/d3dx9_36/math.c b/dlls/d3dx9_36/math.c index 0aebff0..05125f7 100644 --- a/dlls/d3dx9_36/math.c +++ b/dlls/d3dx9_36/math.c @@ -2726,14 +2726,10 @@ FLOAT * WINAPI D3DXSHMultiply4(FLOAT *out, CONST FLOAT *a, CONST FLOAT *b) static void rotate_X(FLOAT *out, UINT order, FLOAT a, FLOAT *in) { out[0] = in[0]; - if ( order < 2 ) - return; out[1] = a * in[2]; out[2] = -a * in[1]; out[3] = in[3]; - if ( order == 2 ) - return; out[4] = a * in[7]; out[5] = -in[5]; @@ -2741,8 +2737,6 @@ static void rotate_X(FLOAT *out, UINT order, FLOAT a, FLOAT *in) out[7] = -a * in[4]; out[8] = -0.8660253882f * in[6] + 0.5f * in[8]; out[9] = -a * 0.7905694842f * in[12] + a * 0.6123724580f * in[14]; - if ( order == 3 ) - return; out[10] = -in[10]; out[11] = -a * 0.6123724580f * in[12] - a * 0.7905694842f * in[14]; @@ -2750,7 +2744,7 @@ static void rotate_X(FLOAT *out, UINT order, FLOAT a, FLOAT *in) out[13] = -0.25f * in[13] - 0.9682458639f * in[15]; out[14] = -a * 0.6123724580f * in[9] + a * 0.7905694842f * in[11]; out[15] = -0.9682458639f * in[13] + 0.25f * in[15]; - if ( order == 4 ) + if (order == 4) return; out[16] = -a * 0.9354143739f * in[21] + a * 0.3535533845f * in[23]; @@ -2762,7 +2756,7 @@ static void rotate_X(FLOAT *out, UINT order, FLOAT a, FLOAT *in) out[22] = 0.5590170026f * in[20] + 0.5f * in[22] - 0.6614378691f * in[24]; out[23] = -a * 0.3535533845f * in[16] + a * 0.9354143739f * in[18]; out[24] = 0.7395099998f * in[20] - 0.6614378691f * in[22] + 0.125f * in[24]; - if ( order == 5 ) + if (order == 5) return; out[25] = a * 0.7015607357f * in[30] - a * 0.6846531630f * in[32] + a * 0.1976423711f * in[34]; @@ -2776,7 +2770,6 @@ static void rotate_X(FLOAT *out, UINT order, FLOAT a, FLOAT *in) out[33] = 0.4050463140f * in[31] + 0.8125f * in[33] - 0.4192627370f * in[35]; out[34] = -a * 0.1976423711f * in[25] + a * 0.7954951525f * in[27] - a * 0.5728219748f * in[29]; out[35] = 0.9057110548f * in[31] - 0.4192627370f * in[33] + 0.0624999329f * in[35]; - } FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, CONST D3DXMATRIX *matrix, CONST FLOAT *in) @@ -2787,23 +2780,70 @@ FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, CONST D3DXMATRIX *matrix, CON out[0] = in[0]; - if ( ( order > D3DXSH_MAXORDER ) || ( order < D3DXSH_MINORDER ) ) + if ((order > D3DXSH_MAXORDER) || (order < D3DXSH_MINORDER)) return out; - /* TODO: Implement handy computations for order <= 3. They are faster than the general algorithm. */ - if ( order < 4 ) - WARN("Using general algorithm for order = %u\n", order); + if (order <= 3) + { + out[1] = matrix->u.m[1][1] * in[1] - matrix->u.m[2][1] * in[2] + matrix->u.m[0][1] * in[3]; + out[2] = -matrix->u.m[1][2] * in[1] + matrix->u.m[2][2] * in[2] - matrix->u.m[0][2] * in[3]; + out[3] = matrix->u.m[1][0] * in[1] - matrix->u.m[2][0] * in[2] + matrix->u.m[0][0] * in[3]; + + if (order == 3) + { + FLOAT coeff[]={ + matrix->u.m[1][0] * matrix->u.m[0][0], matrix->u.m[1][1] * matrix->u.m[0][1], + matrix->u.m[1][1] * matrix->u.m[2][1], matrix->u.m[1][0] * matrix->u.m[2][0], + matrix->u.m[2][0] * matrix->u.m[2][0], matrix->u.m[2][1] * matrix->u.m[2][1], + matrix->u.m[0][0] * matrix->u.m[2][0], matrix->u.m[0][1] * matrix->u.m[2][1], + matrix->u.m[0][1] * matrix->u.m[0][1], matrix->u.m[1][0] * matrix->u.m[1][0], + matrix->u.m[1][1] * matrix->u.m[1][1], matrix->u.m[0][0] * matrix->u.m[0][0], }; + + out[4] = (matrix->u.m[1][1] * matrix->u.m[0][0] + matrix->u.m[0][1] * matrix->u.m[1][0]) * in[4]; + out[4] -= (matrix->u.m[1][0] * matrix->u.m[2][1] + matrix->u.m[1][1] * matrix->u.m[2][0]) * in[5]; + out[4] += 1.7320508076f * matrix->u.m[2][0] * matrix->u.m[2][1] * in[6]; + out[4] -= (matrix->u.m[0][1] * matrix->u.m[2][0] + matrix->u.m[0][0] * matrix->u.m[2][1]) * in[7]; + out[4] += (matrix->u.m[0][0] * matrix->u.m[0][1] - matrix->u.m[1][0] * matrix->u.m[1][1]) * in[8]; + + out[5] = (matrix->u.m[1][1] * matrix->u.m[2][2] + matrix->u.m[1][2] * matrix->u.m[2][1]) * in[5]; + out[5] -= (matrix->u.m[1][1] * matrix->u.m[0][2] + matrix->u.m[1][2] * matrix->u.m[0][1]) * in[4]; + out[5] -= 1.7320508076f * matrix->u.m[2][2] * matrix->u.m[2][1] * in[6]; + out[5] += (matrix->u.m[0][2] * matrix->u.m[2][1] + matrix->u.m[0][1] * matrix->u.m[2][2]) * in[7]; + out[5] -= (matrix->u.m[0][1] * matrix->u.m[0][2] - matrix->u.m[1][1] * matrix->u.m[1][2]) * in[8]; + + out[6] = (matrix->u.m[2][2] * matrix->u.m[2][2] - 0.5f * (coeff[4] + coeff[5])) * in[6]; + out[6] -= (0.5773502692f * (coeff[0] + coeff[1]) - 1.1547005384f * matrix->u.m[1][2] * matrix->u.m[0][2]) * in[4]; + out[6] += (0.5773502692f * (coeff[2] + coeff[3]) - 1.1547005384f * matrix->u.m[1][2] * matrix->u.m[2][2]) * in[5]; + out[6] += (0.5773502692f * (coeff[6] + coeff[7]) - 1.1547005384f * matrix->u.m[0][2] * matrix->u.m[2][2]) * in[7]; + out[6] += (0.2886751347f * (coeff[9] - coeff[8] + coeff[10] - coeff[11]) - 0.5773502692f * + (matrix->u.m[1][2] * matrix->u.m[1][2] - matrix->u.m[0][2] * matrix->u.m[0][2])) * in[8]; + + out[7] = (matrix->u.m[0][0] * matrix->u.m[2][2] + matrix->u.m[0][2] * matrix->u.m[2][0]) * in[7]; + out[7] -= (matrix->u.m[1][0] * matrix->u.m[0][2] + matrix->u.m[1][2] * matrix->u.m[0][0]) * in[4]; + out[7] += (matrix->u.m[1][0] * matrix->u.m[2][2] + matrix->u.m[1][2] * matrix->u.m[2][0]) * in[5]; + out[7] -= 1.7320508076f * matrix->u.m[2][2] * matrix->u.m[2][0] * in[6]; + out[7] -= (matrix->u.m[0][0] * matrix->u.m[0][2] - matrix->u.m[1][0] * matrix->u.m[1][2]) * in[8]; + + out[8] = 0.5f * (coeff[11] - coeff[8] - coeff[9] + coeff[10]) * in[8]; + out[8] += (coeff[0] - coeff[1]) * in[4]; + out[8] += (coeff[2] - coeff[3]) * in[5]; + out[8] += 0.86602540f * (coeff[4] - coeff[5]) * in[6]; + out[8] += (coeff[7] - coeff[6]) * in[7]; + } + + return out; + } - if ( fabsf( matrix->u.m[2][2] ) != 1.0f ) + if (fabsf(matrix->u.m[2][2]) != 1.0f) { - sinb = sqrtf( 1.0f - matrix->u.m[2][2] * matrix->u.m[2][2] ); - alpha = atan2f(matrix->u.m[2][1] / sinb, matrix->u.m[2][0] / sinb ); - beta = atan2f( sinb, matrix->u.m[2][2] ); - gamma = atan2f( matrix->u.m[1][2] / sinb, -matrix->u.m[0][2] / sinb ); + sinb = sqrtf(1.0f - matrix->u.m[2][2] * matrix->u.m[2][2]); + alpha = atan2f(matrix->u.m[2][1] / sinb, matrix->u.m[2][0] / sinb); + beta = atan2f(sinb, matrix->u.m[2][2]); + gamma = atan2f(matrix->u.m[1][2] / sinb, -matrix->u.m[0][2] / sinb); } else { - alpha = atan2f( matrix->u.m[0][1], matrix->u.m[0][0] ); + alpha = atan2f(matrix->u.m[0][1], matrix->u.m[0][0]); beta = 0.0f; gamma = 0.0f; }
1
0
0
0
Detlef Riekenberg : advapi32/tests: Test string alias for common RID in sid strings.
by Alexandre Julliard
13 Nov '12
13 Nov '12
Module: wine Branch: master Commit: ef603cbbd9867c0f6cbf3b3d174b27082ab8d255 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ef603cbbd9867c0f6cbf3b3d1…
Author: Detlef Riekenberg <wine.dev(a)web.de> Date: Tue Nov 13 05:31:25 2012 +0100 advapi32/tests: Test string alias for common RID in sid strings. --- dlls/advapi32/tests/security.c | 120 +++++++++++++++++++-------------------- 1 files changed, 58 insertions(+), 62 deletions(-) diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index f5fc4e2..844b238 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -129,6 +129,14 @@ static HMODULE hmod; static int myARGC; static char** myARGV; +struct strsid_entry +{ + const char *str; + DWORD flags; +}; +#define STRSID_OK 0 +#define STRSID_OPT 1 + struct sidRef { SID_IDENTIFIER_AUTHORITY auth; @@ -173,29 +181,6 @@ static void init(void) myARGC = winetest_get_mainargs( &myARGV ); } -static void test_str_sid(const char *str_sid) -{ - PSID psid; - char *temp; - - if (pConvertStringSidToSidA(str_sid, &psid)) - { - if (pConvertSidToStringSidA(psid, &temp)) - { - trace(" %s: %s\n", str_sid, temp); - LocalFree(temp); - } - LocalFree(psid); - } - else - { - if (GetLastError() != ERROR_INVALID_SID) - trace(" %s: couldn't be converted, returned %d\n", str_sid, GetLastError()); - else - trace(" %s: couldn't be converted\n", str_sid); - } -} - static void test_sid(void) { struct sidRef refs[] = { @@ -206,6 +191,18 @@ static void test_sid(void) { { {0x00,0x00,0x00,0x00,0x00,0x02} }, "S-1-2-1" }, { { {0x00,0x00,0x00,0x00,0x00,0x0c} }, "S-1-12-1" }, }; + struct strsid_entry strsid_table[] = { + {"AO", STRSID_OK}, {"RU", STRSID_OK}, {"AN", STRSID_OK}, {"AU", STRSID_OK}, + {"BA", STRSID_OK}, {"BG", STRSID_OK}, {"BO", STRSID_OK}, {"BU", STRSID_OK}, + {"CA", STRSID_OPT}, {"CG", STRSID_OK}, {"CO", STRSID_OK}, {"DA", STRSID_OPT}, + {"DC", STRSID_OPT}, {"DD", STRSID_OPT}, {"DG", STRSID_OPT}, {"DU", STRSID_OPT}, + {"EA", STRSID_OPT}, {"ED", STRSID_OK}, {"WD", STRSID_OK}, {"PA", STRSID_OPT}, + {"IU", STRSID_OK}, {"LA", STRSID_OK}, {"LG", STRSID_OK}, {"LS", STRSID_OK}, + {"SY", STRSID_OK}, {"NU", STRSID_OK}, {"NO", STRSID_OK}, {"NS", STRSID_OK}, + {"PO", STRSID_OK}, {"PS", STRSID_OK}, {"PU", STRSID_OK}, {"RS", STRSID_OPT}, + {"RD", STRSID_OK}, {"RE", STRSID_OK}, {"RC", STRSID_OK}, {"SA", STRSID_OPT}, + {"SO", STRSID_OK}, {"SU", STRSID_OK}}; + const char noSubAuthStr[] = "S-1-5"; unsigned int i; PSID psid = NULL; @@ -290,45 +287,44 @@ static void test_sid(void) LocalFree( psid ); } - trace("String SIDs:\n"); - test_str_sid("AO"); - test_str_sid("RU"); - test_str_sid("AN"); - test_str_sid("AU"); - test_str_sid("BA"); - test_str_sid("BG"); - test_str_sid("BO"); - test_str_sid("BU"); - test_str_sid("CA"); - test_str_sid("CG"); - test_str_sid("CO"); - test_str_sid("DA"); - test_str_sid("DC"); - test_str_sid("DD"); - test_str_sid("DG"); - test_str_sid("DU"); - test_str_sid("EA"); - test_str_sid("ED"); - test_str_sid("WD"); - test_str_sid("PA"); - test_str_sid("IU"); - test_str_sid("LA"); - test_str_sid("LG"); - test_str_sid("LS"); - test_str_sid("SY"); - test_str_sid("NU"); - test_str_sid("NO"); - test_str_sid("NS"); - test_str_sid("PO"); - test_str_sid("PS"); - test_str_sid("PU"); - test_str_sid("RS"); - test_str_sid("RD"); - test_str_sid("RE"); - test_str_sid("RC"); - test_str_sid("SA"); - test_str_sid("SO"); - test_str_sid("SU"); + /* string constant format not supported before XP */ + r = pConvertStringSidToSidA(strsid_table[0].str, &psid); + if(!r) + { + win_skip("String constant format not supported\n"); + return; + } + LocalFree(psid); + + for(i = 0; i < sizeof(strsid_table) / sizeof(strsid_table[0]); i++) + { + char *temp; + + SetLastError(0xdeadbeef); + r = pConvertStringSidToSidA(strsid_table[i].str, &psid); + + if (!(strsid_table[i].flags & STRSID_OPT)) + { + ok(r, "%s: got %u\n", strsid_table[i].str, GetLastError()); + } + + if (r) + { + if ((winetest_debug > 1) && (pConvertSidToStringSidA(psid, &temp))) + { + trace(" %s: %s\n", strsid_table[i].str, temp); + LocalFree(temp); + } + LocalFree(psid); + } + else + { + if (GetLastError() != ERROR_INVALID_SID) + trace(" %s: couldn't be converted, returned %d\n", strsid_table[i].str, GetLastError()); + else + trace(" %s: couldn't be converted\n", strsid_table[i].str); + } + } } static void test_trustee(void)
1
0
0
0
Detlef Riekenberg : advapi32: Allow string alias for common RID in sid strings.
by Alexandre Julliard
13 Nov '12
13 Nov '12
Module: wine Branch: master Commit: f7a6c4c32349e01a4902a752938ce4f67c6d5445 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f7a6c4c32349e01a4902a7529…
Author: Detlef Riekenberg <wine.dev(a)web.de> Date: Tue Nov 13 05:31:24 2012 +0100 advapi32: Allow string alias for common RID in sid strings. --- dlls/advapi32/security.c | 47 ++++++++++++++++++++++++++++++++------------- 1 files changed, 33 insertions(+), 14 deletions(-) diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index c86ca17..699c8e0 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -138,24 +138,25 @@ static const WELLKNOWNSID WellKnownSids[] = /* these SIDs must be constructed as relative to some domain - only the RID is well-known */ typedef struct WELLKNOWNRID { + WCHAR wstr[2]; WELL_KNOWN_SID_TYPE Type; DWORD Rid; } WELLKNOWNRID; static const WELLKNOWNRID WellKnownRids[] = { - { WinAccountAdministratorSid, DOMAIN_USER_RID_ADMIN }, - { WinAccountGuestSid, DOMAIN_USER_RID_GUEST }, - { WinAccountKrbtgtSid, DOMAIN_USER_RID_KRBTGT }, - { WinAccountDomainAdminsSid, DOMAIN_GROUP_RID_ADMINS }, - { WinAccountDomainUsersSid, DOMAIN_GROUP_RID_USERS }, - { WinAccountDomainGuestsSid, DOMAIN_GROUP_RID_GUESTS }, - { WinAccountComputersSid, DOMAIN_GROUP_RID_COMPUTERS }, - { WinAccountControllersSid, DOMAIN_GROUP_RID_CONTROLLERS }, - { WinAccountCertAdminsSid, DOMAIN_GROUP_RID_CERT_ADMINS }, - { WinAccountSchemaAdminsSid, DOMAIN_GROUP_RID_SCHEMA_ADMINS }, - { WinAccountEnterpriseAdminsSid, DOMAIN_GROUP_RID_ENTERPRISE_ADMINS }, - { WinAccountPolicyAdminsSid, DOMAIN_GROUP_RID_POLICY_ADMINS }, - { WinAccountRasAndIasServersSid, DOMAIN_ALIAS_RID_RAS_SERVERS }, + { {'L','A'}, WinAccountAdministratorSid, DOMAIN_USER_RID_ADMIN }, + { {'L','G'}, WinAccountGuestSid, DOMAIN_USER_RID_GUEST }, + { {0,0}, WinAccountKrbtgtSid, DOMAIN_USER_RID_KRBTGT }, + { {0,0}, WinAccountDomainAdminsSid, DOMAIN_GROUP_RID_ADMINS }, + { {0,0}, WinAccountDomainUsersSid, DOMAIN_GROUP_RID_USERS }, + { {0,0}, WinAccountDomainGuestsSid, DOMAIN_GROUP_RID_GUESTS }, + { {0,0}, WinAccountComputersSid, DOMAIN_GROUP_RID_COMPUTERS }, + { {0,0}, WinAccountControllersSid, DOMAIN_GROUP_RID_CONTROLLERS }, + { {0,0}, WinAccountCertAdminsSid, DOMAIN_GROUP_RID_CERT_ADMINS }, + { {0,0}, WinAccountSchemaAdminsSid, DOMAIN_GROUP_RID_SCHEMA_ADMINS }, + { {0,0}, WinAccountEnterpriseAdminsSid, DOMAIN_GROUP_RID_ENTERPRISE_ADMINS }, + { {0,0}, WinAccountPolicyAdminsSid, DOMAIN_GROUP_RID_POLICY_ADMINS }, + { {0,0}, WinAccountRasAndIasServersSid, DOMAIN_ALIAS_RID_RAS_SERVERS }, }; @@ -5257,6 +5258,15 @@ static DWORD ComputeStringSidSize(LPCWSTR StringSid) for (i = 0; i < sizeof(WellKnownSids)/sizeof(WellKnownSids[0]); i++) if (!strncmpW(WellKnownSids[i].wstr, StringSid, 2)) return GetSidLengthRequired(WellKnownSids[i].Sid.SubAuthorityCount); + + for (i = 0; i < sizeof(WellKnownRids)/sizeof(WellKnownRids[0]); i++) + if (!strncmpW(WellKnownRids[i].wstr, StringSid, 2)) + { + MAX_SID local; + ADVAPI_GetComputerSid(&local); + return GetSidLengthRequired(*GetSidSubAuthorityCount(&local) + 1); + } + } return GetSidLengthRequired(0); @@ -5284,7 +5294,7 @@ static BOOL ParseStringSidToSid(LPCWSTR StringSid, PSID pSid, LPDWORD cBytes) *cBytes = ComputeStringSidSize(StringSid); if (!pisid) /* Simply compute the size */ { - TRACE("only size requested, returning TRUE\n"); + TRACE("only size requested, returning TRUE with %d\n", *cBytes); return TRUE; } @@ -5363,6 +5373,15 @@ static BOOL ParseStringSidToSid(LPCWSTR StringSid, PSID pSid, LPDWORD cBytes) bret = TRUE; } + for (i = 0; i < sizeof(WellKnownRids)/sizeof(WellKnownRids[0]); i++) + if (!strncmpW(WellKnownRids[i].wstr, StringSid, 2)) + { + ADVAPI_GetComputerSid(pisid); + pisid->SubAuthority[pisid->SubAuthorityCount] = WellKnownRids[i].Rid; + pisid->SubAuthorityCount++; + bret = TRUE; + } + if (!bret) FIXME("String constant not supported: %s\n", debugstr_wn(StringSid, 2)); }
1
0
0
0
Christian Costa : d3drm: Implement texture SetAppData and GetAppData.
by Alexandre Julliard
13 Nov '12
13 Nov '12
Module: wine Branch: master Commit: 1b2aacc97bebd31b4176a7de8bacf371f124f6ed URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1b2aacc97bebd31b4176a7de8…
Author: Christian Costa <titan.costa(a)gmail.com> Date: Fri Nov 9 10:05:46 2012 +0100 d3drm: Implement texture SetAppData and GetAppData. --- dlls/d3drm/texture.c | 31 +++++++++++++++++++++---------- 1 files changed, 21 insertions(+), 10 deletions(-) diff --git a/dlls/d3drm/texture.c b/dlls/d3drm/texture.c index cfa7e85..8a0185e9 100644 --- a/dlls/d3drm/texture.c +++ b/dlls/d3drm/texture.c @@ -33,6 +33,7 @@ typedef struct { IDirect3DRMTexture2 IDirect3DRMTexture2_iface; IDirect3DRMTexture3 IDirect3DRMTexture3_iface; LONG ref; + DWORD app_data; } IDirect3DRMTextureImpl; static inline IDirect3DRMTextureImpl *impl_from_IDirect3DRMTexture2(IDirect3DRMTexture2 *iface) @@ -128,18 +129,22 @@ static HRESULT WINAPI IDirect3DRMTexture2Impl_DeleteDestroyCallback(IDirect3DRMT } static HRESULT WINAPI IDirect3DRMTexture2Impl_SetAppData(IDirect3DRMTexture2* iface, - DWORD data) + DWORD data) { - FIXME("(%p)->(%u): stub\n", iface, data); + IDirect3DRMTextureImpl *This = impl_from_IDirect3DRMTexture2(iface); - return E_NOTIMPL; + TRACE("(%p)->(%u)\n", iface, data); + + return IDirect3DRMTexture3_SetAppData(&This->IDirect3DRMTexture3_iface, data); } static DWORD WINAPI IDirect3DRMTexture2Impl_GetAppData(IDirect3DRMTexture2* iface) { - FIXME("(%p)->(): stub\n", iface); + IDirect3DRMTextureImpl *This = impl_from_IDirect3DRMTexture2(iface); - return 0; + TRACE("(%p)->()\n", iface); + + return IDirect3DRMTexture3_GetAppData(&This->IDirect3DRMTexture3_iface); } static HRESULT WINAPI IDirect3DRMTexture2Impl_SetName(IDirect3DRMTexture2* iface, LPCSTR name) @@ -492,18 +497,24 @@ static HRESULT WINAPI IDirect3DRMTexture3Impl_DeleteDestroyCallback(IDirect3DRMT } static HRESULT WINAPI IDirect3DRMTexture3Impl_SetAppData(IDirect3DRMTexture3* iface, - DWORD data) + DWORD data) { - FIXME("(%p)->(%u): stub\n", iface, data); + IDirect3DRMTextureImpl *This = impl_from_IDirect3DRMTexture3(iface); - return E_NOTIMPL; + TRACE("(%p)->(%u)\n", iface, data); + + This->app_data = data; + + return D3DRM_OK; } static DWORD WINAPI IDirect3DRMTexture3Impl_GetAppData(IDirect3DRMTexture3* iface) { - FIXME("(%p)->(): stub\n", iface); + IDirect3DRMTextureImpl *This = impl_from_IDirect3DRMTexture3(iface); - return 0; + TRACE("(%p)->()\n", iface); + + return This->app_data; } static HRESULT WINAPI IDirect3DRMTexture3Impl_SetName(IDirect3DRMTexture3* iface, LPCSTR name)
1
0
0
0
← Newer
1
...
41
42
43
44
45
46
47
...
71
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Results per page:
10
25
50
100
200