Disable validation layers on release
This commit is contained in:
parent
02735e5014
commit
2ea18f35b6
@ -73,6 +73,8 @@ fn u8 vk_layer_is_supported(String layer_name)
|
|||||||
return supported;
|
return supported;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if BB_DEBUG
|
||||||
|
|
||||||
fn VkBool32 VKAPI_CALL debug_callback(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity, VkDebugUtilsMessageTypeFlagsEXT message_type, const VkDebugUtilsMessengerCallbackDataEXT* callback_data, void* user_data)
|
fn VkBool32 VKAPI_CALL debug_callback(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity, VkDebugUtilsMessageTypeFlagsEXT message_type, const VkDebugUtilsMessengerCallbackDataEXT* callback_data, void* user_data)
|
||||||
{
|
{
|
||||||
unused(message_severity);
|
unused(message_severity);
|
||||||
@ -86,6 +88,8 @@ fn VkBool32 VKAPI_CALL debug_callback(VkDebugUtilsMessageSeverityFlagBitsEXT mes
|
|||||||
return VK_FALSE;
|
return VK_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
fn VkDeviceMemory vk_allocate_memory(VkDevice device, const VkAllocationCallbacks* allocation_callbacks, VkPhysicalDeviceMemoryProperties memory_properties, VkMemoryRequirements memory_requirements, VkMemoryPropertyFlags flags, u8 use_device_address_bit)
|
fn VkDeviceMemory vk_allocate_memory(VkDevice device, const VkAllocationCallbacks* allocation_callbacks, VkPhysicalDeviceMemoryProperties memory_properties, VkMemoryRequirements memory_requirements, VkMemoryPropertyFlags flags, u8 use_device_address_bit)
|
||||||
{
|
{
|
||||||
u32 memory_type_index;
|
u32 memory_type_index;
|
||||||
@ -385,7 +389,14 @@ Renderer* renderer_initialize()
|
|||||||
Renderer* result = &renderer_memory;
|
Renderer* result = &renderer_memory;
|
||||||
vkok(volkInitialize());
|
vkok(volkInitialize());
|
||||||
|
|
||||||
|
auto api_version = volkGetInstanceVersion();
|
||||||
|
if (api_version < VK_API_VERSION_1_3)
|
||||||
{
|
{
|
||||||
|
failed_execution();
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
#if BB_DEBUG
|
||||||
auto debug_layer = strlit("VK_LAYER_KHRONOS_validation");
|
auto debug_layer = strlit("VK_LAYER_KHRONOS_validation");
|
||||||
if (!vk_layer_is_supported(debug_layer))
|
if (!vk_layer_is_supported(debug_layer))
|
||||||
{
|
{
|
||||||
@ -395,15 +406,16 @@ Renderer* renderer_initialize()
|
|||||||
{
|
{
|
||||||
string_to_c(debug_layer),
|
string_to_c(debug_layer),
|
||||||
};
|
};
|
||||||
|
auto layer_count = array_length(layers);
|
||||||
auto api_version = volkGetInstanceVersion();
|
#else
|
||||||
if (api_version < VK_API_VERSION_1_3)
|
const char** layers = 0;
|
||||||
{
|
u32 layer_count = 0;
|
||||||
failed_execution();
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
const char* extensions[] = {
|
const char* extensions[] = {
|
||||||
|
#if BB_DEBUG
|
||||||
VK_EXT_DEBUG_UTILS_EXTENSION_NAME,
|
VK_EXT_DEBUG_UTILS_EXTENSION_NAME,
|
||||||
|
#endif
|
||||||
VK_KHR_SURFACE_EXTENSION_NAME,
|
VK_KHR_SURFACE_EXTENSION_NAME,
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
VK_KHR_WIN32_SURFACE_EXTENSION_NAME,
|
VK_KHR_WIN32_SURFACE_EXTENSION_NAME,
|
||||||
@ -420,6 +432,7 @@ Renderer* renderer_initialize()
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#if BB_DEBUG
|
||||||
VkValidationFeatureEnableEXT enabled_validation_features[] =
|
VkValidationFeatureEnableEXT enabled_validation_features[] =
|
||||||
{
|
{
|
||||||
VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT,
|
VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT,
|
||||||
@ -444,26 +457,34 @@ Renderer* renderer_initialize()
|
|||||||
.pNext = &msg_ci,
|
.pNext = &msg_ci,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
void* pNext =
|
||||||
|
#if BB_DEBUG
|
||||||
|
enable_shader_debug_printf ? (const void*)&validation_features : (const void*)&msg_ci,
|
||||||
|
#else
|
||||||
|
0;
|
||||||
|
#endif
|
||||||
VkApplicationInfo app_info = {
|
VkApplicationInfo app_info = {
|
||||||
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
|
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
|
||||||
.apiVersion = api_version,
|
.apiVersion = api_version,
|
||||||
};
|
};
|
||||||
|
|
||||||
VkInstanceCreateInfo ci = {
|
VkInstanceCreateInfo ci = {
|
||||||
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
|
||||||
.pApplicationInfo = &app_info,
|
.pApplicationInfo = &app_info,
|
||||||
.ppEnabledLayerNames = layers,
|
.ppEnabledLayerNames = layers,
|
||||||
.enabledLayerCount = array_length(layers),
|
.enabledLayerCount = layer_count,
|
||||||
.ppEnabledExtensionNames = extensions,
|
.ppEnabledExtensionNames = extensions,
|
||||||
.enabledExtensionCount = array_length(extensions),
|
.enabledExtensionCount = array_length(extensions),
|
||||||
.pNext = enable_shader_debug_printf ? (const void*)&validation_features : (const void*)&msg_ci,
|
.pNext = pNext,
|
||||||
};
|
};
|
||||||
|
|
||||||
vkok(vkCreateInstance(&ci, result->allocator, &result->instance));
|
vkok(vkCreateInstance(&ci, result->allocator, &result->instance));
|
||||||
volkLoadInstance(result->instance);
|
volkLoadInstance(result->instance);
|
||||||
|
|
||||||
|
#if BB_DEBUG
|
||||||
VkDebugUtilsMessengerEXT messenger;
|
VkDebugUtilsMessengerEXT messenger;
|
||||||
vkok(vkCreateDebugUtilsMessengerEXT(result->instance, &msg_ci, result->allocator, &messenger));
|
vkok(vkCreateDebugUtilsMessengerEXT(result->instance, &msg_ci, result->allocator, &messenger));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user