mirror of
https://github.com/reactos/reactos.git
synced 2025-05-30 22:49:12 +00:00
[WINESYNC] d3dx9: Simplify effect init.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org> wine commit id 9a121f511533abb801ce49011e2a089b15265a44 by Matteo Bruni <mbruni@codeweavers.com>
This commit is contained in:
parent
f336e915a2
commit
eb06082f45
2 changed files with 30 additions and 48 deletions
|
@ -6146,32 +6146,46 @@ static const char **parse_skip_constants_string(char *skip_constants_string, uns
|
||||||
return new_alloc;
|
return new_alloc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT d3dx9_base_effect_init(struct d3dx_effect *effect, const char *data, SIZE_T data_size,
|
static HRESULT d3dx9_effect_init(struct d3dx_effect *effect, struct IDirect3DDevice9 *device,
|
||||||
const D3D_SHADER_MACRO *defines, ID3DInclude *include, unsigned int eflags, ID3DBlob **errors,
|
const char *data, SIZE_T data_size, const D3D_SHADER_MACRO *defines, ID3DInclude *include,
|
||||||
struct d3dx_effect_pool *pool, const char *skip_constants_string)
|
UINT eflags, ID3DBlob **errors, struct ID3DXEffectPool *pool, const char *skip_constants_string)
|
||||||
{
|
{
|
||||||
struct d3dx9_base_effect *base = &effect->base_effect;
|
|
||||||
DWORD tag, offset;
|
|
||||||
const char *ptr = data;
|
|
||||||
HRESULT hr;
|
|
||||||
ID3DBlob *bytecode = NULL, *temp_errors = NULL;
|
|
||||||
char *skip_constants_buffer = NULL;
|
|
||||||
const char **skip_constants = NULL;
|
|
||||||
unsigned int skip_constants_count = 0;
|
|
||||||
#if D3DX_SDK_VERSION <= 36
|
#if D3DX_SDK_VERSION <= 36
|
||||||
UINT compile_flags = D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY;
|
UINT compile_flags = D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY;
|
||||||
#else
|
#else
|
||||||
UINT compile_flags = 0;
|
UINT compile_flags = 0;
|
||||||
#endif
|
#endif
|
||||||
|
struct d3dx9_base_effect *base = &effect->base_effect;
|
||||||
|
ID3DBlob *bytecode = NULL, *temp_errors = NULL;
|
||||||
|
struct d3dx_effect_pool *pool_impl = NULL;
|
||||||
|
unsigned int skip_constants_count = 0;
|
||||||
|
char *skip_constants_buffer = NULL;
|
||||||
|
const char **skip_constants = NULL;
|
||||||
|
const char *ptr = data;
|
||||||
|
DWORD tag, offset;
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
TRACE("effect %p, data %p, data_size %lu, defines %p, include %p, eflags %#x, errors %p, "
|
TRACE("effect %p, device %p, data %p, data_size %lu, defines %p, include %p, eflags %#x, errors %p, "
|
||||||
"pool %p, skip_constants %s.\n",
|
"pool %p, skip_constants %s.\n",
|
||||||
effect, data, data_size, defines, include, eflags, errors, pool,
|
effect, device, data, data_size, defines, include, eflags, errors, pool,
|
||||||
debugstr_a(skip_constants_string));
|
debugstr_a(skip_constants_string));
|
||||||
|
|
||||||
|
effect->ID3DXEffect_iface.lpVtbl = &ID3DXEffect_Vtbl;
|
||||||
|
effect->ref = 1;
|
||||||
|
|
||||||
|
if (pool)
|
||||||
|
{
|
||||||
|
pool->lpVtbl->AddRef(pool);
|
||||||
|
pool_impl = impl_from_ID3DXEffectPool(pool);
|
||||||
|
}
|
||||||
|
effect->pool = pool;
|
||||||
|
|
||||||
|
IDirect3DDevice9_AddRef(device);
|
||||||
|
effect->device = device;
|
||||||
|
|
||||||
base->effect = effect;
|
base->effect = effect;
|
||||||
base->pool = pool;
|
base->pool = pool_impl;
|
||||||
base->flags = eflags;
|
base->flags = eflags;
|
||||||
|
|
||||||
read_dword(&ptr, &tag);
|
read_dword(&ptr, &tag);
|
||||||
|
@ -6287,38 +6301,6 @@ static HRESULT d3dx9_base_effect_init(struct d3dx_effect *effect, const char *da
|
||||||
HeapFree(GetProcessHeap(), 0, skip_constants_buffer);
|
HeapFree(GetProcessHeap(), 0, skip_constants_buffer);
|
||||||
HeapFree(GetProcessHeap(), 0, skip_constants);
|
HeapFree(GetProcessHeap(), 0, skip_constants);
|
||||||
|
|
||||||
return D3D_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT d3dx9_effect_init(struct d3dx_effect *effect, struct IDirect3DDevice9 *device,
|
|
||||||
const char *data, SIZE_T data_size, const D3D_SHADER_MACRO *defines, ID3DInclude *include,
|
|
||||||
UINT eflags, ID3DBlob **error_messages, struct ID3DXEffectPool *pool, const char *skip_constants)
|
|
||||||
{
|
|
||||||
HRESULT hr;
|
|
||||||
struct d3dx_effect_pool *pool_impl = NULL;
|
|
||||||
|
|
||||||
TRACE("effect %p, device %p, data %p, data_size %lu, pool %p\n", effect, device, data, data_size, pool);
|
|
||||||
|
|
||||||
effect->ID3DXEffect_iface.lpVtbl = &ID3DXEffect_Vtbl;
|
|
||||||
effect->ref = 1;
|
|
||||||
|
|
||||||
if (pool)
|
|
||||||
{
|
|
||||||
pool->lpVtbl->AddRef(pool);
|
|
||||||
pool_impl = impl_from_ID3DXEffectPool(pool);
|
|
||||||
}
|
|
||||||
effect->pool = pool;
|
|
||||||
|
|
||||||
IDirect3DDevice9_AddRef(device);
|
|
||||||
effect->device = device;
|
|
||||||
|
|
||||||
if (FAILED(hr = d3dx9_base_effect_init(effect, data, data_size, defines, include, eflags,
|
|
||||||
error_messages, pool_impl, skip_constants)))
|
|
||||||
{
|
|
||||||
FIXME("Failed to parse effect, hr %#x.\n", hr);
|
|
||||||
return hr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* initialize defaults - check because of unsupported ascii effects */
|
/* initialize defaults - check because of unsupported ascii effects */
|
||||||
if (effect->techniques)
|
if (effect->techniques)
|
||||||
{
|
{
|
||||||
|
@ -6362,7 +6344,7 @@ HRESULT WINAPI D3DXCreateEffectEx(struct IDirect3DDevice9 *device, const void *s
|
||||||
(ID3DInclude *)include, flags, (ID3DBlob **)compilation_errors, pool, skip_constants);
|
(ID3DInclude *)include, flags, (ID3DBlob **)compilation_errors, pool, skip_constants);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
WARN("Failed to create effect object.\n");
|
WARN("Failed to create effect object, hr %#x.\n", hr);
|
||||||
d3dx_effect_cleanup(object);
|
d3dx_effect_cleanup(object);
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,4 +15,4 @@ files: {include/d3dx9.h: sdk/include/dxsdk/d3dx9.h, include/d3dx9anim.h: sdk/inc
|
||||||
include/d3dx9mesh.h: sdk/include/dxsdk/d3dx9mesh.h, include/d3dx9of.h: sdk/include/dxsdk/d3dx9of.h,
|
include/d3dx9mesh.h: sdk/include/dxsdk/d3dx9mesh.h, include/d3dx9of.h: sdk/include/dxsdk/d3dx9of.h,
|
||||||
include/d3dx9shader.h: sdk/include/dxsdk/d3dx9shader.h, include/d3dx9shape.h: sdk/include/dxsdk/d3dx9shape.h,
|
include/d3dx9shader.h: sdk/include/dxsdk/d3dx9shader.h, include/d3dx9shape.h: sdk/include/dxsdk/d3dx9shape.h,
|
||||||
include/d3dx9tex.h: sdk/include/dxsdk/d3dx9tex.h, include/d3dx9xof.h: sdk/include/dxsdk/d3dx9xof.h}
|
include/d3dx9tex.h: sdk/include/dxsdk/d3dx9tex.h, include/d3dx9xof.h: sdk/include/dxsdk/d3dx9xof.h}
|
||||||
tags: {wine: 009279845d9503468d5d3d39e393ad2ffa00181d}
|
tags: {wine: 9a121f511533abb801ce49011e2a089b15265a44}
|
||||||
|
|
Loading…
Reference in a new issue