dnn: fix vulkan backend builds with Clang
authorAlexander Alekhin <alexander.alekhin@intel.com>
Wed, 12 Dec 2018 12:25:39 +0000 (15:25 +0300)
committerAlexander Alekhin <alexander.alekhin@intel.com>
Wed, 12 Dec 2018 12:25:39 +0000 (15:25 +0300)
modules/dnn/src/vkcom/include/op_pool.hpp
modules/dnn/src/vkcom/src/context.cpp
modules/dnn/src/vkcom/src/context.hpp
modules/dnn/src/vkcom/src/op_base.cpp

index fa4acc1..50f8fc0 100644 (file)
@@ -59,7 +59,7 @@ private:
     int avg_pool_padded_area_;
     int need_mask_;
     PaddingMode padding_mode_;
-    int activation_;
+    //int activation_;
     PoolShaderConfig config_;
 };
 
index 6f203cf..01f8eda 100644 (file)
@@ -281,10 +281,14 @@ Context::~Context()
     if (enableValidationLayers) {
         auto func = (PFN_vkDestroyDebugReportCallbackEXT)
             vkGetInstanceProcAddr(kInstance, "vkDestroyDebugReportCallbackEXT");
-        if (func == nullptr) {
-            throw std::runtime_error("Could not load vkDestroyDebugReportCallbackEXT");
+        if (func == nullptr)
+        {
+            CV_LOG_FATAL(NULL, "Could not load vkDestroyDebugReportCallbackEXT");
+        }
+        else
+        {
+            func(kInstance, kDebugReportCallback, NULL);
         }
-        func(kInstance, kDebugReportCallback, NULL);
     }
     kShaders.clear();
     vkDestroyInstance(kInstance, NULL);
index a9d9d4d..fbf2d8e 100644 (file)
@@ -12,8 +12,9 @@ namespace cv { namespace dnn { namespace vkcom {
 
 #ifdef HAVE_VULKAN
 
-struct Context
+class Context
 {
+public:
     Context();
     ~Context();
 };
index f72e7bb..4a3a6b7 100644 (file)
@@ -45,7 +45,9 @@ void OpBase::initVulkanThing(int buffer_num)
 
 void OpBase::createDescriptorSetLayout(int buffer_num)
 {
-    VkDescriptorSetLayoutBinding bindings[buffer_num] = {};
+    if (buffer_num <= 0)
+        return;
+    std::vector<VkDescriptorSetLayoutBinding> bindings(buffer_num);
     for (int i = 0; i < buffer_num; i++)
     {
         bindings[i].binding = i;
@@ -56,7 +58,7 @@ void OpBase::createDescriptorSetLayout(int buffer_num)
     VkDescriptorSetLayoutCreateInfo info = {};
     info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
     info.bindingCount = buffer_num;
-    info.pBindings = bindings;
+    info.pBindings = &bindings[0];
     VK_CHECK_RESULT(vkCreateDescriptorSetLayout(device_, &info, NULL, &descriptor_set_layout_));
 }