forked from dolphin-emu/dolphin
		
	Adds headers where necessary to eliminate indirect includes. Also adds headers to ensure certain standard constructs always resolve correctly
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright 2016 Dolphin Emulator Project
 | 
						|
// Licensed under GPLv2+
 | 
						|
// Refer to the license.txt file included.
 | 
						|
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include <memory>
 | 
						|
 | 
						|
#include "Common/CommonTypes.h"
 | 
						|
#include "VideoBackends/Vulkan/Constants.h"
 | 
						|
 | 
						|
namespace Vulkan
 | 
						|
{
 | 
						|
class CommandBufferManager;
 | 
						|
class ObjectCache;
 | 
						|
 | 
						|
class Texture2D
 | 
						|
{
 | 
						|
public:
 | 
						|
  Texture2D(u32 width, u32 height, u32 levels, u32 layers, VkFormat format,
 | 
						|
            VkSampleCountFlagBits samples, VkImageViewType view_type, VkImage image,
 | 
						|
            VkDeviceMemory device_memory, VkImageView view);
 | 
						|
  ~Texture2D();
 | 
						|
 | 
						|
  static std::unique_ptr<Texture2D> Create(u32 width, u32 height, u32 levels, u32 layers,
 | 
						|
                                           VkFormat format, VkSampleCountFlagBits samples,
 | 
						|
                                           VkImageViewType view_type, VkImageTiling tiling,
 | 
						|
                                           VkImageUsageFlags usage);
 | 
						|
 | 
						|
  static std::unique_ptr<Texture2D> CreateFromExistingImage(u32 width, u32 height, u32 levels,
 | 
						|
                                                            u32 layers, VkFormat format,
 | 
						|
                                                            VkSampleCountFlagBits samples,
 | 
						|
                                                            VkImageViewType view_type,
 | 
						|
                                                            VkImage existing_image);
 | 
						|
 | 
						|
  u32 GetWidth() const { return m_width; }
 | 
						|
  u32 GetHeight() const { return m_height; }
 | 
						|
  u32 GetLevels() const { return m_levels; }
 | 
						|
  u32 GetLayers() const { return m_layers; }
 | 
						|
  VkFormat GetFormat() const { return m_format; }
 | 
						|
  VkSampleCountFlagBits GetSamples() const { return m_samples; }
 | 
						|
  VkImageLayout GetLayout() const { return m_layout; }
 | 
						|
  VkImageViewType GetViewType() const { return m_view_type; }
 | 
						|
  VkImage GetImage() const { return m_image; }
 | 
						|
  VkDeviceMemory GetDeviceMemory() const { return m_device_memory; }
 | 
						|
  VkImageView GetView() const { return m_view; }
 | 
						|
  // Used when the render pass is changing the image layout, or to force it to
 | 
						|
  // VK_IMAGE_LAYOUT_UNDEFINED, if the existing contents of the image is
 | 
						|
  // irrelevant and will not be loaded.
 | 
						|
  void OverrideImageLayout(VkImageLayout new_layout);
 | 
						|
 | 
						|
  void TransitionToLayout(VkCommandBuffer command_buffer, VkImageLayout new_layout);
 | 
						|
 | 
						|
private:
 | 
						|
  u32 m_width;
 | 
						|
  u32 m_height;
 | 
						|
  u32 m_levels;
 | 
						|
  u32 m_layers;
 | 
						|
  VkFormat m_format;
 | 
						|
  VkSampleCountFlagBits m_samples;
 | 
						|
  VkImageViewType m_view_type;
 | 
						|
  VkImageLayout m_layout = VK_IMAGE_LAYOUT_UNDEFINED;
 | 
						|
 | 
						|
  VkImage m_image;
 | 
						|
  VkDeviceMemory m_device_memory;
 | 
						|
  VkImageView m_view;
 | 
						|
};
 | 
						|
}
 |