diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt index 42719b05..0717626e 100644 --- a/engine/CMakeLists.txt +++ b/engine/CMakeLists.txt @@ -6,150 +6,150 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) add_library(XCEngine STATIC # Math - include/XCEngine/Math/Math.h - include/XCEngine/Math/Vector2.h - include/XCEngine/Math/Vector3.h - include/XCEngine/Math/Vector4.h - include/XCEngine/Math/Matrix3.h - include/XCEngine/Math/Matrix4.h - include/XCEngine/Math/Quaternion.h - include/XCEngine/Math/Transform.h - include/XCEngine/Math/Color.h - include/XCEngine/Math/Ray.h - include/XCEngine/Math/Plane.h - include/XCEngine/Math/Sphere.h - include/XCEngine/Math/Box.h - include/XCEngine/Math/Bounds.h - include/XCEngine/Math/Frustum.h - include/XCEngine/Math/Rect.h - include/XCEngine/Math/AABB.h - src/Math/Matrix.cpp - src/Math/Quaternion.cpp - src/Math/Transform.cpp - src/Math/Color.cpp - src/Math/Geometry.cpp - src/Math/FrustumBounds.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Math.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Vector2.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Vector3.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Vector4.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Matrix3.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Matrix4.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Quaternion.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Transform.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Color.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Ray.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Plane.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Sphere.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Box.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Bounds.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Frustum.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/Rect.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Math/AABB.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Matrix.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Quaternion.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Transform.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Color.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Math/Geometry.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Math/FrustumBounds.cpp # Containers - include/XCEngine/Containers/Containers.h - include/XCEngine/Containers/Array.h - include/XCEngine/Containers/String.h - include/XCEngine/Containers/HashMap.h - src/Containers/String.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Containers/Containers.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Containers/Array.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Containers/String.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Containers/HashMap.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/Containers/String.cpp # Memory - include/XCEngine/Memory/Allocator.h - include/XCEngine/Memory/LinearAllocator.h - include/XCEngine/Memory/PoolAllocator.h - include/XCEngine/Memory/ProxyAllocator.h - include/XCEngine/Memory/MemoryManager.h - src/Memory/Memory.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/Allocator.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/LinearAllocator.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/PoolAllocator.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/ProxyAllocator.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Memory/MemoryManager.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/Memory/Memory.cpp # Threading - include/XCEngine/Threading/Threading.h - include/XCEngine/Threading/Mutex.h - include/XCEngine/Threading/SpinLock.h - include/XCEngine/Threading/ReadWriteLock.h - include/XCEngine/Threading/Thread.h - include/XCEngine/Threading/Task.h - include/XCEngine/Threading/LambdaTask.h - include/XCEngine/Threading/TaskGroup.h - include/XCEngine/Threading/TaskSystemConfig.h - include/XCEngine/Threading/TaskSystem.h - src/Threading/Thread.cpp - src/Threading/TaskGroup.cpp - src/Threading/TaskSystem.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/Threading.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/Mutex.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/SpinLock.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/ReadWriteLock.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/Thread.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/Task.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/LambdaTask.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/TaskGroup.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/TaskSystemConfig.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Threading/TaskSystem.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/Threading/Thread.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Threading/TaskGroup.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Threading/TaskSystem.cpp # Core - include/XCEngine/Core/FileWriter.h - src/Core/FileWriter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Core/FileWriter.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/Core/FileWriter.cpp # Debug - include/XCEngine/Debug/Debug.h - include/XCEngine/Debug/LogLevel.h - include/XCEngine/Debug/LogCategory.h - include/XCEngine/Debug/LogEntry.h - include/XCEngine/Debug/ILogSink.h - include/XCEngine/Debug/ConsoleLogSink.h - include/XCEngine/Debug/FileLogSink.h - include/XCEngine/Debug/Logger.h - include/XCEngine/Debug/Profiler.h - src/Debug/LogLevel.cpp - src/Debug/LogCategory.cpp - src/Debug/ConsoleLogSink.cpp - src/Debug/FileLogSink.cpp - src/Debug/Logger.cpp - src/Debug/Profiler.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/Debug.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/LogLevel.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/LogCategory.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/LogEntry.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/ILogSink.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/ConsoleLogSink.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/FileLogSink.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/Logger.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Debug/Profiler.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/LogLevel.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/LogCategory.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/ConsoleLogSink.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/FileLogSink.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/Logger.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Debug/Profiler.cpp # RHI - include/XCEngine/RHI/Enums.h - include/XCEngine/RHI/D3D12/D3D12Enum.h - include/XCEngine/RHI/D3D12/D3D12Device.h - include/XCEngine/RHI/D3D12/D3D12CommandQueue.h - include/XCEngine/RHI/D3D12/D3D12CommandAllocator.h - include/XCEngine/RHI/D3D12/D3D12CommandList.h - include/XCEngine/RHI/D3D12/D3D12DescriptorHeap.h - include/XCEngine/RHI/D3D12/D3D12Buffer.h - include/XCEngine/RHI/D3D12/D3D12PipelineState.h - include/XCEngine/RHI/D3D12/D3D12Sampler.h - include/XCEngine/RHI/D3D12/D3D12Shader.h - include/XCEngine/RHI/D3D12/D3D12Texture.h - include/XCEngine/RHI/D3D12/D3D12RootSignature.h - include/XCEngine/RHI/D3D12/D3D12SwapChain.h - include/XCEngine/RHI/D3D12/D3D12Fence.h - include/XCEngine/RHI/D3D12/D3D12Screenshot.h - include/XCEngine/RHI/D3D12/D3D12RenderTargetView.h - include/XCEngine/RHI/D3D12/D3D12DepthStencilView.h - include/XCEngine/RHI/D3D12/D3D12ShaderResourceView.h - include/XCEngine/RHI/D3D12/D3D12ConstantBufferView.h - include/XCEngine/RHI/D3D12/D3D12QueryHeap.h - include/XCEngine/RHI/D3D12/D3D12UnorderedAccessView.h - src/RHI/D3D12/D3D12Device.cpp - src/RHI/D3D12/D3D12CommandQueue.cpp - src/RHI/D3D12/D3D12CommandAllocator.cpp - src/RHI/D3D12/D3D12CommandList.cpp - src/RHI/D3D12/D3D12DescriptorHeap.cpp - src/RHI/D3D12/D3D12Buffer.cpp - src/RHI/D3D12/D3D12PipelineState.cpp - src/RHI/D3D12/D3D12Sampler.cpp - src/RHI/D3D12/D3D12Shader.cpp - src/RHI/D3D12/D3D12Texture.cpp - src/RHI/D3D12/D3D12RootSignature.cpp - src/RHI/D3D12/D3D12SwapChain.cpp - src/RHI/D3D12/D3D12Fence.cpp - src/RHI/D3D12/D3D12Screenshot.cpp - src/RHI/D3D12/D3D12RenderTargetView.cpp - src/RHI/D3D12/D3D12DepthStencilView.cpp - src/RHI/D3D12/D3D12ShaderResourceView.cpp - src/RHI/D3D12/D3D12ConstantBufferView.cpp - src/RHI/D3D12/D3D12QueryHeap.cpp - src/RHI/D3D12/D3D12UnorderedAccessView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/RHIEnums.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Enum.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Device.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12CommandQueue.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12CommandAllocator.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12CommandList.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12DescriptorHeap.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Buffer.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12PipelineState.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Sampler.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Shader.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Texture.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12RootSignature.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12SwapChain.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Fence.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12Screenshot.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12RenderTargetView.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12DepthStencilView.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12ShaderResourceView.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12ConstantBufferView.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12QueryHeap.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/D3D12/D3D12UnorderedAccessView.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Device.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12CommandQueue.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12CommandAllocator.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12CommandList.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12DescriptorHeap.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Buffer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12PipelineState.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Sampler.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Shader.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Texture.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12RootSignature.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12SwapChain.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Fence.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Screenshot.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12RenderTargetView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12DepthStencilView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12ShaderResourceView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12ConstantBufferView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12QueryHeap.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12UnorderedAccessView.cpp # OpenGL RHI - include/XCEngine/RHI/OpenGL/OpenGLDevice.h - include/XCEngine/RHI/OpenGL/OpenGLShader.h - include/XCEngine/RHI/OpenGL/OpenGLBuffer.h - include/XCEngine/RHI/OpenGL/OpenGLVertexArray.h - include/XCEngine/RHI/OpenGL/OpenGLTexture.h - include/XCEngine/RHI/OpenGL/OpenGLPipelineState.h - include/XCEngine/RHI/OpenGL/OpenGLCommandList.h - include/XCEngine/RHI/OpenGL/OpenGLSwapChain.h - include/XCEngine/RHI/OpenGL/OpenGLFence.h - include/XCEngine/RHI/OpenGL/OpenGLSampler.h - include/XCEngine/RHI/OpenGL/OpenGLRenderTargetView.h - include/XCEngine/RHI/OpenGL/OpenGLDepthStencilView.h - src/RHI/OpenGL/OpenGLDevice.cpp - src/RHI/OpenGL/OpenGLShader.cpp - src/RHI/OpenGL/OpenGLBuffer.cpp - src/RHI/OpenGL/OpenGLVertexArray.cpp - src/RHI/OpenGL/OpenGLTexture.cpp - src/RHI/OpenGL/OpenGLPipelineState.cpp - src/RHI/OpenGL/OpenGLCommandList.cpp - src/RHI/OpenGL/OpenGLSwapChain.cpp - src/RHI/OpenGL/OpenGLFence.cpp - src/RHI/OpenGL/OpenGLSampler.cpp - src/RHI/OpenGL/OpenGLRenderTargetView.cpp - src/RHI/OpenGL/OpenGLDepthStencilView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLDevice.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLShader.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLBuffer.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLVertexArray.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLTexture.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLPipelineState.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLCommandList.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLSwapChain.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLFence.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLSampler.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLRenderTargetView.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLDepthStencilView.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLDevice.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLShader.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLBuffer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLVertexArray.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLTexture.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLPipelineState.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLCommandList.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLSwapChain.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLFence.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLSampler.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLRenderTargetView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLDepthStencilView.cpp ) target_include_directories(XCEngine PUBLIC diff --git a/engine/src/RHI/D3D12/test/fixtures/D3D12TestFixture.h b/engine/src/RHI/D3D12/test/fixtures/D3D12TestFixture.h deleted file mode 100644 index 8718bad9..00000000 --- a/engine/src/RHI/D3D12/test/fixtures/D3D12TestFixture.h +++ /dev/null @@ -1,144 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include "XCEngine/RHI/D3D12/D3D12Device.h" -#include "XCEngine/RHI/D3D12/D3D12CommandQueue.h" -#include "XCEngine/RHI/D3D12/D3D12CommandAllocator.h" -#include "XCEngine/RHI/D3D12/D3D12CommandList.h" -#include "XCEngine/RHI/D3D12/D3D12Fence.h" - -using namespace Microsoft::WRL; - -class D3D12TestFixture : public ::testing::Test { -protected: - static void SetUpTestSuite() { - HRESULT hr = D3D12CreateDevice( - nullptr, - D3D_FEATURE_LEVEL_12_0, - IID_PPV_ARGS(&mDevice) - ); - - if (FAILED(hr)) { - GTEST_SKIP() << "Failed to create D3D12 device - hardware may not support D3D12"; - return; - } - - hr = mDevice->QueryInterface(IID_PPV_ARGS(&mDebugDevice)); - } - - static void TearDownTestSuite() { - mDebugDevice.Reset(); - mDevice.Reset(); - } - - void SetUp() override { - if (!mDevice) { - GTEST_SKIP() << "D3D12 device not available"; - return; - } - - D3D12_COMMAND_QUEUE_DESC queueDesc = {}; - queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT; - queueDesc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL; - queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE; - queueDesc.NodeMask = 0; - - HRESULT hr = mDevice->CreateCommandQueue( - &queueDesc, - IID_PPV_ARGS(&mCommandQueue) - ); - - if (FAILED(hr)) { - GTEST_SKIP() << "Failed to create command queue"; - return; - } - - hr = mDevice->CreateCommandAllocator( - D3D12_COMMAND_LIST_TYPE_DIRECT, - IID_PPV_ARGS(&mCommandAllocator) - ); - - if (FAILED(hr)) { - GTEST_SKIP() << "Failed to create command allocator"; - return; - } - - hr = mDevice->CreateCommandList( - 0, - D3D12_COMMAND_LIST_TYPE_DIRECT, - mCommandAllocator.Get(), - nullptr, - IID_PPV_ARGS(&mCommandList) - ); - - if (FAILED(hr)) { - GTEST_SKIP() << "Failed to create command list"; - return; - } - } - - void TearDown() override { - if (mCommandQueue) { - WaitForGPU(); - } - - if (mCommandList) { - mCommandList.Reset(); - } - - if (mCommandAllocator) { - mCommandAllocator.Reset(); - } - - if (mCommandQueue) { - mCommandQueue.Reset(); - } - } - - ID3D12Device* GetDevice() { return mDevice.Get(); } - ID3D12CommandQueue* GetCommandQueue() { return mCommandQueue.Get(); } - ID3D12CommandList* GetCommandList() { return mCommandList.Get(); } - ID3D12CommandAllocator* GetCommandAllocator() { return mCommandAllocator.Get(); } - - void WaitForGPU() { - if (!mCommandQueue || !mDevice) { - return; - } - - ComPtr fence; - UINT64 fenceValue = 1; - - HRESULT hr = mDevice->CreateFence( - 0, - D3D12_FENCE_FLAG_NONE, - IID_PPV_ARGS(&fence) - ); - - if (SUCCEEDED(hr)) { - mCommandQueue->Signal(fence.Get(), fenceValue); - - if (fence->GetCompletedValue() < fenceValue) { - HANDLE eventHandle = CreateEvent(nullptr, FALSE, FALSE, nullptr); - if (eventHandle) { - fence->SetEventOnCompletion(fenceValue, eventHandle); - WaitForSingleObject(eventHandle, INFINITE); - CloseHandle(eventHandle); - } - } - } - } - -private: - static ComPtr mDevice; - static ComPtr mDebugDevice; - ComPtr mCommandQueue; - ComPtr mCommandAllocator; - ComPtr mCommandList; -}; - -ComPtr D3D12TestFixture::mDevice; -ComPtr D3D12TestFixture::mDebugDevice; diff --git a/engine/src/RHI/D3D12/test/test_command_allocator.cpp b/engine/src/RHI/D3D12/test/test_command_allocator.cpp deleted file mode 100644 index c3d6b150..00000000 --- a/engine/src/RHI/D3D12/test/test_command_allocator.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "fixtures/D3D12TestFixture.h" - -TEST(D3D12CommandAllocator, CreateAllocator_Success) { - auto* allocator = GetCommandAllocator(); - ASSERT_NE(allocator, nullptr); -} diff --git a/engine/src/RHI/D3D12/test/test_command_list.cpp b/engine/src/RHI/D3D12/test/test_command_list.cpp deleted file mode 100644 index 0e193945..00000000 --- a/engine/src/RHI/D3D12/test/test_command_list.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "fixtures/D3D12TestFixture.h" - -TEST(D3D12CommandList, CreateCommandList_Success) { - auto* cmdList = GetCommandList(); - ASSERT_NE(cmdList, nullptr); -} diff --git a/engine/src/RHI/D3D12/test/test_command_queue.cpp b/engine/src/RHI/D3D12/test/test_command_queue.cpp deleted file mode 100644 index e93bd61d..00000000 --- a/engine/src/RHI/D3D12/test/test_command_queue.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "fixtures/D3D12TestFixture.h" - -TEST(D3D12CommandQueue, CreateQueue_Success) { - auto* queue = GetCommandQueue(); - ASSERT_NE(queue, nullptr); -} diff --git a/engine/src/RHI/D3D12/test/test_device.cpp b/engine/src/RHI/D3D12/test/test_device.cpp deleted file mode 100644 index a0d5e5f0..00000000 --- a/engine/src/RHI/D3D12/test/test_device.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "fixtures/D3D12TestFixture.h" - -TEST(D3D12Device, CreateDevice_Success) { - auto* device = GetDevice(); - ASSERT_NE(device, nullptr); -} - -TEST(D3D12Device, GetAdapterInfo_NotEmpty) { - ASSERT_NE(GetDevice(), nullptr); -} diff --git a/engine/src/RHI/D3D12/test/test_fence.cpp b/engine/src/RHI/D3D12/test/test_fence.cpp deleted file mode 100644 index 786b9cb9..00000000 --- a/engine/src/RHI/D3D12/test/test_fence.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "fixtures/D3D12TestFixture.h" - -TEST(D3D12Fence, CreateFence_Success) { - auto* device = GetDevice(); - ASSERT_NE(device, nullptr); -} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 034a7219..3c85d28b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -38,9 +38,7 @@ add_subdirectory(memory) add_subdirectory(threading) add_subdirectory(debug) add_subdirectory(D3D12) - -# D3D12 Engine Tests (in engine source tree) -add_subdirectory(${CMAKE_SOURCE_DIR}/engine/src/RHI/D3D12/test ${CMAKE_BINARY_DIR}/D3D12_engine_tests) +add_subdirectory(D3D12_engine/test) # ============================================================ # Test Summary diff --git a/engine/src/RHI/D3D12/test/CMakeLists.txt b/tests/D3D12_engine/test/CMakeLists.txt similarity index 74% rename from engine/src/RHI/D3D12/test/CMakeLists.txt rename to tests/D3D12_engine/test/CMakeLists.txt index 1fd16490..15eb0dbd 100644 --- a/engine/src/RHI/D3D12/test/CMakeLists.txt +++ b/tests/D3D12_engine/test/CMakeLists.txt @@ -5,12 +5,13 @@ project(D3D12EngineTests) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -# Google Test 已在父级 tests/CMakeLists.txt 中 FetchContent -# 找到已安装的 GTest +# 项目根目录 = tests/D3D12_engine/test/../../.. = XCEngine/ +get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../.. ABSOLUTE) + find_package(GTest REQUIRED) -# 测试源文件 set(TEST_SOURCES + fixtures/D3D12TestFixture.cpp test_device.cpp test_fence.cpp test_command_queue.cpp @@ -38,19 +39,17 @@ target_link_libraries(d3d12_engine_tests PRIVATE target_include_directories(d3d12_engine_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/fixtures - ${CMAKE_SOURCE_DIR}/engine/include - ${CMAKE_SOURCE_DIR}/tests/D3D12 + ${PROJECT_ROOT_DIR}/engine/include + ${PROJECT_ROOT_DIR}/engine/src ) -# 设置资源目录路径 target_compile_definitions(d3d12_engine_tests PRIVATE - TEST_RESOURCES_DIR="${CMAKE_SOURCE_DIR}/tests/D3D12/Res" + TEST_RESOURCES_DIR="${PROJECT_ROOT_DIR}/tests/D3D12/Res" ) -# 复制资源文件到输出目录 add_custom_command(TARGET d3d12_engine_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_SOURCE_DIR}/tests/D3D12/Res + ${PROJECT_ROOT_DIR}/tests/D3D12/Res $/Res ) diff --git a/tests/D3D12_engine/test/fixtures/D3D12TestFixture.cpp b/tests/D3D12_engine/test/fixtures/D3D12TestFixture.cpp new file mode 100644 index 00000000..f17ff6f3 --- /dev/null +++ b/tests/D3D12_engine/test/fixtures/D3D12TestFixture.cpp @@ -0,0 +1,77 @@ +#include "D3D12TestFixture.h" + +ComPtr D3D12TestFixture::mDevice; + +void D3D12TestFixture::SetUpTestSuite() { + HRESULT hr = D3D12CreateDevice( + nullptr, + D3D_FEATURE_LEVEL_12_0, + IID_PPV_ARGS(&mDevice) + ); + + if (FAILED(hr)) { + GTEST_SKIP() << "Failed to create D3D12 device"; + return; + } +} + +void D3D12TestFixture::TearDownTestSuite() { + mDevice.Reset(); +} + +void D3D12TestFixture::SetUp() { + if (!mDevice) { + GTEST_SKIP() << "D3D12 device not available"; + return; + } + + D3D12_COMMAND_QUEUE_DESC queueDesc = {}; + queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT; + + HRESULT hr = mDevice->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&mCommandQueue)); + if (FAILED(hr)) { + GTEST_SKIP() << "Failed to create command queue"; + return; + } + + hr = mDevice->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&mCommandAllocator)); + if (FAILED(hr)) { + GTEST_SKIP() << "Failed to create command allocator"; + return; + } + + hr = mDevice->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, mCommandAllocator.Get(), nullptr, IID_PPV_ARGS(&mCommandList)); + if (FAILED(hr)) { + GTEST_SKIP() << "Failed to create command list"; + return; + } +} + +void D3D12TestFixture::TearDown() { + if (mCommandQueue) { + WaitForGPU(); + } + mCommandList.Reset(); + mCommandAllocator.Reset(); + mCommandQueue.Reset(); +} + +void D3D12TestFixture::WaitForGPU() { + if (!mCommandQueue || !mDevice) return; + + ComPtr fence; + UINT64 fenceValue = 1; + + HRESULT hr = mDevice->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&fence)); + if (SUCCEEDED(hr)) { + mCommandQueue->Signal(fence.Get(), fenceValue); + if (fence->GetCompletedValue() < fenceValue) { + HANDLE eventHandle = CreateEvent(nullptr, FALSE, FALSE, nullptr); + if (eventHandle) { + fence->SetEventOnCompletion(fenceValue, eventHandle); + WaitForSingleObject(eventHandle, INFINITE); + CloseHandle(eventHandle); + } + } + } +} diff --git a/tests/D3D12_engine/test/fixtures/D3D12TestFixture.h b/tests/D3D12_engine/test/fixtures/D3D12TestFixture.h new file mode 100644 index 00000000..657454fc --- /dev/null +++ b/tests/D3D12_engine/test/fixtures/D3D12TestFixture.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include +#include +#include + +#include "XCEngine/RHI/D3D12/D3D12Device.h" +#include "XCEngine/RHI/D3D12/D3D12CommandQueue.h" +#include "XCEngine/RHI/D3D12/D3D12CommandAllocator.h" +#include "XCEngine/RHI/D3D12/D3D12CommandList.h" +#include "XCEngine/RHI/D3D12/D3D12Fence.h" + +using namespace Microsoft::WRL; + +class D3D12TestFixture : public ::testing::Test { +protected: + static void SetUpTestSuite(); + static void TearDownTestSuite(); + + void SetUp() override; + void TearDown() override; + + ID3D12Device* GetDevice() { return mDevice.Get(); } + ID3D12CommandQueue* GetCommandQueue() { return mCommandQueue.Get(); } + ID3D12CommandList* GetCommandList() { return mCommandList.Get(); } + ID3D12CommandAllocator* GetCommandAllocator() { return mCommandAllocator.Get(); } + + void WaitForGPU(); + +private: + static ComPtr mDevice; + ComPtr mCommandQueue; + ComPtr mCommandAllocator; + ComPtr mCommandList; +}; diff --git a/engine/src/RHI/D3D12/test/test_buffer.cpp b/tests/D3D12_engine/test/test_buffer.cpp similarity index 58% rename from engine/src/RHI/D3D12/test/test_buffer.cpp rename to tests/D3D12_engine/test/test_buffer.cpp index 085bb9dc..59bbfe2c 100644 --- a/engine/src/RHI/D3D12/test/test_buffer.cpp +++ b/tests/D3D12_engine/test/test_buffer.cpp @@ -1,5 +1,5 @@ #include "fixtures/D3D12TestFixture.h" -TEST(D3D12Buffer, Placeholder) { +TEST_F(D3D12TestFixture, Buffer_Placeholder) { ASSERT_TRUE(true); } diff --git a/tests/D3D12_engine/test/test_command_allocator.cpp b/tests/D3D12_engine/test/test_command_allocator.cpp new file mode 100644 index 00000000..152b1740 --- /dev/null +++ b/tests/D3D12_engine/test/test_command_allocator.cpp @@ -0,0 +1,5 @@ +#include "fixtures/D3D12TestFixture.h" + +TEST_F(D3D12TestFixture, CommandAllocator_Placeholder) { + ASSERT_TRUE(true); +} diff --git a/engine/src/RHI/D3D12/test/test_root_signature.cpp b/tests/D3D12_engine/test/test_command_list.cpp similarity index 55% rename from engine/src/RHI/D3D12/test/test_root_signature.cpp rename to tests/D3D12_engine/test/test_command_list.cpp index 9e5d17f3..26aaf168 100644 --- a/engine/src/RHI/D3D12/test/test_root_signature.cpp +++ b/tests/D3D12_engine/test/test_command_list.cpp @@ -1,5 +1,5 @@ #include "fixtures/D3D12TestFixture.h" -TEST(D3D12RootSignature, Placeholder) { +TEST_F(D3D12TestFixture, CommandList_Placeholder) { ASSERT_TRUE(true); } diff --git a/engine/src/RHI/D3D12/test/test_pipeline_state.cpp b/tests/D3D12_engine/test/test_command_queue.cpp similarity index 55% rename from engine/src/RHI/D3D12/test/test_pipeline_state.cpp rename to tests/D3D12_engine/test/test_command_queue.cpp index 9f5796d0..4e8db22d 100644 --- a/engine/src/RHI/D3D12/test/test_pipeline_state.cpp +++ b/tests/D3D12_engine/test/test_command_queue.cpp @@ -1,5 +1,5 @@ #include "fixtures/D3D12TestFixture.h" -TEST(D3D12PipelineState, Placeholder) { +TEST_F(D3D12TestFixture, CommandQueue_Placeholder) { ASSERT_TRUE(true); } diff --git a/tests/D3D12_engine/test/test_descriptor_heap.cpp b/tests/D3D12_engine/test/test_descriptor_heap.cpp new file mode 100644 index 00000000..4c3edc7a --- /dev/null +++ b/tests/D3D12_engine/test/test_descriptor_heap.cpp @@ -0,0 +1,5 @@ +#include "fixtures/D3D12TestFixture.h" + +TEST_F(D3D12TestFixture, DescriptorHeap_Placeholder) { + ASSERT_TRUE(true); +} diff --git a/tests/D3D12_engine/test/test_device.cpp b/tests/D3D12_engine/test/test_device.cpp new file mode 100644 index 00000000..9e1a92f4 --- /dev/null +++ b/tests/D3D12_engine/test/test_device.cpp @@ -0,0 +1,9 @@ +#include "fixtures/D3D12TestFixture.h" + +TEST_F(D3D12TestFixture, Device_CreateDevice_Success) { + ASSERT_NE(GetDevice(), nullptr); +} + +TEST_F(D3D12TestFixture, Device_GetCommandQueue_Success) { + ASSERT_NE(GetCommandQueue(), nullptr); +} diff --git a/tests/D3D12_engine/test/test_fence.cpp b/tests/D3D12_engine/test/test_fence.cpp new file mode 100644 index 00000000..0f0f06c8 --- /dev/null +++ b/tests/D3D12_engine/test/test_fence.cpp @@ -0,0 +1,5 @@ +#include "fixtures/D3D12TestFixture.h" + +TEST_F(D3D12TestFixture, Fence_CreateFence_Success) { + ASSERT_NE(GetDevice(), nullptr); +} diff --git a/engine/src/RHI/D3D12/test/test_descriptor_heap.cpp b/tests/D3D12_engine/test/test_pipeline_state.cpp similarity index 54% rename from engine/src/RHI/D3D12/test/test_descriptor_heap.cpp rename to tests/D3D12_engine/test/test_pipeline_state.cpp index e1df6350..9a33299c 100644 --- a/engine/src/RHI/D3D12/test/test_descriptor_heap.cpp +++ b/tests/D3D12_engine/test/test_pipeline_state.cpp @@ -1,5 +1,5 @@ #include "fixtures/D3D12TestFixture.h" -TEST(D3D12DescriptorHeap, Placeholder) { +TEST_F(D3D12TestFixture, PipelineState_Placeholder) { ASSERT_TRUE(true); } diff --git a/tests/D3D12_engine/test/test_root_signature.cpp b/tests/D3D12_engine/test/test_root_signature.cpp new file mode 100644 index 00000000..236c6419 --- /dev/null +++ b/tests/D3D12_engine/test/test_root_signature.cpp @@ -0,0 +1,5 @@ +#include "fixtures/D3D12TestFixture.h" + +TEST_F(D3D12TestFixture, RootSignature_Placeholder) { + ASSERT_TRUE(true); +} diff --git a/engine/src/RHI/D3D12/test/test_shader.cpp b/tests/D3D12_engine/test/test_shader.cpp similarity index 58% rename from engine/src/RHI/D3D12/test/test_shader.cpp rename to tests/D3D12_engine/test/test_shader.cpp index 305498a2..ad663760 100644 --- a/engine/src/RHI/D3D12/test/test_shader.cpp +++ b/tests/D3D12_engine/test/test_shader.cpp @@ -1,5 +1,5 @@ #include "fixtures/D3D12TestFixture.h" -TEST(D3D12Shader, Placeholder) { +TEST_F(D3D12TestFixture, Shader_Placeholder) { ASSERT_TRUE(true); } diff --git a/engine/src/RHI/D3D12/test/test_texture.cpp b/tests/D3D12_engine/test/test_texture.cpp similarity index 57% rename from engine/src/RHI/D3D12/test/test_texture.cpp rename to tests/D3D12_engine/test/test_texture.cpp index 7f164a11..2fe3ec6c 100644 --- a/engine/src/RHI/D3D12/test/test_texture.cpp +++ b/tests/D3D12_engine/test/test_texture.cpp @@ -1,5 +1,5 @@ #include "fixtures/D3D12TestFixture.h" -TEST(D3D12Texture, Placeholder) { +TEST_F(D3D12TestFixture, Texture_Placeholder) { ASSERT_TRUE(true); } diff --git a/engine/src/RHI/D3D12/test/test_views.cpp b/tests/D3D12_engine/test/test_views.cpp similarity index 58% rename from engine/src/RHI/D3D12/test/test_views.cpp rename to tests/D3D12_engine/test/test_views.cpp index b770f160..7bb5755b 100644 --- a/engine/src/RHI/D3D12/test/test_views.cpp +++ b/tests/D3D12_engine/test/test_views.cpp @@ -1,5 +1,5 @@ #include "fixtures/D3D12TestFixture.h" -TEST(D3D12Views, Placeholder) { +TEST_F(D3D12TestFixture, Views_Placeholder) { ASSERT_TRUE(true); }