dnn: fix vulkan backend builds with Clang

pull/13425/head
Alexander Alekhin 6 years ago
parent 82227b5ace
commit d8583b2c7a
  1. 2
      modules/dnn/src/vkcom/include/op_pool.hpp
  2. 10
      modules/dnn/src/vkcom/src/context.cpp
  3. 3
      modules/dnn/src/vkcom/src/context.hpp
  4. 6
      modules/dnn/src/vkcom/src/op_base.cpp

@ -59,7 +59,7 @@ private:
int avg_pool_padded_area_;
int need_mask_;
PaddingMode padding_mode_;
int activation_;
//int activation_;
PoolShaderConfig config_;
};

@ -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);

@ -12,8 +12,9 @@ namespace cv { namespace dnn { namespace vkcom {
#ifdef HAVE_VULKAN
struct Context
class Context
{
public:
Context();
~Context();
};

@ -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_));
}

Loading…
Cancel
Save