| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrVkGpu.h" | 8 #include "GrVkGpu.h" |
| 9 | 9 |
| 10 #include "GrContextOptions.h" | 10 #include "GrContextOptions.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 #include "GrVkTextureRenderTarget.h" | 29 #include "GrVkTextureRenderTarget.h" |
| 30 #include "GrVkTransferBuffer.h" | 30 #include "GrVkTransferBuffer.h" |
| 31 #include "GrVkVertexBuffer.h" | 31 #include "GrVkVertexBuffer.h" |
| 32 | 32 |
| 33 #include "SkConfig8888.h" | 33 #include "SkConfig8888.h" |
| 34 #include "SkMipMap.h" | 34 #include "SkMipMap.h" |
| 35 | 35 |
| 36 #include "vk/GrVkInterface.h" | 36 #include "vk/GrVkInterface.h" |
| 37 #include "vk/GrVkTypes.h" | 37 #include "vk/GrVkTypes.h" |
| 38 | 38 |
| 39 #if USE_SKSL |
| 40 #include "SkSLCompiler.h" |
| 41 #endif |
| 42 |
| 39 #define VK_CALL(X) GR_VK_CALL(this->vkInterface(), X) | 43 #define VK_CALL(X) GR_VK_CALL(this->vkInterface(), X) |
| 40 #define VK_CALL_RET(RET, X) GR_VK_CALL_RET(this->vkInterface(), RET, X) | 44 #define VK_CALL_RET(RET, X) GR_VK_CALL_RET(this->vkInterface(), RET, X) |
| 41 #define VK_CALL_ERRCHECK(X) GR_VK_CALL_ERRCHECK(this->vkInterface(), X) | 45 #define VK_CALL_ERRCHECK(X) GR_VK_CALL_ERRCHECK(this->vkInterface(), X) |
| 42 | 46 |
| 43 #ifdef ENABLE_VK_LAYERS | 47 #ifdef ENABLE_VK_LAYERS |
| 44 VKAPI_ATTR VkBool32 VKAPI_CALL DebugReportCallback( | 48 VKAPI_ATTR VkBool32 VKAPI_CALL DebugReportCallback( |
| 45 VkDebugReportFlagsEXT flags, | 49 VkDebugReportFlagsEXT flags, |
| 46 VkDebugReportObjectTypeEXT objectType, | 50 VkDebugReportObjectTypeEXT objectType, |
| 47 uint64_t object, | 51 uint64_t object, |
| 48 size_t location, | 52 size_t location, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; | 107 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; |
| 104 callbackCreateInfo.pfnCallback = &DebugReportCallback; | 108 callbackCreateInfo.pfnCallback = &DebugReportCallback; |
| 105 callbackCreateInfo.pUserData = nullptr; | 109 callbackCreateInfo.pUserData = nullptr; |
| 106 | 110 |
| 107 // Register the callback | 111 // Register the callback |
| 108 GR_VK_CALL_ERRCHECK(this->vkInterface(), CreateDebugReportCallbackEXT( | 112 GR_VK_CALL_ERRCHECK(this->vkInterface(), CreateDebugReportCallbackEXT( |
| 109 backendCtx->fInstance, &callbackCreateInfo, nullptr,
&fCallback)); | 113 backendCtx->fInstance, &callbackCreateInfo, nullptr,
&fCallback)); |
| 110 } | 114 } |
| 111 #endif | 115 #endif |
| 112 | 116 |
| 117 #if USE_SKSL |
| 118 fCompiler = new SkSL::Compiler(); |
| 119 #else |
| 113 fCompiler = shaderc_compiler_initialize(); | 120 fCompiler = shaderc_compiler_initialize(); |
| 121 #endif |
| 114 | 122 |
| 115 fVkCaps.reset(new GrVkCaps(options, this->vkInterface(), backendCtx->fPhysic
alDevice, | 123 fVkCaps.reset(new GrVkCaps(options, this->vkInterface(), backendCtx->fPhysic
alDevice, |
| 116 backendCtx->fFeatures, backendCtx->fExtensions)); | 124 backendCtx->fFeatures, backendCtx->fExtensions)); |
| 117 fCaps.reset(SkRef(fVkCaps.get())); | 125 fCaps.reset(SkRef(fVkCaps.get())); |
| 118 | 126 |
| 119 VK_CALL(GetPhysicalDeviceMemoryProperties(backendCtx->fPhysicalDevice, &fPhy
sDevMemProps)); | 127 VK_CALL(GetPhysicalDeviceMemoryProperties(backendCtx->fPhysicalDevice, &fPhy
sDevMemProps)); |
| 120 | 128 |
| 121 const VkCommandPoolCreateInfo cmdPoolInfo = { | 129 const VkCommandPoolCreateInfo cmdPoolInfo = { |
| 122 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, // sType | 130 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, // sType |
| 123 nullptr, // pNext | 131 nullptr, // pNext |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 #endif | 177 #endif |
| 170 | 178 |
| 171 // VK_ERROR_DEVICE_LOST is acceptable when tearing down (see 4.2.4 in spec) | 179 // VK_ERROR_DEVICE_LOST is acceptable when tearing down (see 4.2.4 in spec) |
| 172 SkASSERT(VK_SUCCESS == res || VK_ERROR_DEVICE_LOST == res); | 180 SkASSERT(VK_SUCCESS == res || VK_ERROR_DEVICE_LOST == res); |
| 173 | 181 |
| 174 // must call this just before we destroy the VkDevice | 182 // must call this just before we destroy the VkDevice |
| 175 fResourceProvider.destroyResources(); | 183 fResourceProvider.destroyResources(); |
| 176 | 184 |
| 177 VK_CALL(DestroyCommandPool(fDevice, fCmdPool, nullptr)); | 185 VK_CALL(DestroyCommandPool(fDevice, fCmdPool, nullptr)); |
| 178 | 186 |
| 187 #if USE_SKSL |
| 188 delete fCompiler; |
| 189 #else |
| 179 shaderc_compiler_release(fCompiler); | 190 shaderc_compiler_release(fCompiler); |
| 191 #endif |
| 180 | 192 |
| 181 #ifdef ENABLE_VK_LAYERS | 193 #ifdef ENABLE_VK_LAYERS |
| 182 if (fCallback) { | 194 if (fCallback) { |
| 183 VK_CALL(DestroyDebugReportCallbackEXT(fBackendContext->fInstance, fCallb
ack, nullptr)); | 195 VK_CALL(DestroyDebugReportCallbackEXT(fBackendContext->fInstance, fCallb
ack, nullptr)); |
| 184 fCallback = VK_NULL_HANDLE; | 196 fCallback = VK_NULL_HANDLE; |
| 185 } | 197 } |
| 186 #endif | 198 #endif |
| 187 } | 199 } |
| 188 | 200 |
| 189 /////////////////////////////////////////////////////////////////////////////// | 201 /////////////////////////////////////////////////////////////////////////////// |
| (...skipping 1298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1488 GrVkRenderTarget* target, | 1500 GrVkRenderTarget* target, |
| 1489 const SkIRect& bounds) { | 1501 const SkIRect& bounds) { |
| 1490 // Currently it is fine for us to always pass in 1 for the clear count even
if no attachment | 1502 // Currently it is fine for us to always pass in 1 for the clear count even
if no attachment |
| 1491 // uses it. In the current state, we also only use the LOAD_OP_CLEAR for the
color attachment | 1503 // uses it. In the current state, we also only use the LOAD_OP_CLEAR for the
color attachment |
| 1492 // which is always at the first attachment. | 1504 // which is always at the first attachment. |
| 1493 fCurrentCmdBuffer->beginRenderPass(this, renderPass, 1, colorClear, *target,
bounds, true); | 1505 fCurrentCmdBuffer->beginRenderPass(this, renderPass, 1, colorClear, *target,
bounds, true); |
| 1494 fCurrentCmdBuffer->executeCommands(this, buffer); | 1506 fCurrentCmdBuffer->executeCommands(this, buffer); |
| 1495 fCurrentCmdBuffer->endRenderPass(this); | 1507 fCurrentCmdBuffer->endRenderPass(this); |
| 1496 } | 1508 } |
| 1497 | 1509 |
| OLD | NEW |