dxc layer refactor
This commit is contained in:
parent
2d953cca9b
commit
8ba63a7821
@ -124,7 +124,7 @@ AC_Asset *AC_TouchCache(String key, u64 hash, b32 *is_first_touch)
|
||||
}
|
||||
String key_stored = ZI;
|
||||
{
|
||||
/* CopyStruct key to store */
|
||||
/* Copy key to store */
|
||||
AC_Store store = AC_OpenStore();
|
||||
key_stored = CopyString(store.arena, key);
|
||||
AC_CloseStore(&store);
|
||||
|
||||
@ -85,7 +85,7 @@ Inline void MergesortInternal(u8 *left, u8 *right, u8 *items, u64 left_count, u6
|
||||
++r;
|
||||
}
|
||||
}
|
||||
/* CopyStruct remaining */
|
||||
/* Copy remaining */
|
||||
if (l != left_count)
|
||||
{
|
||||
u64 remaining_count = left_count - l;
|
||||
|
||||
@ -1,7 +1,13 @@
|
||||
////////////////////////////////
|
||||
//~ Dxc types
|
||||
|
||||
Struct(DXC_Result) {
|
||||
String dxc;
|
||||
String errors;
|
||||
b32 success;
|
||||
};
|
||||
|
||||
DXC_Result dxc_compile(Arena *arena, String shader_source, i32 num_args, String *args);
|
||||
////////////////////////////////
|
||||
//~ Dxc operations
|
||||
|
||||
DXC_Result DXC_Compile(Arena *arena, String shader_source, i32 num_args, String *args);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#if !RESOURCE_RELOADING
|
||||
|
||||
DXC_Result dxc_compile(Arena *arena, String shader_source, i32 num_args, String *args)
|
||||
DXC_Result DXC_Compile(Arena *arena, String shader_source, i32 num_args, String *args)
|
||||
{
|
||||
(UNUSED)arena;
|
||||
(UNUSED)shader_source;
|
||||
@ -29,7 +29,7 @@ DXC_Result dxc_compile(Arena *arena, String shader_source, i32 num_args, String
|
||||
#pragma comment(lib, "dxcompiler")
|
||||
|
||||
/* https://github.com/microsoft/DirectXShaderCompiler/wiki/Using-dxc.exe-and-dxcompiler.dll */
|
||||
DXC_Result dxc_compile(Arena *arena, String shader_source, i32 num_args, String *args)
|
||||
DXC_Result DXC_Compile(Arena *arena, String shader_source, i32 num_args, String *args)
|
||||
{
|
||||
__prof;
|
||||
TempArena scratch = BeginScratch(arena);
|
||||
@ -45,7 +45,7 @@ DXC_Result dxc_compile(Arena *arena, String shader_source, i32 num_args, String
|
||||
dxc_src_buffer.Size = shader_source.len;
|
||||
dxc_src_buffer.Encoding = DXC_CP_UTF8;
|
||||
|
||||
/* Init compiler */
|
||||
//- Init compiler
|
||||
CComPtr<IDxcUtils> dxc_utils;
|
||||
CComPtr<IDxcCompiler3> dxc_compiler;
|
||||
CComPtr<IDxcIncludeHandler> dxc_include_handler;
|
||||
@ -53,11 +53,11 @@ DXC_Result dxc_compile(Arena *arena, String shader_source, i32 num_args, String
|
||||
DxcCreateInstance(CLSID_DxcCompiler, IID_PPV_ARGS(&dxc_compiler));
|
||||
dxc_utils->CreateDefaultIncludeHandler(&dxc_include_handler);
|
||||
|
||||
/* Compile */
|
||||
//- Compile
|
||||
CComPtr<IDxcResult> compile_results = 0;
|
||||
dxc_compiler->Compile(&dxc_src_buffer, (LPCWSTR *)wstr_args, (u32)num_args, dxc_include_handler, IID_PPV_ARGS(&compile_results));
|
||||
|
||||
/* CopyStruct errors */
|
||||
//- Copy errors
|
||||
CComPtr<IDxcBlobUtf8> dxc_errors = 0;
|
||||
compile_results->GetOutput(DXC_OUT_ERRORS, IID_PPV_ARGS(&dxc_errors), 0);
|
||||
if (dxc_errors != 0) {
|
||||
@ -67,12 +67,12 @@ DXC_Result dxc_compile(Arena *arena, String shader_source, i32 num_args, String
|
||||
result.errors = CopyString(arena, blob_str);
|
||||
}
|
||||
|
||||
/* Get status */
|
||||
//- Get status
|
||||
HRESULT dxc_hr = 0;
|
||||
compile_results->GetStatus(&dxc_hr);
|
||||
result.success = SUCCEEDED(dxc_hr);
|
||||
|
||||
/* CopyStruct shader output */
|
||||
//- Copy shader output
|
||||
if (result.success) {
|
||||
CComPtr<IDxcBlob> dxc_shader = 0;
|
||||
compile_results->GetOutput(DXC_OUT_OBJECT, IID_PPV_ARGS(&dxc_shader), 0);
|
||||
|
||||
@ -651,7 +651,7 @@ internal void dx12_init_objects(void)
|
||||
struct command_queue_desc params[] = {
|
||||
{.type = D3D12_COMMAND_LIST_TYPE_DIRECT, .priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL, .dbg_name = Lit("Direct queue") },
|
||||
{.type = D3D12_COMMAND_LIST_TYPE_COMPUTE, .priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL, .dbg_name = Lit("Compute queue") },
|
||||
{.type = D3D12_COMMAND_LIST_TYPE_COPY, .priority = D3D12_COMMAND_QUEUE_PRIORITY_HIGH, .dbg_name = Lit("CopyStruct queue") },
|
||||
{.type = D3D12_COMMAND_LIST_TYPE_COPY, .priority = D3D12_COMMAND_QUEUE_PRIORITY_HIGH, .dbg_name = Lit("Copyqueue") },
|
||||
{.type = D3D12_COMMAND_LIST_TYPE_COPY, .priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL, .dbg_name = Lit("Background copy queue") }
|
||||
};
|
||||
struct command_queue_alloc_job_sig sig = ZI;
|
||||
@ -899,7 +899,7 @@ internal P_JobDef(shader_compile_job, job)
|
||||
for (u32 i = 0; i < dxc_args_array.count; ++i) {
|
||||
args[i + countof(shader_args)] = dxc_args_array.strings[i];
|
||||
}
|
||||
dxc_result = dxc_compile(arena, desc->src, num_args, args);
|
||||
dxc_result = DXC_Compile(arena, desc->src, num_args, args);
|
||||
}
|
||||
result->success = dxc_result.success;
|
||||
result->dxc = dxc_result.dxc;
|
||||
@ -2015,7 +2015,7 @@ internal struct command_descriptor_heap *command_list_push_descriptor_heap(struc
|
||||
ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(cdh->heap, &cdh->start_gpu_handle);
|
||||
}
|
||||
|
||||
/* CopyStruct CPU heap */
|
||||
/* CopyCPU heap */
|
||||
{
|
||||
P_Lock lock = P_LockS(&dh_cpu->mutex);
|
||||
ID3D12Device_CopyDescriptorsSimple(G.device, dh_cpu->num_descriptors_reserved, cdh->start_cpu_handle, dh_cpu->handle, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
|
||||
@ -2328,7 +2328,7 @@ internal P_JobDef(dx12_upload_job, job)
|
||||
struct command_queue *cq = G.command_queues[DX12_QUEUE_COPY_BACKGROUND];
|
||||
struct command_list *cl = command_list_open(cq->cl_pool);
|
||||
{
|
||||
/* CopyStruct to upload heap */
|
||||
/* Copyto upload heap */
|
||||
{
|
||||
D3D12_RANGE read_range = ZI;
|
||||
void *mapped = 0;
|
||||
@ -2351,7 +2351,7 @@ internal P_JobDef(dx12_upload_job, job)
|
||||
ID3D12Resource_Unmap(upload->resource, 0, 0);
|
||||
}
|
||||
|
||||
/* CopyStruct from upload heap to texture */
|
||||
/* Copyfrom upload heap to texture */
|
||||
{
|
||||
__profnc_dx12(cl->cq->prof, cl->cl, "Upload texture", Rgb32F(0.2, 0.5, 0.2));
|
||||
D3D12_TEXTURE_COPY_LOCATION dst_loc = {
|
||||
@ -3500,11 +3500,11 @@ internal P_JobDef(dx12_evictor_job, _)
|
||||
TempArena scratch = BeginScratchNoConflict();
|
||||
u64 targets[countof(completed_targets)] = ZI;
|
||||
|
||||
/* CopyStruct queued data */
|
||||
/* Copyqueued data */
|
||||
u32 num_fenced_releases = 0;
|
||||
struct fenced_release_data *fenced_releases = 0;
|
||||
{
|
||||
__profn("CopyStruct queued releases");
|
||||
__profn("Copyqueued releases");
|
||||
P_Lock lock = P_LockE(&G.fenced_releases_mutex);
|
||||
num_fenced_releases = G.fenced_releases_arena->pos / sizeof(struct fenced_release_data);
|
||||
fenced_releases = PushStructsNoZero(scratch.arena, struct fenced_release_data, num_fenced_releases);
|
||||
|
||||
@ -102,7 +102,7 @@ P_W32_Thread *P_W32_AllocThread(P_W32_ThreadFunc *entry_point, void *thread_data
|
||||
t->thread_data = thread_data;
|
||||
t->profiler_group = profiler_group;
|
||||
|
||||
/* CopyStruct thread name to params */
|
||||
/* Copy thread name to params */
|
||||
{
|
||||
u64 CstrLen = MinU64((countof(t->thread_name_cstr) - 1), thread_name.len);
|
||||
CopyBytes(t->thread_name_cstr, thread_name.text, CstrLen * sizeof(*t->thread_name_cstr));
|
||||
@ -2886,7 +2886,7 @@ P_Address P_AddressFromString(String str)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* CopyStruct address without port */
|
||||
/* Copy address without port */
|
||||
ip_len = MinU64(str.len, countof(ip_buff) - 1);
|
||||
CopyBytes(ip_buff, str.text, ip_len);
|
||||
}
|
||||
|
||||
@ -189,7 +189,7 @@ internal void wasapi_update_end(struct wasapi_buffer *wspbuf, M_PcmF32 src)
|
||||
|
||||
u32 flags = 0;
|
||||
if (frames_in_source == frames_in_output) {
|
||||
/* CopyStruct bytes to output */
|
||||
/* Copy bytes to output */
|
||||
u32 bytes_per_sample = G.buffer_format->nBlockAlign / G.buffer_format->nChannels;
|
||||
u32 write_size = frames_in_source * 2 * bytes_per_sample;
|
||||
CopyBytes(wspbuf->frames, src.samples, write_size);
|
||||
|
||||
@ -303,14 +303,14 @@ Snapshot *sim_snapshot_alloc(Client *client, Snapshot *src, u64 tick)
|
||||
ss->client = client;
|
||||
++client->num_ticks;
|
||||
|
||||
/* CopyStruct src info */
|
||||
/* Copy src info */
|
||||
ss->sim_dt_ns = src->sim_dt_ns;
|
||||
ss->sim_time_ns = src->sim_time_ns;
|
||||
ss->continuity_gen = src->continuity_gen;
|
||||
ss->local_player = src->local_player;
|
||||
ss->phys_iteration = src->phys_iteration;
|
||||
|
||||
/* CopyStruct id lookup bins */
|
||||
/* Copy id lookup bins */
|
||||
ss->num_id_bins = src->num_id_bins > 0 ? src->num_id_bins : ID_LOOKUP_BINS;
|
||||
ss->id_bins = PushStructsNoZero(ss->arena, EntBin, ss->num_id_bins);
|
||||
if (src->num_id_bins > 0) {
|
||||
@ -321,7 +321,7 @@ Snapshot *sim_snapshot_alloc(Client *client, Snapshot *src, u64 tick)
|
||||
ZeroBytes(ss->id_bins, sizeof(*ss->id_bins) * ss->num_id_bins);
|
||||
}
|
||||
|
||||
/* CopyStruct entities */
|
||||
/* Copy entities */
|
||||
ss->first_free_ent = src->first_free_ent;
|
||||
ss->num_ents_allocated = src->num_ents_allocated;
|
||||
ss->num_ents_reserved = src->num_ents_reserved;
|
||||
@ -689,7 +689,7 @@ void sim_snapshot_sync_ents(Snapshot *local_ss, Snapshot *remote_ss, EntId remot
|
||||
if (should_sync) {
|
||||
Ent *remote_ent = sim_ent_from_id(remote_ss, local_ent->id);
|
||||
if (remote_ent->valid) {
|
||||
/* CopyStruct all ent data from remote */
|
||||
/* Copy all ent data from remote */
|
||||
sim_ent_sync(local_ent, remote_ent);
|
||||
} else {
|
||||
/* Remote ent is no longer valid / networked, release it */
|
||||
|
||||
@ -1137,7 +1137,7 @@ internal void user_update(P_Window *window)
|
||||
Ent **sorted = PushDry(scratch.arena, Ent *);
|
||||
u64 sorted_count = 0;
|
||||
{
|
||||
/* CopyStruct valid entities */
|
||||
/* Copy valid entities */
|
||||
{
|
||||
__profn("Build ents list for sorting");
|
||||
for (u64 ent_index = 0; ent_index < G.ss_blended->num_ents_reserved; ++ent_index) {
|
||||
@ -2745,7 +2745,7 @@ internal P_JobDef(local_sim_job, _)
|
||||
}
|
||||
}
|
||||
|
||||
/* CopyStruct local snapshot to user client */
|
||||
/* Copy local snapshot to user client */
|
||||
{
|
||||
Snapshot *local_ss = sim_snapshot_from_tick(local_client, local_client->last_tick);
|
||||
if (local_ss->valid) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user