diff options
author | 2016-04-06 06:08:59 -0700 | |
---|---|---|
committer | 2016-04-06 06:08:59 -0700 | |
commit | 9f37246d6856d40f916e8f1fff5b43cfdc42e567 (patch) | |
tree | f0863a14bdd23a5d5f48e55d64262b57c7f6c86a /src | |
parent | 52b88cc61780425a9f86201bc727558ee08a921a (diff) |
First pass at VulkanViewer
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1848833005
Review URL: https://codereview.chromium.org/1848833005
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/vk/GrVkBackendContext.cpp | 9 | ||||
-rw-r--r-- | src/gpu/vk/GrVkGpu.cpp | 4 | ||||
-rw-r--r-- | src/gpu/vk/GrVkUtil.cpp | 59 | ||||
-rw-r--r-- | src/gpu/vk/GrVkUtil.h | 5 |
4 files changed, 71 insertions, 6 deletions
diff --git a/src/gpu/vk/GrVkBackendContext.cpp b/src/gpu/vk/GrVkBackendContext.cpp index 1ca56e8647..0358618cd2 100644 --- a/src/gpu/vk/GrVkBackendContext.cpp +++ b/src/gpu/vk/GrVkBackendContext.cpp @@ -24,7 +24,7 @@ const char* kDebugLayerNames[] = { "VK_LAYER_LUNARG_mem_tracker", "VK_LAYER_LUNARG_draw_state", "VK_LAYER_LUNARG_swapchain", - "VK_LAYER_GOOGLE_unique_objects", + //"VK_LAYER_GOOGLE_unique_objects", // not included in standard_validation //"VK_LAYER_LUNARG_api_dump", //"VK_LAYER_LUNARG_vktrace", @@ -68,6 +68,8 @@ const GrVkBackendContext* GrVkBackendContext::Create() { instanceExtensionNames.push_back(VK_EXT_DEBUG_REPORT_EXTENSION_NAME); extensionFlags |= kEXT_debug_report_GrVkExtensionFlag; } +#endif + if (extensions.hasInstanceExtension(VK_KHR_SURFACE_EXTENSION_NAME)) { instanceExtensionNames.push_back(VK_KHR_SURFACE_EXTENSION_NAME); extensionFlags |= kKHR_surface_GrVkExtensionFlag; @@ -92,7 +94,6 @@ const GrVkBackendContext* GrVkBackendContext::Create() { extensionFlags |= kKHR_xlib_surface_GrVkExtensionFlag; } #endif -#endif const VkInstanceCreateInfo instance_create = { VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, // sType @@ -159,6 +160,10 @@ const GrVkBackendContext* GrVkBackendContext::Create() { } } #endif + if (extensions.hasDeviceExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME)) { + deviceExtensionNames.push_back(VK_KHR_SWAPCHAIN_EXTENSION_NAME); + extensionFlags |= kKHR_swapchain_GrVkExtensionFlag; + } if (extensions.hasDeviceExtension("VK_NV_glsl_shader")) { deviceExtensionNames.push_back("VK_NV_glsl_shader"); extensionFlags |= kNV_glsl_shader_GrVkExtensionFlag; diff --git a/src/gpu/vk/GrVkGpu.cpp b/src/gpu/vk/GrVkGpu.cpp index e1e99ed020..62cf58087c 100644 --- a/src/gpu/vk/GrVkGpu.cpp +++ b/src/gpu/vk/GrVkGpu.cpp @@ -95,10 +95,10 @@ GrVkGpu::GrVkGpu(GrContext* context, const GrContextOptions& options, callbackCreateInfo.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT; callbackCreateInfo.pNext = nullptr; callbackCreateInfo.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | - VK_DEBUG_REPORT_WARNING_BIT_EXT | + VK_DEBUG_REPORT_WARNING_BIT_EXT;// | //VK_DEBUG_REPORT_INFORMATION_BIT_EXT | //VK_DEBUG_REPORT_DEBUG_BIT_EXT | - VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; + //VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; callbackCreateInfo.pfnCallback = &DebugReportCallback; callbackCreateInfo.pUserData = nullptr; diff --git a/src/gpu/vk/GrVkUtil.cpp b/src/gpu/vk/GrVkUtil.cpp index 5ab7966d1a..a6a9d4c1a1 100644 --- a/src/gpu/vk/GrVkUtil.cpp +++ b/src/gpu/vk/GrVkUtil.cpp @@ -23,6 +23,9 @@ bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) { case kSRGBA_8888_GrPixelConfig: *format = VK_FORMAT_R8G8B8A8_SRGB; break; + case kSBGRA_8888_GrPixelConfig: + *format = VK_FORMAT_B8G8R8A8_SRGB; + break; case kRGB_565_GrPixelConfig: *format = VK_FORMAT_R5G6B5_UNORM_PACK16; break; @@ -30,7 +33,7 @@ bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) { *format = VK_FORMAT_R4G4B4A4_UNORM_PACK16; break; case kIndex_8_GrPixelConfig: - // No current rad support for this config + // No current vulkan support for this config return false; case kAlpha_8_GrPixelConfig: *format = VK_FORMAT_R8_UNORM; @@ -40,7 +43,7 @@ bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) { *format = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK; break; case kLATC_GrPixelConfig: - // No current rad support for this config + // No current vulkan support for this config return false; case kR11_EAC_GrPixelConfig: *format = VK_FORMAT_EAC_R11_UNORM_BLOCK; @@ -63,6 +66,58 @@ bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) { return true; } +bool GrVkFormatToPixelConfig(VkFormat format, GrPixelConfig* config) { + GrPixelConfig dontCare; + if (!config) { + config = &dontCare; + } + + switch (format) { + case VK_FORMAT_R8G8B8A8_UNORM: + *config = kRGBA_8888_GrPixelConfig; + break; + case VK_FORMAT_B8G8R8A8_UNORM: + *config = kBGRA_8888_GrPixelConfig; + break; + case VK_FORMAT_R8G8B8A8_SRGB: + *config = kSRGBA_8888_GrPixelConfig; + break; + case VK_FORMAT_B8G8R8A8_SRGB: + *config = kSBGRA_8888_GrPixelConfig; + break; + case VK_FORMAT_R5G6B5_UNORM_PACK16: + *config = kRGB_565_GrPixelConfig; + break; + case VK_FORMAT_R4G4B4A4_UNORM_PACK16: + *config = kRGBA_4444_GrPixelConfig; + break; + case VK_FORMAT_R8_UNORM: + *config = kAlpha_8_GrPixelConfig; + break; + case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: + *config = kETC1_GrPixelConfig; + break; + case VK_FORMAT_EAC_R11_UNORM_BLOCK: + *config = kR11_EAC_GrPixelConfig; + break; + case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: + *config = kASTC_12x12_GrPixelConfig; + break; + case VK_FORMAT_R32G32B32A32_SFLOAT: + *config = kRGBA_float_GrPixelConfig; + break; + case VK_FORMAT_R16G16B16A16_SFLOAT: + *config = kRGBA_half_GrPixelConfig; + break; + case VK_FORMAT_R16_SFLOAT: + *config = kAlpha_half_GrPixelConfig; + break; + default: + return false; + } + return true; +} + bool GrSampleCountToVkSampleCount(uint32_t samples, VkSampleCountFlagBits* vkSamples) { switch (samples) { case 0: // fall through diff --git a/src/gpu/vk/GrVkUtil.h b/src/gpu/vk/GrVkUtil.h index 4e03c751a8..c2227ec02d 100644 --- a/src/gpu/vk/GrVkUtil.h +++ b/src/gpu/vk/GrVkUtil.h @@ -30,6 +30,11 @@ */ bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format); +/** +* Returns the GrPixelConfig for the given vulkan texture format +*/ +bool GrVkFormatToPixelConfig(VkFormat format, GrPixelConfig* config); + bool GrSampleCountToVkSampleCount(uint32_t samples, VkSampleCountFlagBits* vkSamples); #endif |