diff options
author | Frederico Linhares <fred@linhares.blue> | 2022-08-02 16:52:33 -0300 |
---|---|---|
committer | Frederico Linhares <fred@linhares.blue> | 2022-08-02 16:52:33 -0300 |
commit | f88712a929ee3543f8e1d45c6071f676df339cdb (patch) | |
tree | ad4c9272ead49eb205b1c655bb1d878654863e26 /src/vk/queue.cpp | |
parent | 9c6a166fa2b00a1ab177d9e9216a839b87e36ca7 (diff) |
refa Use Vulkan for graphics
This is a partial refactory. Some functionalities implemented in
SDL were removed and need reimplementation.
Diffstat (limited to 'src/vk/queue.cpp')
-rw-r--r-- | src/vk/queue.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/vk/queue.cpp b/src/vk/queue.cpp new file mode 100644 index 0000000..deb59ba --- /dev/null +++ b/src/vk/queue.cpp @@ -0,0 +1,61 @@ +/* + * Copyright 2022 Frederico de Oliveira Linhares + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "queue.hpp" + +#include "queue_family.hpp" + +namespace VK +{ + +Queue::Queue( + VK::QueueFamily *queue_family, VkQueue queue, int queue_index): + queue_family{queue_family}, + queue{queue}, + queue_index{queue_index} +{ + this->queue_family->queue_states[this->queue_index].busy = true; +} + +Queue::Queue(Queue &&that): + queue{that.queue}, + queue_family{that.queue_family}, + queue_index{that.queue_index} +{ + that.queue_family = nullptr; +} + +Queue& Queue::operator=(Queue &&that) +{ + this->queue = that.queue; + this->queue_family = that.queue_family; + this->queue_index = that.queue_index; + + that.queue_family = nullptr; + + return *this; +} + +Queue::~Queue() +{ + if(this->queue_family) + { + std::unique_lock<std::mutex> lock{this->queue_family->queue_mutex}; + this->queue_family->queue_states[this->queue_index].busy = false; + } +} + +} |