From 639f815432537dff9cb2a91ea98e0faddfce959e Mon Sep 17 00:00:00 2001 From: WinterSnowfall Date: Thu, 9 Jan 2025 11:32:59 +0200 Subject: [PATCH] [d3d8] Refactor D3D8Vertex/IndexBuffer implementation --- src/d3d8/d3d8_buffer.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/d3d8/d3d8_buffer.h | 35 +++++++++++++++-------------------- src/d3d8/meson.build | 1 + 3 files changed, 54 insertions(+), 20 deletions(-) create mode 100644 src/d3d8/d3d8_buffer.cpp diff --git a/src/d3d8/d3d8_buffer.cpp b/src/d3d8/d3d8_buffer.cpp new file mode 100644 index 000000000..32ee5542a --- /dev/null +++ b/src/d3d8/d3d8_buffer.cpp @@ -0,0 +1,38 @@ +#include "d3d8_buffer.h" +#include "d3d8_device.h" + +namespace dxvk { + + // D3D8VertexBuffer + + D3D8VertexBuffer::D3D8VertexBuffer( + D3D8Device* pDevice, + Com&& pBuffer, + D3DPOOL Pool, + DWORD Usage) + : D3D8VertexBufferBase(pDevice, std::move(pBuffer), Pool, Usage) { + } + + D3DRESOURCETYPE STDMETHODCALLTYPE D3D8VertexBuffer::GetType() { return D3DRTYPE_VERTEXBUFFER; } + + HRESULT STDMETHODCALLTYPE D3D8VertexBuffer::GetDesc(D3DVERTEXBUFFER_DESC* pDesc) { + return GetD3D9()->GetDesc(reinterpret_cast(pDesc)); + } + + // D3D8IndexBuffer + + D3D8IndexBuffer::D3D8IndexBuffer( + D3D8Device* pDevice, + Com&& pBuffer, + D3DPOOL Pool, + DWORD Usage) + : D3D8IndexBufferBase(pDevice, std::move(pBuffer), Pool, Usage) { + } + + D3DRESOURCETYPE STDMETHODCALLTYPE D3D8IndexBuffer::GetType() { return D3DRTYPE_INDEXBUFFER; } + + HRESULT STDMETHODCALLTYPE D3D8IndexBuffer::GetDesc(D3DINDEXBUFFER_DESC* pDesc) { + return GetD3D9()->GetDesc(reinterpret_cast(pDesc)); + } + +} \ No newline at end of file diff --git a/src/d3d8/d3d8_buffer.h b/src/d3d8/d3d8_buffer.h index 3391dbff1..c260e16ff 100644 --- a/src/d3d8/d3d8_buffer.h +++ b/src/d3d8/d3d8_buffer.h @@ -50,9 +50,11 @@ namespace dxvk { } protected: + const D3D8Options* m_options; const D3DPOOL m_pool; const DWORD m_usage; + }; @@ -62,18 +64,14 @@ namespace dxvk { public: D3D8VertexBuffer( - D3D8Device* pDevice, - Com&& pBuffer, - D3DPOOL Pool, - DWORD Usage) - : D3D8VertexBufferBase(pDevice, std::move(pBuffer), Pool, Usage) { - } + D3D8Device* pDevice, + Com&& pBuffer, + D3DPOOL Pool, + DWORD Usage); - D3DRESOURCETYPE STDMETHODCALLTYPE GetType() final { return D3DRTYPE_VERTEXBUFFER; } + D3DRESOURCETYPE STDMETHODCALLTYPE GetType() final; - HRESULT STDMETHODCALLTYPE GetDesc(D3DVERTEXBUFFER_DESC* pDesc) { - return GetD3D9()->GetDesc(reinterpret_cast(pDesc)); - } + HRESULT STDMETHODCALLTYPE GetDesc(D3DVERTEXBUFFER_DESC* pDesc); }; @@ -83,18 +81,15 @@ namespace dxvk { public: D3D8IndexBuffer( - D3D8Device* pDevice, - Com&& pBuffer, - D3DPOOL Pool, - DWORD Usage) - : D3D8IndexBufferBase(pDevice, std::move(pBuffer), Pool, Usage) { - } + D3D8Device* pDevice, + Com&& pBuffer, + D3DPOOL Pool, + DWORD Usage); - D3DRESOURCETYPE STDMETHODCALLTYPE GetType() final { return D3DRTYPE_INDEXBUFFER; } + D3DRESOURCETYPE STDMETHODCALLTYPE GetType() final; - HRESULT STDMETHODCALLTYPE GetDesc(D3DINDEXBUFFER_DESC* pDesc) final { - return GetD3D9()->GetDesc(reinterpret_cast(pDesc)); - } + HRESULT STDMETHODCALLTYPE GetDesc(D3DINDEXBUFFER_DESC* pDesc) final; }; + } \ No newline at end of file diff --git a/src/d3d8/meson.build b/src/d3d8/meson.build index 07fcaaf31..860d84725 100644 --- a/src/d3d8/meson.build +++ b/src/d3d8/meson.build @@ -1,6 +1,7 @@ d3d8_res = wrc_generator.process('version.rc') d3d8_src = [ + 'd3d8_buffer.cpp', 'd3d8_device.cpp', 'd3d8_interface.cpp', 'd3d8_main.cpp',