Add d3dxbuffer_release

This commit is contained in:
twinaphex 2018-01-06 21:30:50 +01:00
parent 9f6a97db76
commit 9fe3271900
4 changed files with 36 additions and 25 deletions

View File

@ -1477,3 +1477,24 @@ bool d3dx_create_font_indirect(LPDIRECT3DDEVICE dev,
return false;
#endif
}
void d3dxbuffer_release(void *data)
{
#ifdef HAVE_D3D9
#ifdef HAVE_D3DX
#ifdef __cplusplus
ID3DXBuffer *p = (ID3DXBuffer*)data;
#else
LPD3DXBUFFER p = (LPD3DXBUFFER)data;
#endif
if (!p)
return;
#ifdef __cplusplus
p->Release();
#else
p->lpVtbl->Release(p);
#endif
#endif
#endif
}

View File

@ -192,6 +192,8 @@ bool d3d_check_device_type(LPDIRECT3D d3d,
bool d3dx_create_font_indirect(LPDIRECT3DDEVICE dev,
void *desc, void **font_data);
void d3dxbuffer_release(void *data);
D3DTEXTUREFILTERTYPE d3d_translate_filter(unsigned type);
RETRO_END_DECLS

View File

@ -409,8 +409,8 @@ typedef struct GLYPH_ATTR
typedef struct
{
D3DVertexDeclaration *m_pFontVertexDecl;
D3DVertexShader *m_pFontVertexShader;
D3DPixelShader *m_pFontPixelShader;
D3DVertexShader *m_pFontVertexShader;
D3DPixelShader *m_pFontPixelShader;
} Font_Locals_t;
typedef struct
@ -486,7 +486,7 @@ static HRESULT xdk360_video_font_create_shaders(xdk360_video_font_t * font)
{
hr = d3dr->CreateVertexShader((const DWORD*)pShaderCode->GetBufferPointer(),
&font->s_FontLocals.m_pFontVertexShader );
pShaderCode->Release();
d3dxbuffer_release(pShaderCode);
if (hr >= 0)
{
@ -497,7 +497,7 @@ static HRESULT xdk360_video_font_create_shaders(xdk360_video_font_t * font)
{
hr = d3dr->CreatePixelShader((DWORD*)pShaderCode->GetBufferPointer(),
&font->s_FontLocals.m_pFontPixelShader );
pShaderCode->Release();
d3dxbuffer_release(pShaderCode);
if (hr >= 0)
{

View File

@ -77,12 +77,8 @@ typedef struct hlsl_shader_data hlsl_shader_data_t;
#define ID3DXConstantTable_GetBufferPointer(p) (p)->GetBufferPointer()
#endif
#ifndef ID3DXBuffer_Release
#define ID3DXBuffer_Release(p) (p)->Release()
#endif
#ifndef ID3DXConstantTable_GetConstantByName
#define ID3DXConstantTable_GetConstantByName(p,a,b) ((p)->GetConstantByName(a, b))
#ifndef ID3DXConstantTable_GetConstantByName
#define ID3DXConstantTable_GetConstantByName(p,a,b) ((p)->GetConstantByName(a, b))
#endif
#ifndef IDirect3DDevice9_CreatePixelShader
@ -127,12 +123,8 @@ typedef struct hlsl_shader_data hlsl_shader_data_t;
#define ID3DXConstantTable_GetBufferPointer(p) (p)->lpVtbl->GetBufferPointer(p)
#endif
#ifndef ID3DXBuffer_Release
#define ID3DXBuffer_Release(p) (p)->lpVtbl->Release(p)
#endif
#ifndef ID3DXConstantTable_GetConstantByName
#define ID3DXConstantTable_GetConstantByName(p,a,b) ((p)->lpVtbl->GetConstantByName(p, a, b))
#ifndef ID3DXConstantTable_GetConstantByName
#define ID3DXConstantTable_GetConstantByName(p,a,b) ((p)->lpVtbl->GetConstantByName(p, a, b))
#endif
#ifndef ID3DXConstantTable_SetMatrix
@ -303,18 +295,14 @@ static bool hlsl_compile_program(
IDirect3DDevice9_CreatePixelShader(d3dr, (const DWORD*)ID3DXConstantTable_GetBufferPointer(code_f), &program->fprg);
IDirect3DDevice9_CreateVertexShader(d3dr, (const DWORD*)ID3DXConstantTable_GetBufferPointer(code_v), &program->vprg);
ID3DXBuffer_Release(code_f);
ID3DXBuffer_Release(code_v);
d3dxbuffer_release((void*)code_f);
d3dxbuffer_release((void*)code_v);
end:
if (listing_f)
{
ID3DXBuffer_Release(listing_f);
}
d3dxbuffer_release((void*)listing_f);
if (listing_v)
{
ID3DXBuffer_Release(listing_v);
}
d3dxbuffer_release((void*)listing_v);
return ret;
}
@ -643,4 +631,4 @@ const shader_backend_t hlsl_backend = {
RARCH_SHADER_HLSL,
"hlsl"
};
};