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; return false;
#endif #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, bool d3dx_create_font_indirect(LPDIRECT3DDEVICE dev,
void *desc, void **font_data); void *desc, void **font_data);
void d3dxbuffer_release(void *data);
D3DTEXTUREFILTERTYPE d3d_translate_filter(unsigned type); D3DTEXTUREFILTERTYPE d3d_translate_filter(unsigned type);
RETRO_END_DECLS RETRO_END_DECLS

View File

@ -409,8 +409,8 @@ typedef struct GLYPH_ATTR
typedef struct typedef struct
{ {
D3DVertexDeclaration *m_pFontVertexDecl; D3DVertexDeclaration *m_pFontVertexDecl;
D3DVertexShader *m_pFontVertexShader; D3DVertexShader *m_pFontVertexShader;
D3DPixelShader *m_pFontPixelShader; D3DPixelShader *m_pFontPixelShader;
} Font_Locals_t; } Font_Locals_t;
typedef struct 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(), hr = d3dr->CreateVertexShader((const DWORD*)pShaderCode->GetBufferPointer(),
&font->s_FontLocals.m_pFontVertexShader ); &font->s_FontLocals.m_pFontVertexShader );
pShaderCode->Release(); d3dxbuffer_release(pShaderCode);
if (hr >= 0) 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(), hr = d3dr->CreatePixelShader((DWORD*)pShaderCode->GetBufferPointer(),
&font->s_FontLocals.m_pFontPixelShader ); &font->s_FontLocals.m_pFontPixelShader );
pShaderCode->Release(); d3dxbuffer_release(pShaderCode);
if (hr >= 0) if (hr >= 0)
{ {

View File

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