summaryrefslogtreecommitdiff
path: root/src/Savestate.cpp
diff options
context:
space:
mode:
authorJason Maskell <[email protected]>2016-05-25 16:02:23 +0200
committerJason Maskell <[email protected]>2016-05-25 16:02:23 +0200
commit69f624cfc22c361a8162f57df4a71e4324805717 (patch)
tree245e0e5ebcb120fc573eb44d82755c1456e0d519 /src/Savestate.cpp
parentAdded OpenGL sample - compiles and runs but doesn't work. (diff)
downloadwaveworks_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.cpp805
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