aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordan sinclair <dj2@everburning.com>2019-03-19 15:40:54 -0700
committerGitHub <noreply@github.com>2019-03-19 15:40:54 -0700
commit5dfa7d01262fd775329e99cb58106326622dcae4 (patch)
treefa5911ba71021d2f19d2f5f058978c1a9ea9a0fe /src
parent399098fb17fa7156b21dadda3f90010af43fa097 (diff)
downloadamber-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.cc10
-rw-r--r--src/vulkan/command_buffer.h1
-rw-r--r--src/vulkan/compute_pipeline.cc8
-rw-r--r--src/vulkan/graphics_pipeline.cc16
-rw-r--r--src/vulkan/pipeline.cc17
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());
}