2016-08-13 12:57:50 +00:00
|
|
|
// Copyright 2016 Dolphin Emulator Project
|
|
|
|
// Licensed under GPLv2+
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2016-10-01 03:07:50 +00:00
|
|
|
#include <array>
|
2016-08-13 12:57:50 +00:00
|
|
|
#include <memory>
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
#include "Common/CommonTypes.h"
|
|
|
|
|
|
|
|
#include "VideoBackends/Vulkan/VulkanLoader.h"
|
|
|
|
|
|
|
|
namespace Vulkan
|
|
|
|
{
|
|
|
|
class StagingBuffer;
|
|
|
|
|
|
|
|
class BoundingBox
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
BoundingBox();
|
|
|
|
~BoundingBox();
|
|
|
|
|
|
|
|
bool Initialize();
|
|
|
|
|
2016-10-22 10:50:36 +00:00
|
|
|
s32 Get(size_t index);
|
|
|
|
void Set(size_t index, s32 value);
|
2016-08-13 12:57:50 +00:00
|
|
|
|
2016-10-22 10:50:36 +00:00
|
|
|
void Invalidate();
|
|
|
|
void Flush();
|
2016-08-13 12:57:50 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
bool CreateGPUBuffer();
|
|
|
|
bool CreateReadbackBuffer();
|
2016-10-22 10:50:36 +00:00
|
|
|
void Readback();
|
2016-08-13 12:57:50 +00:00
|
|
|
|
|
|
|
VkBuffer m_gpu_buffer = VK_NULL_HANDLE;
|
2016-10-01 00:40:44 +00:00
|
|
|
VkDeviceMemory m_gpu_memory = VK_NULL_HANDLE;
|
2016-08-13 12:57:50 +00:00
|
|
|
|
|
|
|
static const size_t NUM_VALUES = 4;
|
|
|
|
static const size_t BUFFER_SIZE = sizeof(u32) * NUM_VALUES;
|
|
|
|
|
|
|
|
std::unique_ptr<StagingBuffer> m_readback_buffer;
|
|
|
|
std::array<bool, NUM_VALUES> m_values_dirty = {};
|
|
|
|
bool m_valid = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace Vulkan
|