| Index: gpu/vulkan/vulkan_swap_chain.cc
|
| diff --git a/gpu/vulkan/vulkan_swap_chain.cc b/gpu/vulkan/vulkan_swap_chain.cc
|
| index 700832d25bd6466461fbecc5f9e82e45ab6706e9..c4e62295521e5e907e5a0fbfe3091a1fbd65c28b 100644
|
| --- a/gpu/vulkan/vulkan_swap_chain.cc
|
| +++ b/gpu/vulkan/vulkan_swap_chain.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "gpu/vulkan/vulkan_command_buffer.h"
|
| #include "gpu/vulkan/vulkan_command_pool.h"
|
| +#include "gpu/vulkan/vulkan_device_queue.h"
|
| #include "gpu/vulkan/vulkan_image_view.h"
|
| #include "gpu/vulkan/vulkan_implementation.h"
|
|
|
| @@ -19,9 +20,12 @@ VulkanSwapChain::~VulkanSwapChain() {
|
| DCHECK_EQ(static_cast<VkSemaphore>(VK_NULL_HANDLE), next_present_semaphore_);
|
| }
|
|
|
| -bool VulkanSwapChain::Initialize(VkSurfaceKHR surface,
|
| +bool VulkanSwapChain::Initialize(VulkanDeviceQueue* device_queue,
|
| + VkSurfaceKHR surface,
|
| const VkSurfaceCapabilitiesKHR& surface_caps,
|
| const VkSurfaceFormatKHR& surface_format) {
|
| + DCHECK(device_queue);
|
| + device_queue_ = device_queue;
|
| return InitializeSwapChain(surface, surface_caps, surface_format) &&
|
| InitializeSwapImages(surface_caps, surface_format);
|
| }
|
| @@ -34,8 +38,8 @@ void VulkanSwapChain::Destroy() {
|
| gfx::SwapResult VulkanSwapChain::SwapBuffers() {
|
| VkResult result = VK_SUCCESS;
|
|
|
| - VkDevice device = GetVulkanDevice();
|
| - VkQueue queue = GetVulkanQueue();
|
| + VkDevice device = device_queue_->GetVulkanDevice();
|
| + VkQueue queue = device_queue_->GetVulkanQueue();
|
|
|
| scoped_ptr<ImageData>& current_image_data = images_[current_image_];
|
|
|
| @@ -49,7 +53,7 @@ gfx::SwapResult VulkanSwapChain::SwapBuffers() {
|
|
|
| // Submit our command buffer for the current buffer.
|
| if (!current_image_data->command_buffer->Submit(
|
| - queue, 1, ¤t_image_data->present_semaphore, 1,
|
| + 1, ¤t_image_data->present_semaphore, 1,
|
| ¤t_image_data->render_semaphore)) {
|
| return gfx::SwapResult::SWAP_FAILED;
|
| }
|
| @@ -73,6 +77,7 @@ gfx::SwapResult VulkanSwapChain::SwapBuffers() {
|
| next_present_semaphore_, VK_NULL_HANDLE,
|
| ¤t_image_);
|
| if (VK_SUCCESS != result) {
|
| + DLOG(ERROR) << "vkAcquireNextImageKHR() failed: " << result;
|
| return gfx::SwapResult::SWAP_FAILED;
|
| }
|
|
|
| @@ -89,7 +94,7 @@ bool VulkanSwapChain::InitializeSwapChain(
|
| VkSurfaceKHR surface,
|
| const VkSurfaceCapabilitiesKHR& surface_caps,
|
| const VkSurfaceFormatKHR& surface_format) {
|
| - VkDevice device = GetVulkanDevice();
|
| + VkDevice device = device_queue_->GetVulkanDevice();
|
| VkResult result = VK_SUCCESS;
|
|
|
| VkSwapchainCreateInfoKHR swap_chain_create_info = {};
|
| @@ -127,7 +132,7 @@ bool VulkanSwapChain::InitializeSwapChain(
|
| }
|
|
|
| void VulkanSwapChain::DestroySwapChain() {
|
| - VkDevice device = GetVulkanDevice();
|
| + VkDevice device = device_queue_->GetVulkanDevice();
|
|
|
| if (swap_chain_ != VK_NULL_HANDLE) {
|
| vkDestroySwapchainKHR(device, swap_chain_, nullptr);
|
| @@ -138,7 +143,7 @@ void VulkanSwapChain::DestroySwapChain() {
|
| bool VulkanSwapChain::InitializeSwapImages(
|
| const VkSurfaceCapabilitiesKHR& surface_caps,
|
| const VkSurfaceFormatKHR& surface_format) {
|
| - VkDevice device = GetVulkanDevice();
|
| + VkDevice device = device_queue_->GetVulkanDevice();
|
| VkResult result = VK_SUCCESS;
|
|
|
| uint32_t image_count = 0;
|
| @@ -178,7 +183,7 @@ bool VulkanSwapChain::InitializeSwapImages(
|
| image_memory_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
| image_memory_barrier.subresourceRange = image_subresource_range;
|
|
|
| - command_pool_ = CreateCommandPool();
|
| + command_pool_ = device_queue_->CreateCommandPool();
|
| if (!command_pool_)
|
| return false;
|
|
|
| @@ -215,7 +220,7 @@ bool VulkanSwapChain::InitializeSwapImages(
|
| nullptr, 1, &image_memory_barrier);
|
|
|
| // Create the image view.
|
| - image_data->image_view.reset(new VulkanImageView);
|
| + image_data->image_view.reset(new VulkanImageView(device_queue_));
|
| if (!image_data->image_view->Initialize(
|
| images[i], VK_IMAGE_VIEW_TYPE_2D, VulkanImageView::IMAGE_TYPE_COLOR,
|
| surface_format.format, size_.width(), size_.height(), 0, 1, 0, 1)) {
|
| @@ -231,7 +236,7 @@ bool VulkanSwapChain::InitializeSwapImages(
|
| }
|
|
|
| // Acquire the initial buffer.
|
| - result = vkAcquireNextImageKHR(GetVulkanDevice(), swap_chain_, UINT64_MAX,
|
| + result = vkAcquireNextImageKHR(device, swap_chain_, UINT64_MAX,
|
| next_present_semaphore_, VK_NULL_HANDLE,
|
| ¤t_image_);
|
| if (VK_SUCCESS != result) {
|
| @@ -246,7 +251,7 @@ bool VulkanSwapChain::InitializeSwapImages(
|
| }
|
|
|
| void VulkanSwapChain::DestroySwapImages() {
|
| - VkDevice device = GetVulkanDevice();
|
| + VkDevice device = device_queue_->GetVulkanDevice();
|
|
|
| if (VK_NULL_HANDLE != next_present_semaphore_) {
|
| vkDestroySemaphore(device, next_present_semaphore_, nullptr);
|
|
|