--- dlls/wined3d/arb_program_shader.c | 26 ++++++++++---------------- dlls/wined3d/ati_fragment_shader.c | 5 ----- dlls/wined3d/baseshader.c | 2 -- dlls/wined3d/device.c | 2 -- dlls/wined3d/glsl_shader.c | 21 +++++++++------------ dlls/wined3d/wined3d_private.h | 1 - 6 files changed, 19 insertions(+), 38 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 12d6a5b..a62aed7 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -1819,21 +1819,6 @@ static void shader_arb_select_depth_blt(IWineD3DDevice *iface) { glEnable(GL_FRAGMENT_PROGRAM_ARB); } -static void shader_arb_destroy_depth_blt(IWineD3DDevice *iface) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - struct shader_arb_priv *priv = (struct shader_arb_priv *) This->shader_priv; - WineD3D_GL_Info *gl_info = &This->adapter->gl_info; - - if(priv->depth_blt_vprogram_id) { - GL_EXTCALL(glDeleteProgramsARB(1, &priv->depth_blt_vprogram_id)); - priv->depth_blt_vprogram_id = 0; - } - if(priv->depth_blt_fprogram_id) { - GL_EXTCALL(glDeleteProgramsARB(1, &priv->depth_blt_fprogram_id)); - priv->depth_blt_fprogram_id = 0; - } -} - static void shader_arb_cleanup(IWineD3DDevice *iface) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; WineD3D_GL_Info *gl_info = &This->adapter->gl_info; @@ -1861,6 +1846,16 @@ static HRESULT shader_arb_alloc(IWineD3DDevice *iface) { static void shader_arb_free(IWineD3DDevice *iface) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + WineD3D_GL_Info *gl_info = &This->adapter->gl_info; + struct shader_arb_priv *priv = (struct shader_arb_priv *) This->shader_priv; + + if(priv->depth_blt_vprogram_id) { + GL_EXTCALL(glDeleteProgramsARB(1, &priv->depth_blt_vprogram_id)); + } + if(priv->depth_blt_fprogram_id) { + GL_EXTCALL(glDeleteProgramsARB(1, &priv->depth_blt_fprogram_id)); + } + HeapFree(GetProcessHeap(), 0, This->shader_priv); } @@ -2097,7 +2092,6 @@ static void shader_arb_fragment_enable(IWineD3DDevice *iface, BOOL enable) { const shader_backend_t arb_program_shader_backend = { shader_arb_select, shader_arb_select_depth_blt, - shader_arb_destroy_depth_blt, shader_arb_load_constants, shader_arb_cleanup, shader_arb_color_correction, diff --git a/dlls/wined3d/ati_fragment_shader.c b/dlls/wined3d/ati_fragment_shader.c index ebbb0c6..0c34474 100644 --- a/dlls/wined3d/ati_fragment_shader.c +++ b/dlls/wined3d/ati_fragment_shader.c @@ -976,10 +976,6 @@ static void shader_atifs_select_depth_blt(IWineD3DDevice *iface) { arb_program_shader_backend.shader_select_depth_blt(iface); } -static void shader_atifs_destroy_depth_blt(IWineD3DDevice *iface) { - arb_program_shader_backend.shader_destroy_depth_blt(iface); -} - static void shader_atifs_load_constants(IWineD3DDevice *iface, char usePS, char useVS) { arb_program_shader_backend.shader_load_constants(iface, usePS, useVS); } @@ -1111,7 +1107,6 @@ static void shader_atifs_fragment_enable(IWineD3DDevice *iface, BOOL enable) { const shader_backend_t atifs_shader_backend = { shader_atifs_select, shader_atifs_select_depth_blt, - shader_atifs_destroy_depth_blt, shader_atifs_load_constants, shader_atifs_cleanup, shader_atifs_color_correction, diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index 11d807f..a8806d3 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -1091,7 +1091,6 @@ void shader_trace_init( static void shader_none_select(IWineD3DDevice *iface, BOOL usePS, BOOL useVS) {} static void shader_none_select_depth_blt(IWineD3DDevice *iface) {} -static void shader_none_destroy_depth_blt(IWineD3DDevice *iface) {} static void shader_none_load_constants(IWineD3DDevice *iface, char usePS, char useVS) {} static void shader_none_cleanup(IWineD3DDevice *iface) {} static void shader_none_color_correction(SHADER_OPCODE_ARG* arg) {} @@ -1202,7 +1201,6 @@ static void shader_none_fragment_enable(IWineD3DDevice *iface, BOOL enable) { const shader_backend_t none_shader_backend = { shader_none_select, shader_none_select_depth_blt, - shader_none_destroy_depth_blt, shader_none_load_constants, shader_none_cleanup, shader_none_color_correction, diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 3f94a3f..d25e1bc 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -2283,7 +2283,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Uninit3D(IWineD3DDevice *iface, D3DCB_D This->depth_blt_rb_w = 0; This->depth_blt_rb_h = 0; } - This->shader_backend->shader_destroy_depth_blt(iface); This->shader_backend->shader_free_private(iface); /* Release the update stateblock */ @@ -7218,7 +7217,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Reset(IWineD3DDevice* iface, WINED3DPRE This->depth_blt_rb_w = 0; This->depth_blt_rb_h = 0; } - This->shader_backend->shader_destroy_depth_blt(iface); This->shader_backend->shader_free_private(iface); for (i = 0; i < GL_LIMITS(textures); i++) { diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 070aecb..1ff7e11 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -3398,17 +3398,6 @@ static void shader_glsl_select_depth_blt(IWineD3DDevice *iface) { GL_EXTCALL(glUniform1iARB(loc, 0)); } -static void shader_glsl_destroy_depth_blt(IWineD3DDevice *iface) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - struct shader_glsl_priv *priv = (struct shader_glsl_priv *) This->shader_priv; - WineD3D_GL_Info *gl_info = &This->adapter->gl_info; - - if(priv->depth_blt_glsl_program_id) { - GL_EXTCALL(glDeleteObjectARB(priv->depth_blt_glsl_program_id)); - priv->depth_blt_glsl_program_id = 0; - } -} - static void shader_glsl_cleanup(IWineD3DDevice *iface) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; WineD3D_GL_Info *gl_info = &This->adapter->gl_info; @@ -3483,6 +3472,15 @@ static HRESULT shader_glsl_alloc(IWineD3DDevice *iface) { static void shader_glsl_free(IWineD3DDevice *iface) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + WineD3D_GL_Info *gl_info = &This->adapter->gl_info; + struct shader_glsl_priv *priv = (struct shader_glsl_priv *)This->shader_priv; + + if(priv->depth_blt_glsl_program_id) { + GL_EXTCALL(glDeleteObjectARB(priv->depth_blt_glsl_program_id)); + } + + hash_table_destroy(priv->glsl_program_lookup); + HeapFree(GetProcessHeap(), 0, This->shader_priv); This->shader_priv = NULL; } @@ -3697,7 +3695,6 @@ static void shader_glsl_fragment_enable(IWineD3DDevice *iface, BOOL enable) { const shader_backend_t glsl_shader_backend = { shader_glsl_select, shader_glsl_select_depth_blt, - shader_glsl_destroy_depth_blt, shader_glsl_load_constants, shader_glsl_cleanup, shader_glsl_color_correction, diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index cb019c7..808d9bf 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -289,7 +289,6 @@ struct shader_caps { typedef struct { void (*shader_select)(IWineD3DDevice *iface, BOOL usePS, BOOL useVS); void (*shader_select_depth_blt)(IWineD3DDevice *iface); - void (*shader_destroy_depth_blt)(IWineD3DDevice *iface); void (*shader_load_constants)(IWineD3DDevice *iface, char usePS, char useVS); void (*shader_cleanup)(IWineD3DDevice *iface); void (*shader_color_correction)(struct SHADER_OPCODE_ARG *arg);