Skip to content

Commit c0b8cab

Browse files
committed
swapchain & friends
1 parent 78703e6 commit c0b8cab

File tree

18 files changed

+154
-136
lines changed

18 files changed

+154
-136
lines changed

sources/DirectXFramework/DX12/Device12.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
#include "pch_dx.h"
22

33
import Device;
4-
#include "Swapchain12.h"
4+
import SwapChain;
5+
56
#include "PipelineState.h"
67
#include "GPUTimer.h"
78

sources/DirectXFramework/DX12/GPUTimer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#pragma once
22

3-
#include "DX12/Queue.h"
3+
import Queue;
44
import Buffer;
55

66
namespace DX12

sources/DirectXFramework/DX12/Queue.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Samplers;
44
import Device;
55
#include "GPUTimer.h"
66
import Debug;
7+
import Queue;
78
namespace DX12
89
{
910

sources/DirectXFramework/DX12/Queue.h

Lines changed: 0 additions & 77 deletions
This file was deleted.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
export module Queue;
2+
3+
import Scheduler;
4+
import Executors;
5+
import Device;
6+
import CommandList;
7+
8+
export
9+
{
10+
11+
namespace DX12
12+
{
13+
14+
class TransitionCommandList;
15+
class Queue
16+
{
17+
std::wstring name;
18+
ComPtr<ID3D12CommandQueue> native;
19+
20+
Fence commandListCounter;
21+
Event commandListEvent;
22+
23+
UINT64 m_fenceValue;
24+
25+
SingleThreadExecutor executor;
26+
std::function<void(CommandList*)> del_func;
27+
std::function<void(TransitionCommandList*)> del_transition;
28+
29+
std::queue<std::shared_ptr<TransitionCommandList>> transition_lists;
30+
31+
std::queue<std::shared_ptr<CommandList>> lists;
32+
std::mutex list_mutex;
33+
34+
std::mutex queue_mutex;
35+
std::mutex states_mutex;
36+
37+
38+
bool stop = false;
39+
40+
CommandListType type;
41+
42+
FenceWaiter last_executed_fence;
43+
44+
FenceWaiter execute_internal(CommandList* list);
45+
FenceWaiter signal_internal();
46+
void gpu_wait_internal(FenceWaiter waiter);
47+
void signal_and_wait_internal();
48+
FenceWaiter run_transition_list(FenceWaiter after, std::shared_ptr<TransitionCommandList>& list);
49+
public:
50+
void update_tile_mappings(const update_tiling_info& infos);
51+
52+
public:
53+
Queue(CommandListType type, Device* device);
54+
~Queue();
55+
56+
std::shared_ptr<CommandList> get_free_list();
57+
std::shared_ptr<TransitionCommandList> get_transition_list();
58+
using ptr = std::shared_ptr<Queue>;
59+
60+
ComPtr<ID3D12CommandQueue> get_native();
61+
62+
63+
FenceWaiter get_last_fence()
64+
{
65+
return last_executed_fence;
66+
}
67+
void stop_all();
68+
FenceWaiter signal();
69+
void signal_and_wait();
70+
bool is_complete(UINT64 fence);
71+
72+
FenceWaiter execute(std::shared_ptr<CommandList> list);
73+
FenceWaiter execute(CommandList* list);
74+
75+
FenceWaiter signal(Fence& fence, UINT64 value);
76+
77+
void gpu_wait(FenceWaiter waiter);
78+
};
79+
80+
}
81+
}

sources/DirectXFramework/DX12/RayTracingAS.h

Lines changed: 0 additions & 44 deletions
This file was deleted.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
export module RaytracingAS;
2+
3+
import Buffer;
4+
import VirtualBuffer;
5+
class MaterialAsset;
6+
7+
export
8+
{
9+
10+
11+
namespace DX12
12+
{
13+
14+
15+
class RaytracingAccelerationStructure
16+
{
17+
18+
19+
virtual_gpu_buffer<std::byte>::ptr scratchInfo;
20+
21+
22+
virtual_gpu_buffer<std::byte>::ptr prevResource;
23+
24+
int current = 0;
25+
26+
HandleTable handle_table;
27+
public:
28+
virtual_gpu_buffer<std::byte>::ptr currentResource;
29+
30+
//GPUBuffer::ptr resource;
31+
using ptr = std::shared_ptr<RaytracingAccelerationStructure>;
32+
HLSL::RaytracingAccelerationStructure raytracing_handle;
33+
34+
MaterialAsset* material;
35+
36+
37+
RaytracingAccelerationStructure(std::vector<GeometryDesc> desc, CommandList::ptr list);
38+
39+
40+
RaytracingAccelerationStructure(std::vector<InstanceDesc> instances);
41+
42+
43+
void update(CommandList::ptr list, UINT size, ResourceAddress address, bool need_rebuild);
44+
45+
ResourceAddress get_gpu_address() const;
46+
};
47+
48+
49+
}
50+
}

sources/DirectXFramework/DX12/RaytracingAS.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "pch_dx.h"
2-
#include "RayTracingAS.h"
3-
#include "Queue.h"
2+
import RaytracingAS;
3+
import Queue;
44

55
DX12::RaytracingAccelerationStructure::RaytracingAccelerationStructure(std::vector<GeometryDesc> desc,
66
CommandList::ptr list)

sources/DirectXFramework/DX12/Swapchain12.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "pch_dx.h"
2-
#include "Swapchain12.h"
32
#include "Texture.h"
4-
#include "Queue.h"
3+
import SwapChain;
4+
import Queue;
55

66
namespace DX12
77
{

sources/DirectXFramework/DX12/Swapchain12.h renamed to sources/DirectXFramework/DX12/Swapchain12.ixx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1-
#pragma once
1+
export module SwapChain;
2+
23
import Fence;
34
import Descriptors;
45
import Vectors;
6+
import d3d12;
7+
8+
export
9+
{
510

611
namespace DX12
712
{
@@ -52,4 +57,5 @@ namespace DX12
5257
void resize(ivec2 size);
5358

5459
};
60+
}
5561
}

sources/DirectXFramework/DX12/Texture.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "pch_dx.h"
22
#include "Texture.h"
3-
#include "Queue.h"
3+
import Queue;
44

55
namespace DX12
66
{

sources/DirectXFramework/DX12/Tiling.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include "pch_dx.h"
2-
#include "Queue.h"
2+
import Queue;
33
import Tiling;
44
import Constants;
55

sources/RenderSystem/Assets/AssetRenderer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include "AssetRenderer.h"
88
#include "Helpers/MipMapGeneration.h"
99

10-
#include "DX12/Queue.h"
10+
import Queue;
1111

1212
using namespace FrameGraph;
1313

sources/RenderSystem/Assets/MeshAsset.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "Assets/AssetRenderer.h"
44
#include "Materials/universal_material.h"
55

6-
#include "DX12/Queue.h"
6+
import Queue;
77

88
bool MeshData::init_default_loaders()
99
{

sources/RenderSystem/Assets/MeshAsset.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import Tasks;
66

77
#include "GUI/GUI.h"
88

9-
#include "DX12/RayTracingAS.h"
9+
import RaytracingAS;
1010
import Buffer;
1111

1212
#include "DX12/PipelineState.h"

sources/RenderSystem/FrameGraph/FrameGraph.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#include "pch_render.h"
33

44
#include "FrameGraph.h"
5-
#include "DX12/Queue.h"
5+
import Queue;
66

77

88
namespace FrameGraph

sources/RenderSystem/GUI/GUI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "pch_render.h"
22
#include "GUI/Elements/Window.h"
33
#include "GUI/Renderer/Renderer.h"
4-
#include "DX12/Queue.h"
4+
import Queue;
55

66
using namespace FrameGraph;
77

sources/Spectrum/Platform/Window.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import Application;
33
#include "GUI/GUI.h"
44

5-
#include "DX12/Swapchain12.h"
5+
import SwapChain;
66

77
class Window : public DX12::hwnd_provider
88
{

0 commit comments

Comments
 (0)