diff options
| author | Jason Maskell <[email protected]> | 2016-05-25 16:02:23 +0200 |
|---|---|---|
| committer | Jason Maskell <[email protected]> | 2016-05-25 16:02:23 +0200 |
| commit | 69f624cfc22c361a8162f57df4a71e4324805717 (patch) | |
| tree | 245e0e5ebcb120fc573eb44d82755c1456e0d519 /src/Savestate.cpp | |
| parent | Added OpenGL sample - compiles and runs but doesn't work. (diff) | |
| download | waveworks_archive-69f624cfc22c361a8162f57df4a71e4324805717.tar.xz waveworks_archive-69f624cfc22c361a8162f57df4a71e4324805717.zip | |
Excised D3D9 and 10 support from library.
Diffstat (limited to 'src/Savestate.cpp')
| -rw-r--r-- | src/Savestate.cpp | 805 |
1 files changed, 0 insertions, 805 deletions
diff --git a/src/Savestate.cpp b/src/Savestate.cpp index c4bd924..f6a4e98 100644 --- a/src/Savestate.cpp +++ b/src/Savestate.cpp @@ -32,44 +32,6 @@ #include <string.h> -GFSDK_WaveWorks_Savestate::GFSDK_WaveWorks_Savestate(IDirect3DDevice9* D3D9_ONLY(pD3DDevice), GFSDK_WaveWorks_StatePreserveFlags PreserveFlags) : - m_UserPreserveFlags(PreserveFlags) -{ - memset(&m_d3d, 0, sizeof(m_d3d)); - - m_d3dAPI = nv_water_d3d_api_d3d9; - -#if WAVEWORKS_ENABLE_D3D9 - m_d3d._9.m_pEndVertexShaderConstantF = m_d3d._9.m_VertexShaderConstantF; - m_d3d._9.m_pEndPixelShaderConstantF = m_d3d._9.m_PixelShaderConstantF; - m_d3d._9.m_pEndTexture = m_d3d._9.m_Texture; - m_d3d._9.m_pEndSamplerState = m_d3d._9.m_SamplerState; - m_d3d._9.m_pEndRenderState = m_d3d._9.m_RenderState; - - m_d3d._9.m_pd3d9Device = pD3DDevice; - m_d3d._9.m_pd3d9Device->AddRef(); -#endif -} - -GFSDK_WaveWorks_Savestate::GFSDK_WaveWorks_Savestate(ID3D10Device* D3D10_ONLY(pD3DDevice), GFSDK_WaveWorks_StatePreserveFlags PreserveFlags) : - m_UserPreserveFlags(PreserveFlags) -{ - memset(&m_d3d, 0, sizeof(m_d3d)); - - m_d3dAPI = nv_water_d3d_api_d3d10; - -#if WAVEWORKS_ENABLE_D3D10 - m_d3d._10.m_pEndVertexShaderConstantBuffer = m_d3d._10.m_VertexShaderConstantBuffer; - m_d3d._10.m_pEndPixelShaderConstantBuffer = m_d3d._10.m_PixelShaderConstantBuffer; - m_d3d._10.m_pEndVertexShaderSampler = m_d3d._10.m_VertexShaderSampler; - m_d3d._10.m_pEndPixelShaderSampler = m_d3d._10.m_PixelShaderSampler; - m_d3d._10.m_pEndVertexShaderResource = m_d3d._10.m_VertexShaderResource; - m_d3d._10.m_pEndPixelShaderResource = m_d3d._10.m_PixelShaderResource; - - m_d3d._10.m_pd3d10Device = pD3DDevice; - m_d3d._10.m_pd3d10Device->AddRef(); -#endif -} GFSDK_WaveWorks_Savestate::GFSDK_WaveWorks_Savestate(ID3D11Device* D3D11_ONLY(pD3DDevice), GFSDK_WaveWorks_StatePreserveFlags PreserveFlags) : m_UserPreserveFlags(PreserveFlags) @@ -106,18 +68,6 @@ GFSDK_WaveWorks_Savestate::~GFSDK_WaveWorks_Savestate() #if WAVEWORKS_ENABLE_GRAPHICS switch(m_d3dAPI) { -#if WAVEWORKS_ENABLE_D3D9 - case nv_water_d3d_api_d3d9: - ReleaseD3D9Resources(); - m_d3d._9.m_pd3d9Device->Release(); - break; -#endif -#if WAVEWORKS_ENABLE_D3D10 - case nv_water_d3d_api_d3d10: - ReleaseD3D10Resources(); - m_d3d._10.m_pd3d10Device->Release(); - break; -#endif #if WAVEWORKS_ENABLE_D3D11 case nv_water_d3d_api_d3d11: ReleaseD3D11Resources(); @@ -135,14 +85,6 @@ HRESULT GFSDK_WaveWorks_Savestate::Restore(Graphics_Context* pGC) #if WAVEWORKS_ENABLE_GRAPHICS switch(m_d3dAPI) { -#if WAVEWORKS_ENABLE_D3D9 - case nv_water_d3d_api_d3d9: - return RestoreD3D9(); -#endif -#if WAVEWORKS_ENABLE_D3D10 - case nv_water_d3d_api_d3d10: - return RestoreD3D10(); -#endif #if WAVEWORKS_ENABLE_D3D11 case nv_water_d3d_api_d3d11: { @@ -158,753 +100,6 @@ HRESULT GFSDK_WaveWorks_Savestate::Restore(Graphics_Context* pGC) return E_FAIL; } -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D9Viewport() -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Viewports) && !(m_d3d._9.m_PreservedFlags & D3D9Objects::ViewportPreserved)) - { - V_RETURN(m_d3d._9.m_pd3d9Device->GetViewport(&m_d3d._9.m_Viewport)); - m_d3d._9.m_PreservedFlags |= D3D9Objects::ViewportPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D9RenderTargets() -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_RenderTargets) && !(m_d3d._9.m_PreservedFlags & D3D9Objects::RenderTargetsPreserved)) - { - V_RETURN(m_d3d._9.m_pd3d9Device->GetRenderTarget(0, &m_d3d._9.m_pRenderTarget)); - V_RETURN(m_d3d._9.m_pd3d9Device->GetDepthStencilSurface(&m_d3d._9.m_pDepthStencil)); - - m_d3d._9.m_PreservedFlags |= D3D9Objects::RenderTargetsPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D9Shaders() -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Shaders) && !(m_d3d._9.m_PreservedFlags & D3D9Objects::ShadersPreserved)) - { - V_RETURN(m_d3d._9.m_pd3d9Device->GetVertexShader(&m_d3d._9.m_pVertexShader)); - V_RETURN(m_d3d._9.m_pd3d9Device->GetPixelShader(&m_d3d._9.m_pPixelShader)); - - m_d3d._9.m_PreservedFlags |= D3D9Objects::ShadersPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D9PixelShaderConstantF(UINT D3D9_ONLY(ix), UINT D3D9_ONLY(count)) -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_ShaderConstants) - { - for(; count; --count, ++ix) - { - if(!m_d3d._9.m_PixelShaderConstantF_Flags[ix]) - { - m_d3d._9.m_pEndPixelShaderConstantF->regIndex = ix; - V_RETURN(m_d3d._9.m_pd3d9Device->GetPixelShaderConstantF(ix, m_d3d._9.m_pEndPixelShaderConstantF->value, 1)); - ++m_d3d._9.m_pEndPixelShaderConstantF; - - m_d3d._9.m_PixelShaderConstantF_Flags[ix] = 1; - } - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D9VertexShaderConstantF(UINT D3D9_ONLY(ix), UINT D3D9_ONLY(count)) -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_ShaderConstants) - { - for(; count; --count, ++ix) - { - if(!m_d3d._9.m_VertexShaderConstantF_Flags[ix]) - { - m_d3d._9.m_pEndVertexShaderConstantF->regIndex = ix; - V_RETURN(m_d3d._9.m_pd3d9Device->GetVertexShaderConstantF(ix, m_d3d._9.m_pEndVertexShaderConstantF->value, 1)); - ++m_d3d._9.m_pEndVertexShaderConstantF; - - m_d3d._9.m_VertexShaderConstantF_Flags[ix] = 1; - } - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D9Texture(UINT D3D9_ONLY(ix)) -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Samplers) - { - if(!(m_d3d._9.m_Texture_Flags[ix])) - { - m_d3d._9.m_pEndTexture->regIndex = ix; - V_RETURN(m_d3d._9.m_pd3d9Device->GetTexture(ix, &m_d3d._9.m_pEndTexture->pTexture)); - ++m_d3d._9.m_pEndTexture; - - m_d3d._9.m_Texture_Flags[ix] = 1; - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D9SamplerState(UINT D3D9_ONLY(ix), D3DSAMPLERSTATETYPE D3D9_ONLY(type)) -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Samplers) - { - if(!(m_d3d._9.m_SamplerState_Flags[ix][type])) - { - m_d3d._9.m_pEndSamplerState->regIndex = ix; - m_d3d._9.m_pEndSamplerState->type = type; - V_RETURN(m_d3d._9.m_pd3d9Device->GetSamplerState(ix, type, &m_d3d._9.m_pEndSamplerState->value)); - ++m_d3d._9.m_pEndSamplerState; - - m_d3d._9.m_SamplerState_Flags[ix][type] = 0; - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D9RenderState(D3DRENDERSTATETYPE D3D9_ONLY(rs)) -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Other) - { - if(!(m_d3d._9.m_RenderState_Flags[rs])) - { - m_d3d._9.m_pEndRenderState->type = rs; - V_RETURN(m_d3d._9.m_pd3d9Device->GetRenderState(rs, &m_d3d._9.m_pEndRenderState->value)); - ++m_d3d._9.m_pEndRenderState; - - m_d3d._9.m_RenderState_Flags[rs] = 1; - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D9Streams() -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Streams) && !(m_d3d._9.m_PreservedFlags & D3D9Objects::StreamsPreserved)) - { - V_RETURN(m_d3d._9.m_pd3d9Device->GetVertexDeclaration(&m_d3d._9.m_pDecl)); - V_RETURN(m_d3d._9.m_pd3d9Device->GetStreamSource(0, &m_d3d._9.m_pStream0VB, &m_d3d._9.m_Stream0Offset, &m_d3d._9.m_Stream0Stride)); - V_RETURN(m_d3d._9.m_pd3d9Device->GetIndices(&m_d3d._9.m_pIB)); - - m_d3d._9.m_PreservedFlags |= D3D9Objects::StreamsPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::RestoreD3D9() -{ -#if WAVEWORKS_ENABLE_D3D9 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d9); - - if(m_d3d._9.m_PreservedFlags & D3D9Objects::RenderTargetsPreserved) - { - V_RETURN(m_d3d._9.m_pd3d9Device->SetRenderTarget(0, m_d3d._9.m_pRenderTarget)); - V_RETURN(m_d3d._9.m_pd3d9Device->SetDepthStencilSurface(m_d3d._9.m_pDepthStencil)); - } - - if(m_d3d._9.m_PreservedFlags & D3D9Objects::ViewportPreserved) - { - V_RETURN(m_d3d._9.m_pd3d9Device->SetViewport(&m_d3d._9.m_Viewport)); - } - - if(m_d3d._9.m_PreservedFlags & D3D9Objects::ShadersPreserved) - { - V_RETURN(m_d3d._9.m_pd3d9Device->SetVertexShader(m_d3d._9.m_pVertexShader)); - V_RETURN(m_d3d._9.m_pd3d9Device->SetPixelShader(m_d3d._9.m_pPixelShader)); - } - - for(D3D9Objects::ShaderConstantF* it = m_d3d._9.m_VertexShaderConstantF; it != m_d3d._9.m_pEndVertexShaderConstantF; ++it) - { - V_RETURN(m_d3d._9.m_pd3d9Device->SetVertexShaderConstantF(it->regIndex, it->value, 1)); - m_d3d._9.m_VertexShaderConstantF_Flags[it->regIndex] = 0; - } - - for(D3D9Objects::ShaderConstantF* it = m_d3d._9.m_PixelShaderConstantF; it != m_d3d._9.m_pEndPixelShaderConstantF; ++it) - { - V_RETURN(m_d3d._9.m_pd3d9Device->SetPixelShaderConstantF(it->regIndex, it->value, 1)); - m_d3d._9.m_PixelShaderConstantF_Flags[it->regIndex] = 0; - } - - for(D3D9Objects::Texture* it = m_d3d._9.m_Texture; it != m_d3d._9.m_pEndTexture; ++it) - { - V_RETURN(m_d3d._9.m_pd3d9Device->SetTexture(it->regIndex, it->pTexture)); - m_d3d._9.m_Texture_Flags[it->regIndex] = 0; - } - - for(D3D9Objects::SamplerState* it = m_d3d._9.m_SamplerState; it != m_d3d._9.m_pEndSamplerState; ++it) - { - V_RETURN(m_d3d._9.m_pd3d9Device->SetSamplerState(it->regIndex, it->type, it->value)); - m_d3d._9.m_SamplerState_Flags[it->regIndex][it->type] = 0; - } - - for(D3D9Objects::RenderState* it = m_d3d._9.m_RenderState; it != m_d3d._9.m_pEndRenderState; ++it) - { - V_RETURN(m_d3d._9.m_pd3d9Device->SetRenderState(it->type, it->value)); - m_d3d._9.m_RenderState_Flags[it->type] = 0; - } - - if(m_d3d._9.m_PreservedFlags & D3D9Objects::StreamsPreserved) - { - V_RETURN(m_d3d._9.m_pd3d9Device->SetVertexDeclaration(m_d3d._9.m_pDecl)); - V_RETURN(m_d3d._9.m_pd3d9Device->SetStreamSource(0, m_d3d._9.m_pStream0VB, m_d3d._9.m_Stream0Offset, m_d3d._9.m_Stream0Stride)); - V_RETURN(m_d3d._9.m_pd3d9Device->SetIndices(m_d3d._9.m_pIB)); - } - - // Release ref-counts etc. - V_RETURN(ReleaseD3D9Resources()); - - // Reset remaining flags etc. - m_d3d._9.m_PreservedFlags = 0; - - m_d3d._9.m_pEndVertexShaderConstantF = m_d3d._9.m_VertexShaderConstantF; - m_d3d._9.m_pEndPixelShaderConstantF = m_d3d._9.m_PixelShaderConstantF; - m_d3d._9.m_pEndTexture = m_d3d._9.m_Texture; - m_d3d._9.m_pEndSamplerState = m_d3d._9.m_SamplerState; - m_d3d._9.m_pEndRenderState = m_d3d._9.m_RenderState; - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::ReleaseD3D9Resources() -{ -#if WAVEWORKS_ENABLE_D3D9 - SAFE_RELEASE(m_d3d._9.m_pRenderTarget); - SAFE_RELEASE(m_d3d._9.m_pDepthStencil); - - SAFE_RELEASE(m_d3d._9.m_pVertexShader); - SAFE_RELEASE(m_d3d._9.m_pPixelShader); - - for(D3D9Objects::Texture* it = m_d3d._9.m_Texture; it != m_d3d._9.m_pEndTexture; ++it) - { - SAFE_RELEASE(it->pTexture); - } - - SAFE_RELEASE(m_d3d._9.m_pDecl); - SAFE_RELEASE(m_d3d._9.m_pStream0VB); - SAFE_RELEASE(m_d3d._9.m_pIB); - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10Viewport() -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Viewports) && !(m_d3d._10.m_PreservedFlags & D3D10Objects::ViewportPreserved)) - { - UINT num_vp = 1; - m_d3d._10.m_pd3d10Device->RSGetViewports(&num_vp, &m_d3d._10.m_Viewport); - m_d3d._10.m_PreservedFlags |= D3D10Objects::ViewportPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10RenderTargets() -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_RenderTargets) && !(m_d3d._10.m_PreservedFlags & D3D10Objects::RenderTargetsPreserved)) - { - m_d3d._10.m_pd3d10Device->OMGetRenderTargets(1, &m_d3d._10.m_pRenderTarget, &m_d3d._10.m_pDepthStencil); - m_d3d._10.m_PreservedFlags |= D3D10Objects::RenderTargetsPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10Shaders() -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Shaders) && !(m_d3d._10.m_PreservedFlags & D3D10Objects::ShadersPreserved)) - { - m_d3d._10.m_pd3d10Device->VSGetShader(&m_d3d._10.m_pVertexShader); - m_d3d._10.m_pd3d10Device->GSGetShader(&m_d3d._10.m_pGeomShader); - m_d3d._10.m_pd3d10Device->PSGetShader(&m_d3d._10.m_pPixelShader); - - m_d3d._10.m_PreservedFlags |= D3D10Objects::ShadersPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10Streams() -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Streams) && !(m_d3d._10.m_PreservedFlags & D3D10Objects::StreamsPreserved)) - { - m_d3d._10.m_pd3d10Device->IAGetVertexBuffers(0, 1, &m_d3d._10.m_pSlot0VB, &m_d3d._10.m_Slot0VBOffset, &m_d3d._10.m_Slot0VBStride); - m_d3d._10.m_pd3d10Device->IAGetIndexBuffer(&m_d3d._10.m_pIB, &m_d3d._10.m_IBFormat, &m_d3d._10.m_IBOffset); - m_d3d._10.m_pd3d10Device->IAGetInputLayout(&m_d3d._10.m_pLayout); - m_d3d._10.m_pd3d10Device->IAGetPrimitiveTopology(&m_d3d._10.m_Topology); - - m_d3d._10.m_PreservedFlags |= D3D10Objects::StreamsPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10DepthStencil() -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Other) && !(m_d3d._10.m_PreservedFlags & D3D10Objects::DepthStencilPreserved)) - { - m_d3d._10.m_pd3d10Device->OMGetDepthStencilState(&m_d3d._10.m_pDepthStencilState, &m_d3d._10.m_StencilRef); - m_d3d._10.m_PreservedFlags |= D3D10Objects::DepthStencilPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10Blend() -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Other) && !(m_d3d._10.m_PreservedFlags & D3D10Objects::BlendPreserved)) - { - m_d3d._10.m_pd3d10Device->OMGetBlendState(&m_d3d._10.m_pBlendState, m_d3d._10.m_BlendFactors, &m_d3d._10.m_SampleMask); - m_d3d._10.m_PreservedFlags |= D3D10Objects::BlendPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10Raster() -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if((m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Other) && !(m_d3d._10.m_PreservedFlags & D3D10Objects::RasterPreserved)) - { - m_d3d._10.m_pd3d10Device->RSGetState(&m_d3d._10.m_pRSState); - m_d3d._10.m_PreservedFlags |= D3D10Objects::RasterPreserved; - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10PixelShaderConstantBuffer(UINT D3D10_ONLY(ix)) -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_ShaderConstants) - { - const WORD ixBit = WORD(0x0001 << ix); - if(!(m_d3d._10.m_PixelShaderConstantBuffer_Flags & ixBit)) - { - m_d3d._10.m_pEndPixelShaderConstantBuffer->regIndex = ix; - m_d3d._10.m_pd3d10Device->PSGetConstantBuffers(ix, 1, &m_d3d._10.m_pEndPixelShaderConstantBuffer->pBuffer); - ++m_d3d._10.m_pEndPixelShaderConstantBuffer; - - m_d3d._10.m_PixelShaderConstantBuffer_Flags |= ixBit; - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10VertexShaderConstantBuffer(UINT D3D10_ONLY(ix)) -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_ShaderConstants) - { - const WORD ixBit = WORD(0x0001 << ix); - if(!(m_d3d._10.m_VertexShaderConstantBuffer_Flags & ixBit)) - { - m_d3d._10.m_pEndVertexShaderConstantBuffer->regIndex = ix; - m_d3d._10.m_pd3d10Device->VSGetConstantBuffers(ix, 1, &m_d3d._10.m_pEndVertexShaderConstantBuffer->pBuffer); - ++m_d3d._10.m_pEndVertexShaderConstantBuffer; - - m_d3d._10.m_VertexShaderConstantBuffer_Flags |= ixBit; - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10PixelShaderSampler(UINT D3D10_ONLY(ix)) -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Samplers) - { - const WORD ixBit = WORD(0x0001 << ix); - if(!(m_d3d._10.m_PixelShaderSampler_Flags & ixBit)) - { - m_d3d._10.m_pEndPixelShaderSampler->regIndex = ix; - m_d3d._10.m_pd3d10Device->PSGetSamplers(ix, 1, &m_d3d._10.m_pEndPixelShaderSampler->pSampler); - ++m_d3d._10.m_pEndPixelShaderSampler; - - m_d3d._10.m_PixelShaderSampler_Flags |= ixBit; - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10VertexShaderSampler(UINT D3D10_ONLY(ix)) -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Samplers) - { - const WORD ixBit = WORD(0x0001 << ix); - if(!(m_d3d._10.m_VertexShaderSampler_Flags & ixBit)) - { - m_d3d._10.m_pEndVertexShaderSampler->regIndex = ix; - m_d3d._10.m_pd3d10Device->VSGetSamplers(ix, 1, &m_d3d._10.m_pEndVertexShaderSampler->pSampler); - ++m_d3d._10.m_pEndVertexShaderSampler; - - m_d3d._10.m_VertexShaderSampler_Flags |= ixBit; - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10PixelShaderResource(UINT D3D10_ONLY(ix)) -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Samplers) - { - if(!m_d3d._10.m_PixelShaderResource_Flags[ix]) - { - m_d3d._10.m_pEndPixelShaderResource->regIndex = ix; - m_d3d._10.m_pd3d10Device->PSGetShaderResources(ix, 1, &m_d3d._10.m_pEndPixelShaderResource->pResource); - ++m_d3d._10.m_pEndPixelShaderResource; - - m_d3d._10.m_PixelShaderResource_Flags[ix] = 1; - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D10VertexShaderResource(UINT D3D10_ONLY(ix)) -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if(m_UserPreserveFlags & GFSDK_WaveWorks_StatePreserve_Samplers) - { - if(!m_d3d._10.m_VertexShaderResource_Flags[ix]) - { - m_d3d._10.m_pEndVertexShaderResource->regIndex = ix; - m_d3d._10.m_pd3d10Device->VSGetShaderResources(ix, 1, &m_d3d._10.m_pEndVertexShaderResource->pResource); - ++m_d3d._10.m_pEndVertexShaderResource; - - m_d3d._10.m_VertexShaderResource_Flags[ix] = 1; - } - } - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::RestoreD3D10() -{ -#if WAVEWORKS_ENABLE_D3D10 - HRESULT hr; - - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - if(m_d3d._10.m_PreservedFlags & D3D10Objects::RenderTargetsPreserved) - { - m_d3d._10.m_pd3d10Device->OMSetRenderTargets(1, &m_d3d._10.m_pRenderTarget, m_d3d._10.m_pDepthStencil); - } - - if(m_d3d._10.m_PreservedFlags & D3D10Objects::ViewportPreserved) - { - m_d3d._10.m_pd3d10Device->RSSetViewports(1, &m_d3d._10.m_Viewport); - } - - if(m_d3d._10.m_PreservedFlags & D3D10Objects::ShadersPreserved) - { - m_d3d._10.m_pd3d10Device->VSSetShader(m_d3d._10.m_pVertexShader); - m_d3d._10.m_pd3d10Device->GSSetShader(m_d3d._10.m_pGeomShader); - m_d3d._10.m_pd3d10Device->PSSetShader(m_d3d._10.m_pPixelShader); - } - - if(m_d3d._10.m_PreservedFlags & D3D10Objects::StreamsPreserved) - { - m_d3d._10.m_pd3d10Device->IASetVertexBuffers(0, 1, &m_d3d._10.m_pSlot0VB, &m_d3d._10.m_Slot0VBOffset, &m_d3d._10.m_Slot0VBStride); - m_d3d._10.m_pd3d10Device->IASetIndexBuffer(m_d3d._10.m_pIB, m_d3d._10.m_IBFormat, m_d3d._10.m_IBOffset); - m_d3d._10.m_pd3d10Device->IASetInputLayout(m_d3d._10.m_pLayout); - m_d3d._10.m_pd3d10Device->IASetPrimitiveTopology(m_d3d._10.m_Topology); - } - - if(m_d3d._10.m_PreservedFlags & D3D10Objects::DepthStencilPreserved) - { - m_d3d._10.m_pd3d10Device->OMSetDepthStencilState(m_d3d._10.m_pDepthStencilState, m_d3d._10.m_StencilRef); - } - - if(m_d3d._10.m_PreservedFlags & D3D10Objects::BlendPreserved) - { - m_d3d._10.m_pd3d10Device->OMSetBlendState(m_d3d._10.m_pBlendState, m_d3d._10.m_BlendFactors, m_d3d._10.m_SampleMask); - } - - if(m_d3d._10.m_PreservedFlags & D3D10Objects::RasterPreserved) - { - m_d3d._10.m_pd3d10Device->RSSetState(m_d3d._10.m_pRSState); - } - - for(D3D10Objects::ShaderConstantBuffer* it = m_d3d._10.m_VertexShaderConstantBuffer; it != m_d3d._10.m_pEndVertexShaderConstantBuffer; ++it) - { - m_d3d._10.m_pd3d10Device->VSSetConstantBuffers(it->regIndex, 1, &it->pBuffer); - } - m_d3d._10.m_VertexShaderConstantBuffer_Flags = 0; - - for(D3D10Objects::ShaderConstantBuffer* it = m_d3d._10.m_PixelShaderConstantBuffer; it != m_d3d._10.m_pEndPixelShaderConstantBuffer; ++it) - { - m_d3d._10.m_pd3d10Device->PSSetConstantBuffers(it->regIndex, 1, &it->pBuffer); - } - m_d3d._10.m_PixelShaderConstantBuffer_Flags = 0; - - for(D3D10Objects::ShaderSampler* it = m_d3d._10.m_VertexShaderSampler; it != m_d3d._10.m_pEndVertexShaderSampler; ++it) - { - m_d3d._10.m_pd3d10Device->VSSetSamplers(it->regIndex, 1, &it->pSampler); - } - m_d3d._10.m_VertexShaderSampler_Flags = 0; - - for(D3D10Objects::ShaderSampler* it = m_d3d._10.m_PixelShaderSampler; it != m_d3d._10.m_pEndPixelShaderSampler; ++it) - { - m_d3d._10.m_pd3d10Device->PSSetSamplers(it->regIndex, 1, &it->pSampler); - } - m_d3d._10.m_PixelShaderSampler_Flags = 0; - - for(D3D10Objects::ShaderResource* it = m_d3d._10.m_VertexShaderResource; it != m_d3d._10.m_pEndVertexShaderResource; ++it) - { - m_d3d._10.m_pd3d10Device->VSSetShaderResources(it->regIndex, 1, &it->pResource); - m_d3d._10.m_VertexShaderResource_Flags[it->regIndex] = 0; - } - - for(D3D10Objects::ShaderResource* it = m_d3d._10.m_PixelShaderResource; it != m_d3d._10.m_pEndPixelShaderResource; ++it) - { - m_d3d._10.m_pd3d10Device->PSSetShaderResources(it->regIndex, 1, &it->pResource); - m_d3d._10.m_PixelShaderResource_Flags[it->regIndex] = 0; - } - - // Release ref-counts etc. - V_RETURN(ReleaseD3D10Resources()); - - // Reset remaining flags etc. - m_d3d._10.m_PreservedFlags = 0; - - m_d3d._10.m_pEndVertexShaderConstantBuffer = m_d3d._10.m_VertexShaderConstantBuffer; - m_d3d._10.m_pEndPixelShaderConstantBuffer = m_d3d._10.m_PixelShaderConstantBuffer; - m_d3d._10.m_pEndVertexShaderSampler = m_d3d._10.m_VertexShaderSampler; - m_d3d._10.m_pEndPixelShaderSampler = m_d3d._10.m_PixelShaderSampler; - m_d3d._10.m_pEndVertexShaderResource = m_d3d._10.m_VertexShaderResource; - m_d3d._10.m_pEndPixelShaderResource = m_d3d._10.m_PixelShaderResource; - - return S_OK; -#else - return E_FAIL; -#endif -} - -HRESULT GFSDK_WaveWorks_Savestate::ReleaseD3D10Resources() -{ -#if WAVEWORKS_ENABLE_D3D10 - assert(m_d3dAPI == nv_water_d3d_api_d3d10); - - SAFE_RELEASE(m_d3d._10.m_pRenderTarget); - SAFE_RELEASE(m_d3d._10.m_pDepthStencil); - - SAFE_RELEASE(m_d3d._10.m_pVertexShader); - SAFE_RELEASE(m_d3d._10.m_pGeomShader); - SAFE_RELEASE(m_d3d._10.m_pPixelShader); - - SAFE_RELEASE(m_d3d._10.m_pSlot0VB); - SAFE_RELEASE(m_d3d._10.m_pIB); - SAFE_RELEASE(m_d3d._10.m_pLayout); - - SAFE_RELEASE(m_d3d._10.m_pDepthStencilState); - - SAFE_RELEASE(m_d3d._10.m_pBlendState); - - SAFE_RELEASE(m_d3d._10.m_pRSState); - - for(D3D10Objects::ShaderConstantBuffer* it = m_d3d._10.m_VertexShaderConstantBuffer; it != m_d3d._10.m_pEndVertexShaderConstantBuffer; ++it) - { - SAFE_RELEASE(it->pBuffer); - } - - for(D3D10Objects::ShaderConstantBuffer* it = m_d3d._10.m_PixelShaderConstantBuffer; it != m_d3d._10.m_pEndPixelShaderConstantBuffer; ++it) - { - SAFE_RELEASE(it->pBuffer); - } - - for(D3D10Objects::ShaderSampler* it = m_d3d._10.m_VertexShaderSampler; it != m_d3d._10.m_pEndVertexShaderSampler; ++it) - { - SAFE_RELEASE(it->pSampler); - } - - for(D3D10Objects::ShaderSampler* it = m_d3d._10.m_PixelShaderSampler; it != m_d3d._10.m_pEndPixelShaderSampler; ++it) - { - SAFE_RELEASE(it->pSampler); - } - - for(D3D10Objects::ShaderResource* it = m_d3d._10.m_VertexShaderResource; it != m_d3d._10.m_pEndVertexShaderResource; ++it) - { - SAFE_RELEASE(it->pResource); - } - - for(D3D10Objects::ShaderResource* it = m_d3d._10.m_PixelShaderResource; it != m_d3d._10.m_pEndPixelShaderResource; ++it) - { - SAFE_RELEASE(it->pResource); - } - - return S_OK; -#else - return E_FAIL; -#endif -} - HRESULT GFSDK_WaveWorks_Savestate::PreserveD3D11Viewport(ID3D11DeviceContext* D3D11_ONLY(pDC)) { #if WAVEWORKS_ENABLE_D3D11 |