c/comp: Remove internal Vulkan validation init.

Instead of maintaining this chunk of code and build options, the Vulkan
loader can be used to load up validation. This has the advantage that no
layer name needs to be hard coded inside Monado, which was subject of
change recently.

Instead of using our own environment variable we can easily set the one
from the loader, e.g. `VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation`.
This commit is contained in:
Lubosz Sarnecki 2020-06-03 09:50:01 +02:00 committed by Jakob Bornecrantz
parent 9f8761bd50
commit 435d5a9b9e
9 changed files with 0 additions and 131 deletions

View file

@ -10,7 +10,6 @@ if(POLICY CMP0072)
endif() endif()
option(XRT_OPENXR_INSTALL_ABSOLUTE_RUNTIME_PATH "Use the absolute path to the runtime in the installed manifest, rather than a bare filename." ON) option(XRT_OPENXR_INSTALL_ABSOLUTE_RUNTIME_PATH "Use the absolute path to the runtime in the installed manifest, rather than a bare filename." ON)
option(XRT_VULKAN_ENABLE_VALIDATION "Enable Vulkan validation for Compositor" ON)
option(XRT_OPENXR_INSTALL_ACTIVE_RUNTIME "Make Monado the default OpenXR runtime on install" ON) option(XRT_OPENXR_INSTALL_ACTIVE_RUNTIME "Make Monado the default OpenXR runtime on install" ON)
### ###

View file

@ -32,11 +32,6 @@ option('tracking',
value: 'auto', value: 'auto',
description: 'Enable tracking support') description: 'Enable tracking support')
option('vulkan-validation',
type: 'boolean',
value: true,
description: 'Enable Vulkan validation for compositor')
option('install-active-runtime', option('install-active-runtime',
type: 'boolean', type: 'boolean',
value: true, value: true,

View file

@ -568,80 +568,6 @@ vk_init_cmd_pool(struct vk_bundle *vk)
return ret; return ret;
} }
/*
*
* Debug code.
*
*/
#define ENUM_TO_STR(r) \
case r: return #r
static const char *
vk_debug_report_string(VkDebugReportFlagsEXT code)
{
switch (code) {
ENUM_TO_STR(VK_DEBUG_REPORT_INFORMATION_BIT_EXT);
ENUM_TO_STR(VK_DEBUG_REPORT_WARNING_BIT_EXT);
ENUM_TO_STR(VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT);
ENUM_TO_STR(VK_DEBUG_REPORT_ERROR_BIT_EXT);
ENUM_TO_STR(VK_DEBUG_REPORT_DEBUG_BIT_EXT);
ENUM_TO_STR(VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT);
}
return "UNKNOWN REPORT";
}
static VkBool32 VKAPI_PTR
_validation_cb(VkDebugReportFlagsEXT flags,
VkDebugReportObjectTypeEXT object_type,
uint64_t object,
size_t location,
int32_t message_code,
const char *layer_prefix,
const char *message,
void *user_data)
{
fprintf(stderr, "%s %s %zu:%d: %s\n", vk_debug_report_string(flags),
layer_prefix, location, message_code, message);
return VK_FALSE;
}
DEBUG_GET_ONCE_BOOL_OPTION(vulkan_spew, "XRT_COMPOSITOR_VULKAN_SPEW", false)
void
vk_init_validation_callback(struct vk_bundle *vk)
{
VkDebugReportFlagsEXT flags = 0;
flags |= VK_DEBUG_REPORT_ERROR_BIT_EXT;
flags |= VK_DEBUG_REPORT_WARNING_BIT_EXT;
if (debug_get_bool_option_vulkan_spew()) {
flags |= VK_DEBUG_REPORT_INFORMATION_BIT_EXT;
flags |= VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
flags |= VK_DEBUG_REPORT_DEBUG_BIT_EXT;
}
VkDebugReportCallbackCreateInfoEXT info = {
.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT,
.flags = flags,
.pfnCallback = _validation_cb,
};
vk->vkCreateDebugReportCallbackEXT(vk->instance, &info, NULL,
&vk->debug_report_cb);
}
void
vk_destroy_validation_callback(struct vk_bundle *vk)
{
if (vk->debug_report_cb != VK_NULL_HANDLE) {
vk->vkDestroyDebugReportCallbackEXT(vk->instance,
vk->debug_report_cb, NULL);
vk->debug_report_cb = VK_NULL_HANDLE;
}
}
/* /*
* *
* Function getting code. * Function getting code.

View file

@ -247,18 +247,6 @@ vk_has_error(VkResult res, const char *fun, const char *file, int line);
if (vk_has_error(res, fun, __FILE__, __LINE__)) \ if (vk_has_error(res, fun, __FILE__, __LINE__)) \
return ret return ret
/*!
* @ingroup aux_vk
*/
void
vk_init_validation_callback(struct vk_bundle *vk);
/*!
* @ingroup aux_vk
*/
void
vk_destroy_validation_callback(struct vk_bundle *vk);
/*! /*!
* @ingroup aux_vk * @ingroup aux_vk
*/ */

View file

@ -38,11 +38,6 @@ set(MAIN_SOURCE_FILES
main/comp_layer_renderer.c main/comp_layer_renderer.c
) )
if (XRT_VULKAN_ENABLE_VALIDATION)
add_definitions(-DXRT_ENABLE_VK_VALIDATION)
endif()
### ###
# Client library # Client library
# #

View file

@ -95,8 +95,6 @@ compositor_destroy(struct xrt_compositor *xc)
vk->device = VK_NULL_HANDLE; vk->device = VK_NULL_HANDLE;
} }
vk_destroy_validation_callback(vk);
if (vk->instance != VK_NULL_HANDLE) { if (vk->instance != VK_NULL_HANDLE) {
vk->vkDestroyInstance(vk->instance, NULL); vk->vkDestroyInstance(vk->instance, NULL);
vk->instance = VK_NULL_HANDLE; vk->instance = VK_NULL_HANDLE;
@ -446,14 +444,7 @@ find_get_instance_proc_addr(struct comp_compositor *c)
return vk_get_loader_functions(&c->vk, vkGetInstanceProcAddr); return vk_get_loader_functions(&c->vk, vkGetInstanceProcAddr);
} }
#ifdef XRT_ENABLE_VK_VALIDATION
#define COMPOSITOR_DEBUG_VULKAN_EXTENSIONS VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
#else
#define COMPOSITOR_DEBUG_VULKAN_EXTENSIONS
#endif
#define COMPOSITOR_COMMON_VULKAN_EXTENSIONS \ #define COMPOSITOR_COMMON_VULKAN_EXTENSIONS \
COMPOSITOR_DEBUG_VULKAN_EXTENSIONS \
VK_KHR_SURFACE_EXTENSION_NAME, \ VK_KHR_SURFACE_EXTENSION_NAME, \
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, \ VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, \
VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, \ VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, \
@ -550,17 +541,6 @@ create_instance(struct comp_compositor *c)
.ppEnabledExtensionNames = instance_extensions, .ppEnabledExtensionNames = instance_extensions,
}; };
#ifdef XRT_ENABLE_VK_VALIDATION
const char *instance_layers[] = {
"VK_LAYER_LUNARG_standard_validation",
};
if (c->settings.validate_vulkan) {
instance_info.enabledLayerCount = ARRAY_SIZE(instance_layers);
instance_info.ppEnabledLayerNames = instance_layers;
}
#endif
ret = c->vk.vkCreateInstance(&instance_info, NULL, &c->vk.instance); ret = c->vk.vkCreateInstance(&instance_info, NULL, &c->vk.instance);
if (ret != VK_SUCCESS) { if (ret != VK_SUCCESS) {
COMP_ERROR(c, "vkCreateInstance: %s\n", vk_result_string(ret)); COMP_ERROR(c, "vkCreateInstance: %s\n", vk_result_string(ret));
@ -575,11 +555,6 @@ create_instance(struct comp_compositor *c)
return ret; return ret;
} }
#ifdef XRT_ENABLE_VK_VALIDATION
if (c->settings.validate_vulkan)
vk_init_validation_callback(&c->vk);
#endif
return ret; return ret;
} }

View file

@ -18,7 +18,6 @@ DEBUG_GET_ONCE_BOOL_OPTION(force_randr, "XRT_COMPOSITOR_FORCE_RANDR", false)
DEBUG_GET_ONCE_BOOL_OPTION(force_nvidia, "XRT_COMPOSITOR_FORCE_NVIDIA", false) DEBUG_GET_ONCE_BOOL_OPTION(force_nvidia, "XRT_COMPOSITOR_FORCE_NVIDIA", false)
DEBUG_GET_ONCE_BOOL_OPTION(force_xcb, "XRT_COMPOSITOR_FORCE_XCB", false) DEBUG_GET_ONCE_BOOL_OPTION(force_xcb, "XRT_COMPOSITOR_FORCE_XCB", false)
DEBUG_GET_ONCE_BOOL_OPTION(force_wayland, "XRT_COMPOSITOR_FORCE_WAYLAND", false) DEBUG_GET_ONCE_BOOL_OPTION(force_wayland, "XRT_COMPOSITOR_FORCE_WAYLAND", false)
DEBUG_GET_ONCE_BOOL_OPTION(validate_vulkan, "XRT_COMPOSITOR_VULKAN_VALIDATION", false)
DEBUG_GET_ONCE_BOOL_OPTION(wireframe, "XRT_COMPOSITOR_WIREFRAME", false) DEBUG_GET_ONCE_BOOL_OPTION(wireframe, "XRT_COMPOSITOR_WIREFRAME", false)
DEBUG_GET_ONCE_NUM_OPTION(force_gpu_index, "XRT_COMPOSITOR_FORCE_GPU_INDEX", -1) DEBUG_GET_ONCE_NUM_OPTION(force_gpu_index, "XRT_COMPOSITOR_FORCE_GPU_INDEX", -1)
DEBUG_GET_ONCE_NUM_OPTION(desired_mode, "XRT_COMPOSITOR_DESIRED_MODE", -1) DEBUG_GET_ONCE_NUM_OPTION(desired_mode, "XRT_COMPOSITOR_DESIRED_MODE", -1)
@ -47,7 +46,6 @@ comp_settings_init(struct comp_settings *s, struct xrt_device *xdev)
s->print_spew = debug_get_bool_option_print_spew(); s->print_spew = debug_get_bool_option_print_spew();
s->print_debug = debug_get_bool_option_print_debug(); s->print_debug = debug_get_bool_option_print_debug();
s->print_modes = debug_get_bool_option_print_modes(); s->print_modes = debug_get_bool_option_print_modes();
s->validate_vulkan = debug_get_bool_option_validate_vulkan();
s->gpu_index = debug_get_num_option_force_gpu_index(); s->gpu_index = debug_get_num_option_force_gpu_index();
s->debug.wireframe = debug_get_bool_option_wireframe(); s->debug.wireframe = debug_get_bool_option_wireframe();
s->desired_mode = debug_get_num_option_desired_mode(); s->desired_mode = debug_get_num_option_desired_mode();

View file

@ -94,9 +94,6 @@ struct comp_settings
//! Nominal frame interval //! Nominal frame interval
uint64_t nominal_frame_interval_ns; uint64_t nominal_frame_interval_ns;
//! Enable vulkan validation for compositor
bool validate_vulkan;
//! Run the compositor on this Vulkan physical device //! Run the compositor on this Vulkan physical device
int gpu_index; int gpu_index;

View file

@ -111,10 +111,6 @@ if build_wayland
compositor_deps += [wayland, wl_protos] compositor_deps += [wayland, wl_protos]
endif endif
if get_option('vulkan-validation')
compile_args += ['-DXRT_ENABLE_VK_VALIDATION']
endif
lib_comp = static_library( lib_comp = static_library(
'comp', 'comp',
compositor_srcs, compositor_srcs,