access barrier batching

This commit is contained in:
jacob 2025-11-23 13:32:37 -06:00
parent 1144eef5b3
commit b9181ea200
3 changed files with 524 additions and 457 deletions

View File

@ -165,9 +165,10 @@ Enum(GPU_Format)
Enum(GPU_AccessKind) Enum(GPU_AccessKind)
{ {
GPU_AccessKind_None,
GPU_AccessKind_AnyRead, GPU_AccessKind_AnyRead,
GPU_AccessKind_AnyReadWrite,
GPU_AccessKind_CopyRead, GPU_AccessKind_CopyRead,
GPU_AccessKind_CopyWrite, GPU_AccessKind_CopyWrite,
@ -205,7 +206,6 @@ Struct(GPU_BufferDesc)
{ {
u64 size; u64 size;
GPU_BufferFlag flags; GPU_BufferFlag flags;
GPU_AccessKind initial_access;
}; };
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
@ -386,7 +386,6 @@ GPU_ResourceHandle GPU_PushSampler(GPU_ArenaHandle arena, GPU_SamplerDesc desc);
#define GPU_PushBuffer(arena, type, count, ...) GPU_PushBufferEx((arena), \ #define GPU_PushBuffer(arena, type, count, ...) GPU_PushBufferEx((arena), \
(GPU_BufferDesc) { \ (GPU_BufferDesc) { \
.initial_access = GPU_AccessKind_AnyReadWrite, \
.size = sizeof(type) * (count), \ .size = sizeof(type) * (count), \
__VA_ARGS__ \ __VA_ARGS__ \
} \ } \

File diff suppressed because it is too large Load Diff

View File

@ -116,6 +116,7 @@ Struct(GPU_D12_Resource)
{ {
GPU_D12_Resource *next_free; GPU_D12_Resource *next_free;
ID3D12Resource *d3d_resource; ID3D12Resource *d3d_resource;
u64 uid;
/* Buffer info */ /* Buffer info */
GPU_BufferDesc buffer_desc; GPU_BufferDesc buffer_desc;
@ -198,12 +199,18 @@ Enum(GPU_D12_CmdKind)
Struct(GPU_D12_Cmd) Struct(GPU_D12_Cmd)
{ {
GPU_D12_CmdKind kind; GPU_D12_CmdKind kind;
b32 skip;
union union
{ {
struct struct
{ {
GPU_AccessKind kind; GPU_AccessKind after;
GPU_D12_Resource *resource; GPU_D12_Resource *resource;
/* Post-batch data */
b32 is_end_of_batch;
u64 batch_gen;
GPU_AccessKind before;
} access; } access;
struct struct
@ -298,7 +305,7 @@ Struct(GPU_D12_Swapchain)
Struct(GPU_D12_SharedState) Struct(GPU_D12_SharedState)
{ {
Atomic64Padded resource_barrier_gen; Atomic64Padded next_resource_uid;
/* Stats */ /* Stats */
Atomic64 driver_resources_allocated; Atomic64 driver_resources_allocated;