From 9d37e4abb44a3891308feb3fc647dc7dcdb40687 Mon Sep 17 00:00:00 2001 From: WinterSnowfall Date: Thu, 9 Jan 2025 10:19:41 +0200 Subject: [PATCH] [d3d8] Refactor D3D8Volume implementation --- src/d3d8/d3d8_volume.cpp | 39 +++++++++++++++++++++++++++++++++++++++ src/d3d8/d3d8_volume.h | 33 ++++++--------------------------- src/d3d8/meson.build | 3 ++- 3 files changed, 47 insertions(+), 28 deletions(-) create mode 100644 src/d3d8/d3d8_volume.cpp diff --git a/src/d3d8/d3d8_volume.cpp b/src/d3d8/d3d8_volume.cpp new file mode 100644 index 000000000..0c1b8cbc2 --- /dev/null +++ b/src/d3d8/d3d8_volume.cpp @@ -0,0 +1,39 @@ +#include "d3d8_volume.h" + +#include "d3d8_d3d9_util.h" + +namespace dxvk { + + D3D8Volume::D3D8Volume( + D3D8Device* pDevice, + IDirect3DVolumeTexture8* pTexture, + Com&& pVolume) + : D3D8VolumeBase(pDevice, std::move(pVolume), pTexture) { + } + + HRESULT STDMETHODCALLTYPE D3D8Volume::GetDesc(D3DVOLUME_DESC* pDesc) { + if (unlikely(pDesc == nullptr)) + return D3DERR_INVALIDCALL; + + d3d9::D3DVOLUME_DESC desc; + HRESULT res = GetD3D9()->GetDesc(&desc); + + if (likely(SUCCEEDED(res))) + ConvertVolumeDesc8(&desc, pDesc); + + return res; + } + + HRESULT STDMETHODCALLTYPE D3D8Volume::LockBox(D3DLOCKED_BOX* pLockedBox, CONST D3DBOX* pBox, DWORD Flags) { + return GetD3D9()->LockBox( + reinterpret_cast(pLockedBox), + reinterpret_cast(pBox), + Flags + ); + } + + HRESULT STDMETHODCALLTYPE D3D8Volume::UnlockBox() { + return GetD3D9()->UnlockBox(); + } + +} \ No newline at end of file diff --git a/src/d3d8/d3d8_volume.h b/src/d3d8/d3d8_volume.h index 3d871c38a..b351b2956 100644 --- a/src/d3d8/d3d8_volume.h +++ b/src/d3d8/d3d8_volume.h @@ -1,7 +1,6 @@ #pragma once #include "d3d8_subresource.h" -#include "d3d8_d3d9_util.h" namespace dxvk { @@ -11,35 +10,15 @@ namespace dxvk { public: D3D8Volume( - D3D8Device* pDevice, - IDirect3DVolumeTexture8* pTexture, - Com&& pVolume) - : D3D8VolumeBase(pDevice, std::move(pVolume), pTexture) {} + D3D8Device* pDevice, + IDirect3DVolumeTexture8* pTexture, + Com&& pVolume); - HRESULT STDMETHODCALLTYPE GetDesc(D3DVOLUME_DESC* pDesc) { - if (unlikely(pDesc == nullptr)) - return D3DERR_INVALIDCALL; + HRESULT STDMETHODCALLTYPE GetDesc(D3DVOLUME_DESC* pDesc); - d3d9::D3DVOLUME_DESC desc; - HRESULT res = GetD3D9()->GetDesc(&desc); + HRESULT STDMETHODCALLTYPE LockBox(D3DLOCKED_BOX* pLockedBox, CONST D3DBOX* pBox, DWORD Flags) final; - if (likely(SUCCEEDED(res))) - ConvertVolumeDesc8(&desc, pDesc); - - return res; - } - - HRESULT STDMETHODCALLTYPE LockBox(D3DLOCKED_BOX* pLockedBox, CONST D3DBOX* pBox, DWORD Flags) final { - return GetD3D9()->LockBox( - reinterpret_cast(pLockedBox), - reinterpret_cast(pBox), - Flags - ); - } - - HRESULT STDMETHODCALLTYPE UnlockBox() final { - return GetD3D9()->UnlockBox(); - } + HRESULT STDMETHODCALLTYPE UnlockBox() final; }; diff --git a/src/d3d8/meson.build b/src/d3d8/meson.build index e5305d301..07fcaaf31 100644 --- a/src/d3d8/meson.build +++ b/src/d3d8/meson.build @@ -10,7 +10,8 @@ d3d8_src = [ 'd3d8_state_block.cpp', 'd3d8_surface.cpp', 'd3d8_swapchain.cpp', - 'd3d8_texture.cpp' + 'd3d8_texture.cpp', + 'd3d8_volume.cpp' ] d3d8_ld_args = []