aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Weissflog <floooh@gmail.com>2021-06-22 18:16:32 +0200
committerAndre Weissflog <floooh@gmail.com>2021-06-22 18:16:32 +0200
commit444bca192dcc284d4d9ea4eed7eff4dde4b44e70 (patch)
tree7f4ea0d91e436641812d57a53eafe8d23c20e305
parent974d3cd7309d13bc579404418987722da79261ce (diff)
sokol_gfx.h d3d11: use ID3D11DeviceContext::ClearState() to clear device state
-rw-r--r--sokol_gfx.h24
1 files changed, 9 insertions, 15 deletions
diff --git a/sokol_gfx.h b/sokol_gfx.h
index cb6d7d55..0c512c4d 100644
--- a/sokol_gfx.h
+++ b/sokol_gfx.h
@@ -7844,6 +7844,14 @@ static inline void _sg_d3d11_Unmap(ID3D11DeviceContext* self, ID3D11Resource* pR
#endif
}
+static inline void _sg_d3d11_ClearState(ID3D11DeviceContext* self) {
+ #if defined(__cplusplus)
+ self->ClearState();
+ #else
+ self->lpVtbl->ClearState(self);
+ #endif
+}
+
/*-- enum translation functions ----------------------------------------------*/
_SOKOL_PRIVATE D3D11_USAGE _sg_d3d11_usage(sg_usage usg) {
switch (usg) {
@@ -8182,21 +8190,7 @@ _SOKOL_PRIVATE void _sg_d3d11_discard_backend(void) {
_SOKOL_PRIVATE void _sg_d3d11_clear_state(void) {
/* clear all the device context state, so that resource refs don't keep stuck in the d3d device context */
- _sg_d3d11_OMSetRenderTargets(_sg.d3d11.ctx, SG_MAX_COLOR_ATTACHMENTS, _sg.d3d11.zero_rtvs, NULL);
- _sg_d3d11_RSSetState(_sg.d3d11.ctx, NULL);
- _sg_d3d11_OMSetDepthStencilState(_sg.d3d11.ctx, NULL, 0);
- _sg_d3d11_OMSetBlendState(_sg.d3d11.ctx, NULL, NULL, 0xFFFFFFFF);
- _sg_d3d11_IASetVertexBuffers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_BUFFERS, _sg.d3d11.zero_vbs, _sg.d3d11.zero_vb_strides, _sg.d3d11.zero_vb_offsets);
- _sg_d3d11_IASetIndexBuffer(_sg.d3d11.ctx, NULL, DXGI_FORMAT_UNKNOWN, 0);
- _sg_d3d11_IASetInputLayout(_sg.d3d11.ctx, NULL);
- _sg_d3d11_VSSetShader(_sg.d3d11.ctx, NULL, NULL, 0);
- _sg_d3d11_PSSetShader(_sg.d3d11.ctx, NULL, NULL, 0);
- _sg_d3d11_VSSetConstantBuffers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_UBS, _sg.d3d11.zero_cbs);
- _sg_d3d11_PSSetConstantBuffers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_UBS, _sg.d3d11.zero_cbs);
- _sg_d3d11_VSSetShaderResources(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_IMAGES, _sg.d3d11.zero_srvs);
- _sg_d3d11_PSSetShaderResources(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_IMAGES, _sg.d3d11.zero_srvs);
- _sg_d3d11_VSSetSamplers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_IMAGES, _sg.d3d11.zero_smps);
- _sg_d3d11_PSSetSamplers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_IMAGES, _sg.d3d11.zero_smps);
+ _sg_d3d11_ClearState(_sg.d3d11.ctx);
}
_SOKOL_PRIVATE void _sg_d3d11_reset_state_cache(void) {