1 #pragma once 2 3 #include "vulkan/VulkanDef.h" 4 #include "vulkan/Device.h" 5 #include "vulkan/Buffer.h" 6 #include "vulkan/CommandBufferPool.h" 7 #include "../GSHandler.h" 8 9 namespace GSH_Vulkan 10 { 11 class CContext 12 { 13 public: 14 Framework::Vulkan::CInstance* instance = nullptr; 15 VkPhysicalDevice physicalDevice; 16 Framework::Vulkan::CDevice device; 17 VkSurfaceKHR surface = VK_NULL_HANDLE; 18 VkSurfaceFormatKHR surfaceFormat; 19 Framework::Vulkan::CCommandBufferPool commandBufferPool; 20 VkQueue queue = VK_NULL_HANDLE; 21 VkDescriptorPool descriptorPool = VK_NULL_HANDLE; 22 VkPhysicalDeviceMemoryProperties physicalDeviceMemoryProperties; 23 Framework::Vulkan::CBuffer memoryBuffer; 24 Framework::Vulkan::CBuffer clutBuffer; 25 VkImageView swizzleTablePSMCT32View = VK_NULL_HANDLE; 26 VkImageView swizzleTablePSMCT16View = VK_NULL_HANDLE; 27 VkImageView swizzleTablePSMCT16SView = VK_NULL_HANDLE; 28 VkImageView swizzleTablePSMT8View = VK_NULL_HANDLE; 29 VkImageView swizzleTablePSMT4View = VK_NULL_HANDLE; 30 VkImageView swizzleTablePSMZ32View = VK_NULL_HANDLE; 31 VkImageView swizzleTablePSMZ16View = VK_NULL_HANDLE; 32 GetSwizzleTable(uint32 psm)33 VkImageView GetSwizzleTable(uint32 psm) const 34 { 35 switch(psm) 36 { 37 default: 38 assert(false); 39 case CGSHandler::PSMCT32: 40 case CGSHandler::PSMCT24: 41 case CGSHandler::PSMCT24_UNK: 42 case CGSHandler::PSMT8H: 43 case CGSHandler::PSMT4HL: 44 case CGSHandler::PSMT4HH: 45 return swizzleTablePSMCT32View; 46 case CGSHandler::PSMCT16: 47 return swizzleTablePSMCT16View; 48 case CGSHandler::PSMCT16S: 49 return swizzleTablePSMCT16SView; 50 case CGSHandler::PSMT8: 51 return swizzleTablePSMT8View; 52 case CGSHandler::PSMT4: 53 return swizzleTablePSMT4View; 54 case CGSHandler::PSMZ32: 55 case CGSHandler::PSMZ24: 56 return swizzleTablePSMZ32View; 57 break; 58 case CGSHandler::PSMZ16: 59 return swizzleTablePSMZ16View; 60 break; 61 case CGSHandler::PSMZ16S: 62 //TODO: Use real swizzle table 63 return swizzleTablePSMCT16SView; 64 break; 65 } 66 } 67 }; 68 69 typedef std::shared_ptr<CContext> ContextPtr; 70 } 71