diff --git a/gfx/common/d3d11_common.h b/gfx/common/d3d11_common.h index 77833e4d56..2477985e5b 100644 --- a/gfx/common/d3d11_common.h +++ b/gfx/common/d3d11_common.h @@ -2672,13 +2672,3 @@ static INLINE void d3d11_release_shader(d3d11_shader_t* shader) Release(shader->ps); Release(shader->gs); } -#if !defined(__cplusplus) || defined(CINTERFACE) -static INLINE void d3d11_set_shader(D3D11DeviceContext ctx, d3d11_shader_t* shader) -{ - ctx->lpVtbl->IASetInputLayout(ctx, shader->layout); - ctx->lpVtbl->VSSetShader(ctx, shader->vs, NULL, 0); - ctx->lpVtbl->PSSetShader(ctx, shader->ps, NULL, 0); - ctx->lpVtbl->GSSetShader(ctx, shader->gs, NULL, 0); -} - -#endif diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index 0b0fcebcd0..e98fddbc3b 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -405,14 +405,18 @@ static void d3d11_set_hdr10(d3d11_video_t* d3d11, bool hdr10) static void d3d11_set_filtering(void* data, unsigned index, bool smooth, bool ctx_scaling) { - unsigned i; d3d11_video_t* d3d11 = (d3d11_video_t*)data; - for (i = 0; i < RARCH_WRAP_MAX; i++) + if (smooth) { - if (smooth) + unsigned i; + for (i = 0; i < RARCH_WRAP_MAX; i++) d3d11->samplers[RARCH_FILTER_UNSPEC][i] = d3d11->samplers[RARCH_FILTER_LINEAR][i]; - else + } + else + { + unsigned i; + for (i = 0; i < RARCH_WRAP_MAX; i++) d3d11->samplers[RARCH_FILTER_UNSPEC][i] = d3d11->samplers[RARCH_FILTER_NEAREST][i]; } } @@ -2002,7 +2006,13 @@ static bool d3d11_gfx_frame( { unsigned j; - d3d11_set_shader(context, &d3d11->pass[i].shader); + { + d3d11_shader_t *shader = &d3d11->pass[i].shader; + context->lpVtbl->IASetInputLayout(context, shader->layout); + context->lpVtbl->VSSetShader(context, shader->vs, NULL, 0); + context->lpVtbl->PSSetShader(context, shader->ps, NULL, 0); + context->lpVtbl->GSSetShader(context, shader->gs, NULL, 0); + } if (d3d11->shader_preset->pass[i].frame_count_mod) d3d11->pass[i].frame_count = @@ -2097,7 +2107,13 @@ static bool d3d11_gfx_frame( if (texture) { - d3d11_set_shader(context, &d3d11->shaders[VIDEO_SHADER_STOCK_BLEND]); + { + d3d11_shader_t *shader = &d3d11->shaders[VIDEO_SHADER_STOCK_BLEND]; + context->lpVtbl->IASetInputLayout(context, shader->layout); + context->lpVtbl->VSSetShader(context, shader->vs, NULL, 0); + context->lpVtbl->PSSetShader(context, shader->ps, NULL, 0); + context->lpVtbl->GSSetShader(context, shader->gs, NULL, 0); + } D3D11SetPShaderResources(context, 0, 1, &texture->view); D3D11SetPShaderSamplers( context, 0, 1, &d3d11->samplers[RARCH_FILTER_UNSPEC][RARCH_WRAP_DEFAULT]); @@ -2115,7 +2131,13 @@ static bool d3d11_gfx_frame( if (d3d11->menu.fullscreen) D3D11SetViewports(context, 1, &d3d11->viewport); - d3d11_set_shader(context, &d3d11->shaders[VIDEO_SHADER_STOCK_BLEND]); + { + d3d11_shader_t *shader = &d3d11->shaders[VIDEO_SHADER_STOCK_BLEND]; + context->lpVtbl->IASetInputLayout(context, shader->layout); + context->lpVtbl->VSSetShader(context, shader->vs, NULL, 0); + context->lpVtbl->PSSetShader(context, shader->ps, NULL, 0); + context->lpVtbl->GSSetShader(context, shader->gs, NULL, 0); + } { UINT stride = sizeof(d3d11_vertex_t); UINT offset = 0; @@ -2132,7 +2154,13 @@ static bool d3d11_gfx_frame( #endif D3D11SetViewports(context, 1, &d3d11->viewport); - d3d11_set_shader(context, &d3d11->sprites.shader); + { + d3d11_shader_t *shader = &d3d11->sprites.shader; + context->lpVtbl->IASetInputLayout(context, shader->layout); + context->lpVtbl->VSSetShader(context, shader->vs, NULL, 0); + context->lpVtbl->PSSetShader(context, shader->ps, NULL, 0); + context->lpVtbl->GSSetShader(context, shader->gs, NULL, 0); + } D3D11SetPrimitiveTopology(context, D3D11_PRIMITIVE_TOPOLOGY_POINTLIST); D3D11SetVShaderConstantBuffers(context, 0, 1, &d3d11->ubo); D3D11SetPShaderConstantBuffers(context, 0, 1, &d3d11->ubo); @@ -2229,8 +2257,13 @@ static bool d3d11_gfx_frame( D3D11SetScissorRects(context, 1, &d3d11->scissor); - d3d11_set_shader(context, - &d3d11->shaders[VIDEO_SHADER_STOCK_HDR]); + { + d3d11_shader_t *shader = &d3d11->shaders[VIDEO_SHADER_STOCK_HDR]; + context->lpVtbl->IASetInputLayout(context, shader->layout); + context->lpVtbl->VSSetShader(context, shader->vs, NULL, 0); + context->lpVtbl->PSSetShader(context, shader->ps, NULL, 0); + context->lpVtbl->GSSetShader(context, shader->gs, NULL, 0); + } D3D11SetVShaderConstantBuffers(context, 0, 1, &d3d11->hdr.ubo); D3D11SetPShaderResources(context, 0, 1, diff --git a/gfx/drivers_display/gfx_display_d3d11.c b/gfx/drivers_display/gfx_display_d3d11.c index d55f0d00e0..0acb8e9139 100644 --- a/gfx/drivers_display/gfx_display_d3d11.c +++ b/gfx/drivers_display/gfx_display_d3d11.c @@ -58,11 +58,23 @@ static void gfx_display_d3d11_draw(gfx_display_ctx_draw_t *draw, case VIDEO_SHADER_MENU_4: case VIDEO_SHADER_MENU_5: case VIDEO_SHADER_MENU_6: - d3d11_set_shader(d3d11->context, &d3d11->shaders[draw->pipeline_id]); + { + d3d11_shader_t *shader = &d3d11->shaders[draw->pipeline_id]; + d3d11->context->lpVtbl->IASetInputLayout(d3d11->context, shader->layout); + d3d11->context->lpVtbl->VSSetShader(d3d11->context, shader->vs, NULL, 0); + d3d11->context->lpVtbl->PSSetShader(d3d11->context, shader->ps, NULL, 0); + d3d11->context->lpVtbl->GSSetShader(d3d11->context, shader->gs, NULL, 0); + } D3D11Draw(d3d11->context, draw->coords->vertices, 0); D3D11SetBlendState(d3d11->context, d3d11->blend_enable, NULL, D3D11_DEFAULT_SAMPLE_MASK); - d3d11_set_shader(d3d11->context, &d3d11->sprites.shader); + { + d3d11_shader_t *shader = &d3d11->sprites.shader; + d3d11->context->lpVtbl->IASetInputLayout(d3d11->context, shader->layout); + d3d11->context->lpVtbl->VSSetShader(d3d11->context, shader->vs, NULL, 0); + d3d11->context->lpVtbl->PSSetShader(d3d11->context, shader->ps, NULL, 0); + d3d11->context->lpVtbl->GSSetShader(d3d11->context, shader->gs, NULL, 0); + } { UINT stride = sizeof(d3d11_sprite_t); UINT offset = 0; @@ -146,7 +158,13 @@ static void gfx_display_d3d11_draw(gfx_display_ctx_draw_t *draw, sprite++; } - d3d11_set_shader(d3d11->context, &d3d11->shaders[VIDEO_SHADER_STOCK_BLEND]); + { + d3d11_shader_t *shader = &d3d11->shaders[VIDEO_SHADER_STOCK_BLEND]; + d3d11->context->lpVtbl->IASetInputLayout(d3d11->context, shader->layout); + d3d11->context->lpVtbl->VSSetShader(d3d11->context, shader->vs, NULL, 0); + d3d11->context->lpVtbl->PSSetShader(d3d11->context, shader->ps, NULL, 0); + d3d11->context->lpVtbl->GSSetShader(d3d11->context, shader->gs, NULL, 0); + } D3D11SetPrimitiveTopology(d3d11->context, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); } @@ -164,11 +182,13 @@ static void gfx_display_d3d11_draw(gfx_display_ctx_draw_t *draw, if (vertex_count > 1) { - d3d11_set_shader(d3d11->context, &d3d11->sprites.shader); + d3d11_shader_t *shader = &d3d11->sprites.shader; + d3d11->context->lpVtbl->IASetInputLayout(d3d11->context, shader->layout); + d3d11->context->lpVtbl->VSSetShader(d3d11->context, shader->vs, NULL, 0); + d3d11->context->lpVtbl->PSSetShader(d3d11->context, shader->ps, NULL, 0); + d3d11->context->lpVtbl->GSSetShader(d3d11->context, shader->gs, NULL, 0); D3D11SetPrimitiveTopology(d3d11->context, D3D11_PRIMITIVE_TOPOLOGY_POINTLIST); } - - return; } static void gfx_display_d3d11_draw_pipeline(gfx_display_ctx_draw_t *draw, @@ -194,10 +214,10 @@ static void gfx_display_d3d11_draw_pipeline(gfx_display_ctx_draw_t *draw, desc.ByteWidth = ca->coords.vertices * 2 * sizeof(float); desc.BindFlags = D3D11_BIND_VERTEX_BUFFER; - { + { D3D11_SUBRESOURCE_DATA vertexData = { ca->coords.vertex }; D3D11CreateBuffer(d3d11->device, &desc, &vertexData, &d3d11->menu_pipeline_vbo); - } + } } { UINT stride = 2 * sizeof(float); @@ -266,7 +286,7 @@ void gfx_display_d3d11_scissor_begin(void *data, rect.left = x; rect.top = y; - rect.right = width + x; + rect.right = width + x; rect.bottom = height + y; D3D11SetScissorRects(d3d11->context, 1, &rect);