diff options
author | dan sinclair <dj2@everburning.com> | 2019-03-19 15:40:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-19 15:40:54 -0700 |
commit | 5dfa7d01262fd775329e99cb58106326622dcae4 (patch) | |
tree | fa5911ba71021d2f19d2f5f058978c1a9ea9a0fe /src | |
parent | 399098fb17fa7156b21dadda3f90010af43fa097 (diff) | |
download | amber-5dfa7d01262fd775329e99cb58106326622dcae4.tar.gz |
[vulkan] Merge CommandBuffer End and SubmitAndReset. (#384)
The End command is always immediately followed by SubmitAndReset. This
CL merges the two methods and removes the End calls.
Diffstat (limited to 'src')
-rw-r--r-- | src/vulkan/command_buffer.cc | 10 | ||||
-rw-r--r-- | src/vulkan/command_buffer.h | 1 | ||||
-rw-r--r-- | src/vulkan/compute_pipeline.cc | 8 | ||||
-rw-r--r-- | src/vulkan/graphics_pipeline.cc | 16 | ||||
-rw-r--r-- | src/vulkan/pipeline.cc | 17 |
5 files changed, 2 insertions, 50 deletions
diff --git a/src/vulkan/command_buffer.cc b/src/vulkan/command_buffer.cc index 86dd5a6..73e12dd 100644 --- a/src/vulkan/command_buffer.cc +++ b/src/vulkan/command_buffer.cc @@ -74,21 +74,13 @@ Result CommandBuffer::BeginIfNotInRecording() { return {}; } -Result CommandBuffer::End() { +Result CommandBuffer::SubmitAndReset(uint32_t timeout_ms) { if (state_ != CommandBufferState::kRecording) return Result("Vulkan::End CommandBuffer from Not Valid State"); if (device_->GetPtrs()->vkEndCommandBuffer(command_) != VK_SUCCESS) return Result("Vulkan::Calling vkEndCommandBuffer Fail"); - state_ = CommandBufferState::kExecutable; - return {}; -} - -Result CommandBuffer::SubmitAndReset(uint32_t timeout_ms) { - if (state_ != CommandBufferState::kExecutable) - return Result("Vulkan::Submit CommandBuffer from Not Valid State"); - if (device_->GetPtrs()->vkResetFences(device_->GetDevice(), 1, &fence_) != VK_SUCCESS) { return Result("Vulkan::Calling vkResetFences Fail"); diff --git a/src/vulkan/command_buffer.h b/src/vulkan/command_buffer.h index d62da64..ecb3948 100644 --- a/src/vulkan/command_buffer.h +++ b/src/vulkan/command_buffer.h @@ -47,7 +47,6 @@ class CommandBuffer { // Otherwise, report error. Result BeginIfNotInRecording(); - Result End(); Result SubmitAndReset(uint32_t timeout_ms); private: diff --git a/src/vulkan/compute_pipeline.cc b/src/vulkan/compute_pipeline.cc index 9e60238..262b822 100644 --- a/src/vulkan/compute_pipeline.cc +++ b/src/vulkan/compute_pipeline.cc @@ -77,10 +77,6 @@ Result ComputePipeline::Compute(uint32_t x, uint32_t y, uint32_t z) { if (!r.IsSuccess()) return r; - r = command_->End(); - if (!r.IsSuccess()) - return r; - r = command_->SubmitAndReset(GetFenceTimeout()); if (!r.IsSuccess()) return r; @@ -116,10 +112,6 @@ Result ComputePipeline::Compute(uint32_t x, uint32_t y, uint32_t z) { command_->GetVkCommandBuffer(), VK_PIPELINE_BIND_POINT_COMPUTE, pipeline); device_->GetPtrs()->vkCmdDispatch(command_->GetVkCommandBuffer(), x, y, z); - r = command_->End(); - if (!r.IsSuccess()) - return r; - r = command_->SubmitAndReset(GetFenceTimeout()); if (!r.IsSuccess()) return r; diff --git a/src/vulkan/graphics_pipeline.cc b/src/vulkan/graphics_pipeline.cc index ba31c6a..3244f31 100644 --- a/src/vulkan/graphics_pipeline.cc +++ b/src/vulkan/graphics_pipeline.cc @@ -730,10 +730,6 @@ Result GraphicsPipeline::SetIndexBuffer(const std::vector<Value>& values) { if (!r.IsSuccess()) return r; - r = command_->End(); - if (!r.IsSuccess()) - return r; - return command_->SubmitAndReset(GetFenceTimeout()); } @@ -817,10 +813,6 @@ Result GraphicsPipeline::ClearBuffer(const VkClearValue& clear_value, if (!r.IsSuccess()) return r; - r = command_->End(); - if (!r.IsSuccess()) - return r; - r = command_->SubmitAndReset(GetFenceTimeout()); if (!r.IsSuccess()) return r; @@ -838,10 +830,6 @@ Result GraphicsPipeline::Draw(const DrawArraysCommand* command, if (!r.IsSuccess()) return r; - r = command_->End(); - if (!r.IsSuccess()) - return r; - r = command_->SubmitAndReset(GetFenceTimeout()); if (!r.IsSuccess()) return r; @@ -925,10 +913,6 @@ Result GraphicsPipeline::Draw(const DrawArraysCommand* command, if (!r.IsSuccess()) return r; - r = command_->End(); - if (!r.IsSuccess()) - return r; - r = command_->SubmitAndReset(GetFenceTimeout()); if (!r.IsSuccess()) return r; diff --git a/src/vulkan/pipeline.cc b/src/vulkan/pipeline.cc index 55bc118..b01d636 100644 --- a/src/vulkan/pipeline.cc +++ b/src/vulkan/pipeline.cc @@ -69,10 +69,7 @@ Result Pipeline::Initialize(CommandPool* pool, VkQueue queue) { void Pipeline::Shutdown() { if (command_) { - Result r = command_->End(); - if (r.IsSuccess()) - command_->SubmitAndReset(fence_timeout_ms_); - + command_->SubmitAndReset(fence_timeout_ms_); command_ = nullptr; } @@ -336,10 +333,6 @@ Result Pipeline::SendDescriptorDataToDeviceIfNeeded() { } } - r = command_->End(); - if (!r.IsSuccess()) - return r; - // Note that if a buffer for a descriptor is host accessible and // does not need to record a command to copy data to device, it // directly writes data to the buffer. The direct write must be @@ -392,10 +385,6 @@ Result Pipeline::ReadbackDescriptorsToHostDataQueue() { } } - r = command_->End(); - if (!r.IsSuccess()) - return r; - r = command_->SubmitAndReset(GetFenceTimeout()); if (!r.IsSuccess()) return r; @@ -424,10 +413,6 @@ Result Pipeline::ProcessCommands() { if (!r.IsSuccess()) return r; - r = command_->End(); - if (!r.IsSuccess()) - return r; - return command_->SubmitAndReset(GetFenceTimeout()); } |