From e03e578212695299240bc7285ba560171944c1b0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 6 Jan 2018 22:49:17 +0100 Subject: [PATCH] Add d3d_set_pixel_shader --- gfx/common/d3d_common.c | 29 ++++++++++++++++++++++++----- gfx/common/d3d_common.h | 4 +++- gfx/drivers_font/xdk360_fonts.cpp | 4 ++-- gfx/drivers_shader/shader_hlsl.c | 8 ++------ 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/gfx/common/d3d_common.c b/gfx/common/d3d_common.c index aa8c391d33..949ac3fda6 100644 --- a/gfx/common/d3d_common.c +++ b/gfx/common/d3d_common.c @@ -1023,22 +1023,41 @@ void d3d_set_texture(LPDIRECT3DDEVICE dev, unsigned sampler, #endif } -HRESULT d3d_set_vertex_shader(LPDIRECT3DDEVICE dev, unsigned index, +bool d3d_set_pixel_shader(LPDIRECT3DDEVICE dev, void *data) +{ +#ifdef HAVE_D3D9 + if (!dev) + return false; +#if defined(__cplusplus) + if (dev->SetPixelShader(data) != D3D_OK) + return true; +#else + if (IDirect3DDevice9_SetPixelShader(dev, data) != D3D_OK) + return true; +#endif +#endif + return false; +} + +bool d3d_set_vertex_shader(LPDIRECT3DDEVICE dev, unsigned index, void *data) { #if defined(_XBOX360) LPDIRECT3DVERTEXSHADER shader = (LPDIRECT3DVERTEXSHADER)data; D3DDevice_SetVertexShader(dev, shader); - return S_OK; #elif defined(HAVE_D3D8) && !defined(__cplusplus) - return IDirect3DDevice8_SetVertexShader(dev, index); + if (IDirect3DDevice8_SetVertexShader(dev, index) != D3D_OK) + return false; #elif defined(HAVE_D3D9) && !defined(__cplusplus) LPDIRECT3DVERTEXSHADER shader = (LPDIRECT3DVERTEXSHADER)data; - return IDirect3DDevice9_SetVertexShader(dev, shader); + if (IDirect3DDevice9_SetVertexShader(dev, shader) != D3D_OK) + return false; #else LPDIRECT3DVERTEXSHADER shader = (LPDIRECT3DVERTEXSHADER)data; - return dev->SetVertexShader(shader); + if (dev->SetVertexShader(shader) != D3D_OK) + return false; #endif + return true; } diff --git a/gfx/common/d3d_common.h b/gfx/common/d3d_common.h index 4e0cf67adc..95581721b7 100644 --- a/gfx/common/d3d_common.h +++ b/gfx/common/d3d_common.h @@ -93,7 +93,9 @@ void d3d_unlock_rectangle(LPDIRECT3DTEXTURE tex); void d3d_set_texture(LPDIRECT3DDEVICE dev, unsigned sampler, void *tex_data); -HRESULT d3d_set_vertex_shader(LPDIRECT3DDEVICE dev, unsigned index, +bool d3d_set_pixel_shader(LPDIRECT3DDEVICE dev, void *data); + +bool d3d_set_vertex_shader(LPDIRECT3DDEVICE dev, unsigned index, void *data); void d3d_texture_blit(unsigned pixel_size, diff --git a/gfx/drivers_font/xdk360_fonts.cpp b/gfx/drivers_font/xdk360_fonts.cpp index 4769e406b1..65cdc484ad 100644 --- a/gfx/drivers_font/xdk360_fonts.cpp +++ b/gfx/drivers_font/xdk360_fonts.cpp @@ -632,7 +632,7 @@ static void xdk360_render_msg_post(xdk360_video_font_t * font) d3d_set_texture(d3dr, 0, NULL); d3d_set_vertex_declaration(d3dr, NULL); d3d_set_vertex_shader(d3dr, 0, NULL); - D3DDevice_SetPixelShader(d3dr, NULL); + d3d_set_pixel_shader(d3dr, NULL); d3d_set_render_state(d3dr, D3DRS_VIEWPORTENABLE, font->m_dwSavedState); } @@ -661,7 +661,7 @@ static void xdk360_render_msg_pre(xdk360_video_font_t * font) d3d_set_render_state(d3dr, D3DRS_VIEWPORTENABLE, FALSE); d3d_set_vertex_declaration(d3dr, font->s_FontLocals.m_pFontVertexDecl); d3d_set_vertex_shader(d3dr, 0, font->s_FontLocals.m_pFontVertexShader); - d3dr->SetPixelShader(font->s_FontLocals.m_pFontPixelShader); + d3d_set_pixel_shader(d3dr, font->s_FontLocals.m_pFontPixelShader); /* Set the texture scaling factor as a vertex shader constant. * Call here to avoid load hit store from writing to vTexScale above diff --git a/gfx/drivers_shader/shader_hlsl.c b/gfx/drivers_shader/shader_hlsl.c index 1df13a0aa5..156e6fa715 100644 --- a/gfx/drivers_shader/shader_hlsl.c +++ b/gfx/drivers_shader/shader_hlsl.c @@ -89,10 +89,6 @@ typedef struct hlsl_shader_data hlsl_shader_data_t; #define IDirect3DDevice9_CreateVertexShader(p, a, b) ((p)->CreateVertexShader(a, b)) #endif -#ifndef IDirect3DDevice9_SetPixelShader -#define IDirect3DDevice9_SetPixelShader(p, a) ((p)->SetPixelShader(a)) -#endif - #ifndef IDirect3DPixelShader9_Release #define IDirect3DPixelShader9_Release(p) ((p)->Release()) #endif @@ -512,7 +508,7 @@ static void *hlsl_init(void *data, const char *path) hlsl_set_program_attributes(hlsl_data, i); d3d_set_vertex_shader(d3d->dev, 1, hlsl_data->prg[1].vprg); - IDirect3DDevice9_SetPixelShader(d3d->dev, hlsl_data->prg[1].fprg); + d3d_set_pixel_shader(d3d->dev, hlsl_data->prg[1].fprg); return hlsl_data; @@ -544,7 +540,7 @@ static void hlsl_use(void *data, void *shader_data, unsigned idx, bool set_activ hlsl_data->active_idx = idx; d3d_set_vertex_shader(d3dr, idx, hlsl_data->prg[idx].vprg); - IDirect3DDevice9_SetPixelShader(d3dr, hlsl_data->prg[idx].fprg); + d3d_set_pixel_shader(d3dr, hlsl_data->prg[idx].fprg); } }