diff options
| author | Andre Weissflog <floooh@gmail.com> | 2024-02-06 18:05:04 +0100 |
|---|---|---|
| committer | Andre Weissflog <floooh@gmail.com> | 2024-02-06 18:05:04 +0100 |
| commit | 4a714e8b23e9d7f061954d5ee2473d17d88ad926 (patch) | |
| tree | 7e98b5456498bb4f6304ec6424d846e3a88a453a /sokol_app.h | |
| parent | 6268ab86cd5802691074475ab6753b626fc9d008 (diff) | |
sokol_app.h, sokol_gfx.h d3d11: move d3d11 swapchain msaa resolve into sokol_gfx.h
Diffstat (limited to 'sokol_app.h')
| -rw-r--r-- | sokol_app.h | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/sokol_app.h b/sokol_app.h index 0d450be7..ae26f361 100644 --- a/sokol_app.h +++ b/sokol_app.h @@ -294,7 +294,8 @@ const void* sapp_d3d11_get_device(void) const void* sapp_d3d11_get_device_context(void) - const void* sapp_d3d11_get_render_target_view(void) + const void* sapp_d3d11_get_render_view(void) + const void* sapp_d3d11_get_resolve_view(void); const void* sapp_d3d11_get_depth_stencil_view(void) Similar to the sapp_metal_* functions, the sapp_d3d11_* functions return pointers to D3D11 API objects required for rendering, @@ -1863,9 +1864,11 @@ SOKOL_APP_API_DECL const void* sapp_d3d11_get_device(void); SOKOL_APP_API_DECL const void* sapp_d3d11_get_device_context(void); /* D3D11: get pointer to IDXGISwapChain object */ SOKOL_APP_API_DECL const void* sapp_d3d11_get_swap_chain(void); -/* D3D11: get pointer to ID3D11RenderTargetView object */ -SOKOL_APP_API_DECL const void* sapp_d3d11_get_render_target_view(void); -/* D3D11: get pointer to ID3D11DepthStencilView */ +/* D3D11: get pointer to ID3D11RenderTargetView object for rendering */ +SOKOL_APP_API_DECL const void* sapp_d3d11_get_render_view(void); +/* D3D11: get pointer ID3D11RenderTargetView object for msaa-resolve (may return null) */ +SOKOL_APP_API_DECL const void* sapp_d3d11_get_resolve_view(void); +/* D3D11: get pointer ID3D11DepthStencilView */ SOKOL_APP_API_DECL const void* sapp_d3d11_get_depth_stencil_view(void); /* Win32: get the HWND window handle */ SOKOL_APP_API_DECL const void* sapp_win32_get_hwnd(void); @@ -6319,14 +6322,6 @@ static inline HRESULT _sapp_d3d11_CreateDepthStencilView(ID3D11Device* self, ID3 #endif } -static inline void _sapp_d3d11_ResolveSubresource(ID3D11DeviceContext* self, ID3D11Resource* pDstResource, UINT DstSubresource, ID3D11Resource* pSrcResource, UINT SrcSubresource, DXGI_FORMAT Format) { - #if defined(__cplusplus) - self->ResolveSubresource(pDstResource, DstSubresource, pSrcResource, SrcSubresource, Format); - #else - self->lpVtbl->ResolveSubresource(self, pDstResource, DstSubresource, pSrcResource, SrcSubresource, Format); - #endif -} - static inline HRESULT _sapp_dxgi_ResizeBuffers(IDXGISwapChain* self, UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags) { #if defined(__cplusplus) return self->ResizeBuffers(BufferCount, Width, Height, NewFormat, SwapChainFlags); @@ -6552,12 +6547,6 @@ _SOKOL_PRIVATE void _sapp_d3d11_resize_default_render_target(void) { } _SOKOL_PRIVATE void _sapp_d3d11_present(bool do_not_wait) { - /* do MSAA resolve if needed */ - if (_sapp.sample_count > 1) { - SOKOL_ASSERT(_sapp.d3d11.rt); - SOKOL_ASSERT(_sapp.d3d11.msaa_rt); - _sapp_d3d11_ResolveSubresource(_sapp.d3d11.device_context, (ID3D11Resource*)_sapp.d3d11.rt, 0, (ID3D11Resource*)_sapp.d3d11.msaa_rt, 0, DXGI_FORMAT_B8G8R8A8_UNORM); - } UINT flags = 0; if (_sapp.win32.is_win10_or_greater && do_not_wait) { /* this hack/workaround somewhat improves window-movement and -sizing @@ -11611,14 +11600,29 @@ SOKOL_API_IMPL const void* sapp_d3d11_get_swap_chain(void) { #endif } -SOKOL_API_IMPL const void* sapp_d3d11_get_render_target_view(void) { +SOKOL_API_IMPL const void* sapp_d3d11_get_render_view(void) { SOKOL_ASSERT(_sapp.valid); #if defined(SOKOL_D3D11) - if (_sapp.d3d11.msaa_rtv) { + if (_sapp.sample_count > 1) { + SOKOL_ASSERT(_sapp.d3d11.msaa_rtv); return _sapp.d3d11.msaa_rtv; + } else { + SOKOL_ASSERT(_sapp.d3d11.rtv); + return _sapp.d3d11.rtv; } - else { + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_d3d11_get_resolve_view(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(SOKOL_D3D11) + if (_sapp.sample_count > 1) { + SOKOL_ASSERT(_sapp.d3d11.rtv); return _sapp.d3d11.rtv; + } else { + return 0; } #else return 0; @@ -11656,9 +11660,10 @@ SOKOL_API_IMPL const void* sapp_wgpu_get_render_view(void) { SOKOL_ASSERT(_sapp.valid); #if defined(_SAPP_EMSCRIPTEN) && defined(SOKOL_WGPU) if (_sapp.sample_count > 1) { + SOKOL_ASSERT(_sapp.wgpu.msaa_view); return (const void*) _sapp.wgpu.msaa_view; - } - else { + } else { + SOKOL_ASSERT(_sapp.wgpu.swapchain_view); return (const void*) _sapp.wgpu.swapchain_view; } #else @@ -11670,9 +11675,9 @@ SOKOL_API_IMPL const void* sapp_wgpu_get_resolve_view(void) { SOKOL_ASSERT(_sapp.valid); #if defined(_SAPP_EMSCRIPTEN) && defined(SOKOL_WGPU) if (_sapp.sample_count > 1) { + SOKOL_ASSERT(_sapp.wgpu.swapchain_view); return (const void*) _sapp.wgpu.swapchain_view; - } - else { + } else { return 0; } #else |