diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a1cadcae7..eb80551ec 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,6 +9,7 @@ jobs: pull-requests: write env: ALSOFT_CONF: love2d-${{ github.sha }}/testing/resources/alsoft.conf + VK_LAYER_SETTINGS_PATH: love2d-${{ github.sha }}/testing/resources/vk_layer_settings.txt DISPLAY: :99 steps: - name: Update APT diff --git a/testing/resources/vk_layer_settings.txt b/testing/resources/vk_layer_settings.txt new file mode 100755 index 000000000..760c370ca --- /dev/null +++ b/testing/resources/vk_layer_settings.txt @@ -0,0 +1,324 @@ + +# VK_LAYER_KHRONOS_validation + +# Fine Grained Locking +# ===================== +# .fine_grained_locking +# Enable fine grained locking for Core Validation, which should improve +# performance in multithreaded applications. This setting allows the +# optimization to be disabled for debugging. +khronos_validation.fine_grained_locking = true + +# Core +# ===================== +# .validate_core +# The main, heavy-duty validation checks. This may be valuable early in the +# development cycle to reduce validation output while correcting +# parameter/object usage errors. +khronos_validation.validate_core = true + +# Image Layout +# ===================== +# .check_image_layout +# Check that the layout of each image subresource is correct whenever it is used +# by a command buffer. These checks are very CPU intensive for some +# applications. +khronos_validation.check_image_layout = true + +# Command Buffer State +# ===================== +# .check_command_buffer +# Check that all Vulkan objects used by a command buffer have not been +# destroyed. These checks can be CPU intensive for some applications. +khronos_validation.check_command_buffer = true + +# Object in Use +# ===================== +# .check_object_in_use +# Check that Vulkan objects are not in use by a command buffer when they are +# destroyed. +khronos_validation.check_object_in_use = true + +# Query +# ===================== +# .check_query +# Checks for commands that use VkQueryPool objects. +khronos_validation.check_query = true + +# Shader +# ===================== +# .check_shaders +# Shader checks. These checks can be CPU intensive during application start up, +# especially if Shader Validation Caching is also disabled. +khronos_validation.check_shaders = true + +# Caching +# ===================== +# .check_shaders_caching +# Enable caching of shader validation results. +khronos_validation.check_shaders_caching = true + +# Handle Wrapping +# ===================== +# .unique_handles +# Handle wrapping checks. Disable this feature if you are exerience crashes when +# creating new extensions or developing new Vulkan objects/structures. +khronos_validation.unique_handles = true + +# Object Lifetime +# ===================== +# .object_lifetime +# Object tracking checks. This may not always be necessary late in a development +# cycle. +khronos_validation.object_lifetime = true + +# Stateless Parameter +# ===================== +# .stateless_param +# Stateless parameter checks. This may not always be necessary late in a +# development cycle. +khronos_validation.stateless_param = true + +# Thread Safety +# ===================== +# .thread_safety +# Thread checks. In order to not degrade performance, it might be best to run +# your program with thread-checking disabled most of the time, enabling it +# occasionally for a quick sanity check or when debugging difficult application +# behaviors. +khronos_validation.thread_safety = true + +# Synchronization +# ===================== +# .validate_sync +# Enable synchronization validation during command buffers recording. This +# feature reports resource access conflicts due to missing or incorrect +# synchronization operations between actions (Draw, Copy, Dispatch, Blit) +# reading or writing the same regions of memory. +khronos_validation.validate_sync = true + +# QueueSubmit Synchronization Validation +# ===================== +# .sync_queue_submit +# Enable synchronization validation between submitted command buffers when +# Synchronization Validation is enabled. This option will increase the +# synchronization performance cost. +khronos_validation.sync_queue_submit = true + +# GPU Base +# ===================== +# .validate_gpu_based +# Setting an option here will enable specialized areas of validation +khronos_validation.validate_gpu_based = GPU_BASED_NONE + +# Redirect Printf messages to stdout +# ===================== +# .printf_to_stdout +# Enable redirection of Debug Printf messages from the debug callback to stdout +#khronos_validation.printf_to_stdout = true + +# Printf verbose +# ===================== +# .printf_verbose +# Set the verbosity of debug printf messages +#khronos_validation.printf_verbose = false + +# Printf buffer size +# ===================== +# .printf_buffer_size +# Set the size in bytes of the buffer used by debug printf +#khronos_validation.printf_buffer_size = 1024 + +# Shader instrumentation +# ===================== +# .gpuav_shader_instrumentation +# Instrument shaders to validate descriptors, descriptor indexing, buffer device +# addresses and ray queries. Warning: will considerably slow down shader +# executions. +#khronos_validation.gpuav_shader_instrumentation = true + +# Descriptors indexing +# ===================== +# .gpuav_descriptor_checks +# Enable descriptors and buffer out of bounds validation when using descriptor +# indexing +khronos_validation.gpuav_descriptor_checks = true + +# Generate warning on out of bounds accesses even if buffer robustness is enabled +# ===================== +# .gpuav_warn_on_robust_oob +# Warn on out of bounds accesses even if robustness is enabled +khronos_validation.gpuav_warn_on_robust_oob = true + +# Out of bounds buffer device addresses +# ===================== +# .gpuav_buffer_address_oob +# Check for +khronos_validation.gpuav_buffer_address_oob = true + +# Maximum number of buffer device addresses in use at one time +# ===================== +# .gpuav_max_buffer_device_addresses + +khronos_validation.gpuav_max_buffer_device_addresses = 10000 + +# RayQuery SPIR-V Instructions +# ===================== +# .gpuav_validate_ray_query +# Enable shader instrumentation on OpRayQueryInitializeKHR +khronos_validation.gpuav_validate_ray_query = true + +# Cache instrumented shaders rather than instrumenting them on every run +# ===================== +# .gpuav_cache_instrumented_shaders +# Enable instrumented shader caching +khronos_validation.gpuav_cache_instrumented_shaders = true + +# Enable instrumenting shaders selectively +# ===================== +# .gpuav_select_instrumented_shaders +# Select which shaders to instrument passing a VkValidationFeaturesEXT struct +# with GPU-AV enabled in the VkShaderModuleCreateInfo pNext +khronos_validation.gpuav_select_instrumented_shaders = false + +# Buffer content validation +# ===================== +# .gpuav_buffers_validation +# Validate buffers containing parameters used in indirect Vulkan commands, or +# used in copy commands +#khronos_validation.gpuav_buffers_validation = true + +# Indirect draws parameters +# ===================== +# .gpuav_indirect_draws_buffers +# Validate buffers containing draw parameters used in indirect draw commands +khronos_validation.gpuav_indirect_draws_buffers = true + +# Indirect dispatches parameters +# ===================== +# .indirect_dispatches +# Validate buffers containing dispatch parameters used in indirect dispatch +# commands +khronos_validation.indirect_dispatches = true + +# Indirect trace rays parameters +# ===================== +# .indirect_trace_rays +# Validate buffers containing ray tracing parameters used in indirect ray +# tracing commands +khronos_validation.indirect_trace_rays = true + +# Buffer copies +# ===================== +# .gpuav_buffer_copies +# Validate copies involving a VkBuffer. Right now only validates copy buffer to +# image. +khronos_validation.gpuav_buffer_copies = true + +# Reserve Descriptor Set Binding Slot +# ===================== +# .gpuav_reserve_binding_slot +# Specifies that the validation layers reserve a descriptor set binding slot for +# their own use. The layer reports a value for +# VkPhysicalDeviceLimits::maxBoundDescriptorSets that is one less than the value +# reported by the device. If the device supports the binding of only one +# descriptor set, the validation layer does not perform GPU-assisted validation. +#khronos_validation.gpuav_reserve_binding_slot = true + +# Linear Memory Allocation Mode +# ===================== +# .gpuav_vma_linear_output +# Use VMA linear memory allocations for GPU-AV output buffers instead of finding +# best place for new allocations among free regions to optimize memory usage. +# Enabling this setting reduces performance cost but disabling this method +# minimizes memory usage. +#khronos_validation.gpuav_vma_linear_output = true + +# Validate instrumented shaders +# ===================== +# .gpuav_debug_validate_instrumented_shaders +# Run spirv-val after doing shader instrumentation +#khronos_validation.gpuav_debug_validate_instrumented_shaders = false + +# Dump instrumented shaders +# ===================== +# .gpuav_debug_dump_instrumented_shaders +# Will dump the instrumented shaders (before and after) to working directory +#khronos_validation.gpuav_debug_dump_instrumented_shaders = false + +# Best Practices +# ===================== +# .validate_best_practices +# Outputs warnings related to common misuse of the API, but which are not +# explicitly prohibited by the specification. +khronos_validation.validate_best_practices = true + +# ARM-specific best practices +# ===================== +# .validate_best_practices_arm +# Outputs warnings for spec-conforming but non-ideal code on ARM GPUs. +khronos_validation.validate_best_practices_arm = false + +# AMD-specific best practices +# ===================== +# .validate_best_practices_amd +# Outputs warnings for spec-conforming but non-ideal code on AMD GPUs. +khronos_validation.validate_best_practices_amd = false + +# IMG-specific best practices +# ===================== +# .validate_best_practices_img +# Outputs warnings for spec-conforming but non-ideal code on Imagination GPUs. +khronos_validation.validate_best_practices_img = false + +# NVIDIA-specific best practices +# ===================== +# .validate_best_practices_nvidia +# Outputs warnings for spec-conforming but non-ideal code on NVIDIA GPUs. +khronos_validation.validate_best_practices_nvidia = false + +# Debug Action +# ===================== +# .debug_action +# Specifies what action is to be taken when a layer reports information +khronos_validation.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG + +# Log Filename +# ===================== +# .log_filename +# Specifies the output filename +khronos_validation.log_filename = stdout + +# Message Severity +# ===================== +# .report_flags +# Comma-delineated list of options specifying the types of messages to be +# reported +khronos_validation.report_flags = error + +# Limit Duplicated Messages +# ===================== +# .enable_message_limit +# Enable limiting of duplicate messages. +khronos_validation.enable_message_limit = false + +# Max Duplicated Messages +# ===================== +# .duplicate_message_limit +# Maximum number of times any single validation message should be reported. +#khronos_validation.duplicate_message_limit = 10 + +# Mute Message VUIDs +# ===================== +# .message_id_filter +# List of VUIDs and VUID identifers which are to be IGNORED by the validation +# layer +khronos_validation.message_id_filter = + +# Display Application Name +# ===================== +# .message_format_display_application_name +# Useful when running multiple instances to know which instance the message is +# from. +khronos_validation.message_format_display_application_name = false +