From aa9fdefde9c25132db89422778bb4b06408c02a2 Mon Sep 17 00:00:00 2001 From: Artem Kharytoniuk Date: Sat, 9 Dec 2017 13:27:18 +0100 Subject: [PATCH] DX12: Removed unused code, renames. --- src/engine/renderer/dx.cpp | 66 ++++++++------------------------------ src/engine/renderer/dx.h | 5 ++- 2 files changed, 16 insertions(+), 55 deletions(-) diff --git a/src/engine/renderer/dx.cpp b/src/engine/renderer/dx.cpp index fa09853..d220968 100644 --- a/src/engine/renderer/dx.cpp +++ b/src/engine/renderer/dx.cpp @@ -276,48 +276,7 @@ void dx_initialize() { DX_CHECK(dx.device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(), IID_PPV_ARGS(&dx.root_signature))); } - // Create the pipeline state, which includes compiling and loading shaders. - { - ComPtr vertexShader; - ComPtr pixelShader; - -#if defined(_DEBUG) - // Enable better shader debugging with the graphics debugging tools. - UINT compileFlags = D3DCOMPILE_DEBUG | D3DCOMPILE_SKIP_OPTIMIZATION; -#else - UINT compileFlags = 0; -#endif - - DX_CHECK(D3DCompileFromFile(L"d:/Quake-III-Arena-Kenny-Edition/src/engine/renderer/shaders/shaders.hlsl", nullptr, nullptr, "VSMain", "vs_5_0", compileFlags, 0, &vertexShader, nullptr)); - DX_CHECK(D3DCompileFromFile(L"d:/Quake-III-Arena-Kenny-Edition/src/engine/renderer/shaders/shaders.hlsl", nullptr, nullptr, "PSMain", "ps_5_0", compileFlags, 0, &pixelShader, nullptr)); - - // Define the vertex input layout. - D3D12_INPUT_ELEMENT_DESC inputElementDescs[] = - { - { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 }, - { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 2, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 } - }; - - // Describe and create the graphics pipeline state object (PSO). - D3D12_GRAPHICS_PIPELINE_STATE_DESC psoDesc = {}; - psoDesc.InputLayout = { inputElementDescs, _countof(inputElementDescs) }; - psoDesc.pRootSignature = dx.root_signature; - psoDesc.VS = CD3DX12_SHADER_BYTECODE(vertexShader.Get()); - psoDesc.PS = CD3DX12_SHADER_BYTECODE(pixelShader.Get()); - psoDesc.RasterizerState = CD3DX12_RASTERIZER_DESC(D3D12_DEFAULT); - - psoDesc.BlendState = CD3DX12_BLEND_DESC(D3D12_DEFAULT); - psoDesc.DepthStencilState.DepthEnable = FALSE; - psoDesc.DepthStencilState.StencilEnable = FALSE; - psoDesc.SampleMask = UINT_MAX; - psoDesc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; - psoDesc.NumRenderTargets = 1; - psoDesc.RTVFormats[0] = DXGI_FORMAT_R8G8B8A8_UNORM; - psoDesc.SampleDesc.Count = 1; - DX_CHECK(dx.device->CreateGraphicsPipelineState(&psoDesc, IID_PPV_ARGS(&dx.pipeline_state))); - } - - DX_CHECK(dx.device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, dx.command_allocator, dx.pipeline_state, IID_PPV_ARGS(&dx.command_list))); + DX_CHECK(dx.device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, dx.command_allocator, nullptr, IID_PPV_ARGS(&dx.command_list))); // Command lists are created in the recording state, but there is nothing // to record yet. The main loop expects it to be closed, so close it now. @@ -396,9 +355,6 @@ void dx_shutdown() { dx.command_list->Release(); dx.command_list = nullptr; - dx.pipeline_state->Release(); - dx.pipeline_state = nullptr; - dx.fence->Release(); dx.fence = nullptr; @@ -418,11 +374,17 @@ void dx_shutdown() { } void dx_release_resources() { + dx_world.pipeline_create_time = 0.0f; + for (int i = 0; i < dx_world.num_pipeline_states; i++) { + dx_world.pipeline_states[i]->Release(); + } + for (int i = 0; i < MAX_VK_IMAGES; i++) { if (dx_world.images[i].texture != nullptr) { dx_world.images[i].texture->Release(); } } + Com_Memset(&dx_world, 0, sizeof(dx_world)); // Reset geometry buffer's current offsets. @@ -660,7 +622,7 @@ struct Timer { }; ID3D12PipelineState* dx_find_pipeline(const Vk_Pipeline_Def& def) { - for (int i = 0; i < dx_world.num_pipelines; i++) { + for (int i = 0; i < dx_world.num_pipeline_states; i++) { const auto& cur_def = dx_world.pipeline_defs[i]; if (cur_def.shader_type == def.shader_type && @@ -672,11 +634,11 @@ ID3D12PipelineState* dx_find_pipeline(const Vk_Pipeline_Def& def) { cur_def.line_primitives == def.line_primitives && cur_def.shadow_phase == def.shadow_phase) { - return dx_world.pipelines[i]; + return dx_world.pipeline_states[i]; } } - if (dx_world.num_pipelines >= MAX_VK_PIPELINES) { + if (dx_world.num_pipeline_states >= MAX_VK_PIPELINES) { ri.Error(ERR_DROP, "dx_find_pipeline: MAX_VK_PIPELINES hit\n"); } @@ -684,9 +646,9 @@ ID3D12PipelineState* dx_find_pipeline(const Vk_Pipeline_Def& def) { ID3D12PipelineState* pipeline_state = create_pipeline(def); dx_world.pipeline_create_time += t.elapsed_seconds(); - dx_world.pipeline_defs[dx_world.num_pipelines] = def; - dx_world.pipelines[dx_world.num_pipelines] = pipeline_state; - dx_world.num_pipelines++; + dx_world.pipeline_defs[dx_world.num_pipeline_states] = def; + dx_world.pipeline_states[dx_world.num_pipeline_states] = pipeline_state; + dx_world.num_pipeline_states++; return pipeline_state; } @@ -947,7 +909,7 @@ void dx_begin_frame() { // However, when ExecuteCommandList() is called on a particular command // list, that command list can then be reset at any time and must be before // re-recording. - DX_CHECK(dx.command_list->Reset(dx.command_allocator, dx.pipeline_state)); + DX_CHECK(dx.command_list->Reset(dx.command_allocator, nullptr)); // Set necessary state. dx.command_list->SetGraphicsRootSignature(dx.root_signature); diff --git a/src/engine/renderer/dx.h b/src/engine/renderer/dx.h index 33c5459..d00644d 100644 --- a/src/engine/renderer/dx.h +++ b/src/engine/renderer/dx.h @@ -62,7 +62,6 @@ struct Dx_Instance { ID3D12CommandAllocator* command_allocator = nullptr; ID3D12CommandAllocator* helper_command_allocator = nullptr; ID3D12GraphicsCommandList* command_list = nullptr; - ID3D12PipelineState* pipeline_state = nullptr; ID3D12Resource* depth_stencil_buffer = nullptr; ID3D12DescriptorHeap* dsv_heap = nullptr; @@ -89,9 +88,9 @@ struct Dx_World { // // Resources. // - int num_pipelines = 0; + int num_pipeline_states = 0; Vk_Pipeline_Def pipeline_defs[MAX_VK_PIPELINES]; - ID3D12PipelineState* pipelines[MAX_VK_PIPELINES]; + ID3D12PipelineState* pipeline_states[MAX_VK_PIPELINES]; float pipeline_create_time; Dx_Image images[MAX_VK_IMAGES];