From d7fa70927c63dc9d08c88e16ffe4586895e05c77 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 23 Apr 2018 15:55:26 +0200 Subject: [PATCH] (HLSL) Cleanups --- gfx/drivers_shader/shader_hlsl.c | 41 ++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/gfx/drivers_shader/shader_hlsl.c b/gfx/drivers_shader/shader_hlsl.c index 28d1aa775a..552ea9d2bc 100644 --- a/gfx/drivers_shader/shader_hlsl.c +++ b/gfx/drivers_shader/shader_hlsl.c @@ -524,17 +524,23 @@ static void hlsl_deinit(void *data) static void hlsl_use(void *data, void *shader_data, unsigned idx, bool set_active) { - hlsl_shader_data_t *hlsl = (hlsl_shader_data_t*)shader_data; - LPDIRECT3DDEVICE9 d3dr = hlsl ? (LPDIRECT3DDEVICE9)hlsl->dev : NULL; + hlsl_shader_data_t *hlsl = (hlsl_shader_data_t*)shader_data; + LPDIRECT3DDEVICE9 d3dr = hlsl ? (LPDIRECT3DDEVICE9)hlsl->dev : NULL; + struct shader_program_hlsl_data *program = NULL; - if (!hlsl || !hlsl->prg[idx].vprg || !hlsl->prg[idx].fprg) + if (!hlsl) + return; + + program = &hlsl->prg[idx]; + + if (!program || !program->vprg || !program->fprg) return; if (set_active) - hlsl->active_idx = idx; + hlsl->active_idx = idx; - d3d9_set_vertex_shader(d3dr, idx, hlsl->prg[idx].vprg); - d3d9_set_pixel_shader(d3dr, hlsl->prg[idx].fprg); + d3d9_set_vertex_shader(d3dr, idx, program->vprg); + d3d9_set_pixel_shader(d3dr, program->fprg); } static unsigned hlsl_num(void *data) @@ -563,24 +569,29 @@ static void hlsl_shader_scale(void *data, unsigned idx, { hlsl_shader_data_t *hlsl = (hlsl_shader_data_t*)data; if (hlsl && idx) - *scale = hlsl->cg_shader->pass[idx - 1].fbo; + *scale = hlsl->cg_shader->pass[idx - 1].fbo; else - scale->valid = false; + scale->valid = false; } static bool hlsl_set_mvp(void *data, void *shader_data, const void *mat_data) { - hlsl_shader_data_t *hlsl = (hlsl_shader_data_t*)shader_data; - LPDIRECT3DDEVICE9 d3dr = hlsl ? + hlsl_shader_data_t *hlsl = (hlsl_shader_data_t*)shader_data; + LPDIRECT3DDEVICE9 d3dr = hlsl ? (LPDIRECT3DDEVICE9)hlsl->dev : NULL; - const math_matrix_4x4 *mat = (const math_matrix_4x4*)mat_data; + const math_matrix_4x4 *mat = (const math_matrix_4x4*)mat_data; + struct shader_program_hlsl_data *program = NULL; - if (!hlsl || !hlsl->prg[hlsl->active_idx].mvp) + if (!hlsl) return false; - ID3DXConstantTable_SetMatrix(hlsl->prg[hlsl->active_idx].v_ctable, d3dr, - hlsl->prg[hlsl->active_idx].mvp, - &hlsl->prg[hlsl->active_idx].mvp_val); + program = &hlsl->prg[hlsl->active_idx]; + + if (!program || !program->mvp) + return false; + + ID3DXConstantTable_SetMatrix(program->v_ctable, d3dr, + program->mvp, &program->mvp_val); return true; }