From e6658d5339882961f49161db33da5b1b76b7a3ac Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Fri, 26 Nov 2010 09:25:08 +0000 Subject: [PATCH] Minor change to ease video plugin merging. Made static NativeVertexFormat::Create function into a virtual function of VertexManager. I believe this is the last bit of code which is only declared in VideoCommon and defined in each of the plugins. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6479 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/VideoCommon/Src/NativeVertexFormat.h | 7 +++---- Source/Core/VideoCommon/Src/VertexLoader.cpp | 2 +- Source/Core/VideoCommon/Src/VertexManagerBase.h | 4 ++++ .../Plugin_VideoDX11/Src/NativeVertexFormat.cpp | 12 +++++++----- .../Plugins/Plugin_VideoDX11/Src/VertexManager.h | 2 ++ .../Plugin_VideoDX9/Src/NativeVertexFormat.cpp | 15 ++++++++------- .../Plugins/Plugin_VideoDX9/Src/VertexManager.h | 2 ++ .../Plugin_VideoOGL/Src/NativeVertexFormat.cpp | 9 +++++++-- .../Plugins/Plugin_VideoOGL/Src/VertexManager.h | 2 ++ 9 files changed, 36 insertions(+), 19 deletions(-) diff --git a/Source/Core/VideoCommon/Src/NativeVertexFormat.h b/Source/Core/VideoCommon/Src/NativeVertexFormat.h index bff59b572a..7492dcaee0 100644 --- a/Source/Core/VideoCommon/Src/NativeVertexFormat.h +++ b/Source/Core/VideoCommon/Src/NativeVertexFormat.h @@ -99,15 +99,14 @@ public: int GetVertexStride() const { return vertex_stride; } - static NativeVertexFormat *Create(); - - // TODO: move these in under private: + // TODO: move this under private: u32 m_components; // VB_HAS_X. Bitmask telling what vertex components are present. - u32 vertex_stride; protected: // Let subclasses construct. NativeVertexFormat() {} + + u32 vertex_stride; }; #endif // _NATIVEVERTEXFORMAT_H diff --git a/Source/Core/VideoCommon/Src/VertexLoader.cpp b/Source/Core/VideoCommon/Src/VertexLoader.cpp index 4cd2731759..90fa7f1be9 100644 --- a/Source/Core/VideoCommon/Src/VertexLoader.cpp +++ b/Source/Core/VideoCommon/Src/VertexLoader.cpp @@ -183,7 +183,7 @@ VertexLoader::VertexLoader(const TVtxDesc &vtx_desc, const VAT &vtx_attr) m_numLoadedVertices = 0; m_VertexSize = 0; m_numPipelineStages = 0; - m_NativeFmt = NativeVertexFormat::Create(); + m_NativeFmt = g_vertex_manager->CreateNativeVertexFormat(); loop_counter = 0; VertexLoader_Normal::Init(); VertexLoader_Position::Init(); diff --git a/Source/Core/VideoCommon/Src/VertexManagerBase.h b/Source/Core/VideoCommon/Src/VertexManagerBase.h index 2108172977..159e9ee52f 100644 --- a/Source/Core/VideoCommon/Src/VertexManagerBase.h +++ b/Source/Core/VideoCommon/Src/VertexManagerBase.h @@ -2,6 +2,8 @@ #ifndef _VERTEXMANAGERBASE_H #define _VERTEXMANAGERBASE_H +class NativeVertexFormat; + class VertexManager { public: @@ -35,6 +37,8 @@ public: static void Flush(); + virtual ::NativeVertexFormat* CreateNativeVertexFormat() = 0; + protected: // TODO: make private after Flush() is merged static void ResetBuffer(); diff --git a/Source/Plugins/Plugin_VideoDX11/Src/NativeVertexFormat.cpp b/Source/Plugins/Plugin_VideoDX11/Src/NativeVertexFormat.cpp index f7f88845ad..3c5396aa8a 100644 --- a/Source/Plugins/Plugin_VideoDX11/Src/NativeVertexFormat.cpp +++ b/Source/Plugins/Plugin_VideoDX11/Src/NativeVertexFormat.cpp @@ -26,6 +26,7 @@ #include "CPMemory.h" #include "NativeVertexFormat.h" +#include "VertexManager.h" class D3DVertexFormat : public NativeVertexFormat { @@ -33,19 +34,20 @@ class D3DVertexFormat : public NativeVertexFormat UINT m_num_elems; public: - D3DVertexFormat(); - ~D3DVertexFormat(); + D3DVertexFormat() : m_num_elems(0) {} void Initialize(const PortableVertexDeclaration &_vtx_decl); void SetupVertexPointers() const; }; -NativeVertexFormat* NativeVertexFormat::Create() +namespace DX11 +{ + +NativeVertexFormat* VertexManager::CreateNativeVertexFormat() { return new D3DVertexFormat(); } -D3DVertexFormat::D3DVertexFormat() : m_num_elems(0) { } -D3DVertexFormat::~D3DVertexFormat() {} +} DXGI_FORMAT VarToD3D(VarType t, int size) { diff --git a/Source/Plugins/Plugin_VideoDX11/Src/VertexManager.h b/Source/Plugins/Plugin_VideoDX11/Src/VertexManager.h index 8efc08d373..7be0fb864d 100644 --- a/Source/Plugins/Plugin_VideoDX11/Src/VertexManager.h +++ b/Source/Plugins/Plugin_VideoDX11/Src/VertexManager.h @@ -33,6 +33,8 @@ public: VertexManager(); ~VertexManager(); + NativeVertexFormat* CreateNativeVertexFormat(); + private: void CreateDeviceObjects(); void DestroyDeviceObjects(); diff --git a/Source/Plugins/Plugin_VideoDX9/Src/NativeVertexFormat.cpp b/Source/Plugins/Plugin_VideoDX9/Src/NativeVertexFormat.cpp index 18f92bb50e..13a7c37d36 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/NativeVertexFormat.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/NativeVertexFormat.cpp @@ -26,25 +26,27 @@ #include "CPMemory.h" #include "NativeVertexFormat.h" +#include "VertexManager.h" class D3DVertexFormat : public NativeVertexFormat { LPDIRECT3DVERTEXDECLARATION9 d3d_decl; public: - D3DVertexFormat(); + D3DVertexFormat() : d3d_decl(NULL) {} ~D3DVertexFormat(); virtual void Initialize(const PortableVertexDeclaration &_vtx_decl); virtual void SetupVertexPointers() const; }; -NativeVertexFormat *NativeVertexFormat::Create() +namespace DX9 +{ + +NativeVertexFormat* VertexManager::CreateNativeVertexFormat() { return new D3DVertexFormat(); } -D3DVertexFormat::D3DVertexFormat() : d3d_decl(NULL) -{ } D3DVertexFormat::~D3DVertexFormat() @@ -93,8 +95,8 @@ void D3DVertexFormat::Initialize(const PortableVertexDeclaration &_vtx_decl) { vertex_stride = _vtx_decl.stride; - D3DVERTEXELEMENT9 *elems = new D3DVERTEXELEMENT9[32]; - memset(elems, 0, sizeof(D3DVERTEXELEMENT9) * 32); + D3DVERTEXELEMENT9 elems[32]; + memset(elems, 0, sizeof(elems)); // There's only one stream and it's 0, so the above memset takes care of that - no need to set Stream. // Same for method. @@ -161,7 +163,6 @@ void D3DVertexFormat::Initialize(const PortableVertexDeclaration &_vtx_decl) PanicAlert("Failed to create D3D vertex declaration!"); return; } - delete [] elems; } void D3DVertexFormat::SetupVertexPointers() const diff --git a/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.h b/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.h index 39f13763f1..ee34e5c8b6 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.h +++ b/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.h @@ -28,6 +28,8 @@ namespace DX9 class VertexManager : public ::VertexManager { + NativeVertexFormat* CreateNativeVertexFormat(); + private: void Draw(int stride); // temp diff --git a/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp b/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp index 63048acaf1..effa3981d5 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp @@ -24,10 +24,11 @@ #include "CPMemory.h" #include "NativeVertexFormat.h" -#include "VertexManagerBase.h" +#include "VertexManager.h" #define COMPILED_CODE_SIZE 4096 +// TODO: this guy is never initialized u32 s_prevcomponents; // previous state set /* #ifdef _WIN32 @@ -67,12 +68,16 @@ public: virtual void EnableComponents(u32 components); }; +namespace OGL +{ -NativeVertexFormat *NativeVertexFormat::Create() +NativeVertexFormat* VertexManager::CreateNativeVertexFormat() { return new GLVertexFormat(); } +} + GLVertexFormat::GLVertexFormat() { #ifdef USE_JIT diff --git a/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.h b/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.h index 0b5d93860d..0f22054855 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.h +++ b/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.h @@ -32,6 +32,8 @@ class VertexManager : public ::VertexManager public: VertexManager(); + NativeVertexFormat* CreateNativeVertexFormat(); + private: void Draw(); // temp