Browse Source

CI: vulkan tests have synchronization validation enabled

Sasha Szpakowski 1 year ago
parent
commit
d387fb94c9
2 changed files with 325 additions and 0 deletions
  1. 1 0
      .github/workflows/main.yml
  2. 324 0
      testing/resources/vk_layer_settings.txt

+ 1 - 0
.github/workflows/main.yml

@@ -9,6 +9,7 @@ jobs:
       pull-requests: write
       pull-requests: write
     env:
     env:
       ALSOFT_CONF: love2d-${{ github.sha }}/testing/resources/alsoft.conf
       ALSOFT_CONF: love2d-${{ github.sha }}/testing/resources/alsoft.conf
+      VK_LAYER_SETTINGS_PATH: love2d-${{ github.sha }}/testing/resources/vk_layer_settings.txt
       DISPLAY: :99
       DISPLAY: :99
     steps:
     steps:
     - name: Update APT
     - name: Update APT

+ 324 - 0
testing/resources/vk_layer_settings.txt

@@ -0,0 +1,324 @@
+
+# VK_LAYER_KHRONOS_validation
+
+# Fine Grained Locking
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.check_query
+# Checks for commands that use VkQueryPool objects.
+khronos_validation.check_query = true
+
+# Shader
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.check_shaders_caching
+# Enable caching of shader validation results.
+khronos_validation.check_shaders_caching = true
+
+# Handle Wrapping
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.object_lifetime
+# Object tracking checks. This may not always be necessary late in a development
+# cycle.
+khronos_validation.object_lifetime = true
+
+# Stateless Parameter
+# =====================
+# <LayerIdentifier>.stateless_param
+# Stateless parameter checks. This may not always be necessary late in a
+# development cycle.
+khronos_validation.stateless_param = true
+
+# Thread Safety
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.printf_to_stdout
+# Enable redirection of Debug Printf messages from the debug callback to stdout
+#khronos_validation.printf_to_stdout = true
+
+# Printf verbose
+# =====================
+# <LayerIdentifier>.printf_verbose
+# Set the verbosity of debug printf messages
+#khronos_validation.printf_verbose = false
+
+# Printf buffer size
+# =====================
+# <LayerIdentifier>.printf_buffer_size
+# Set the size in bytes of the buffer used by debug printf
+#khronos_validation.printf_buffer_size = 1024
+
+# Shader instrumentation
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.gpuav_buffer_address_oob
+# Check for
+khronos_validation.gpuav_buffer_address_oob = true
+
+# Maximum number of buffer device addresses in use at one time
+# =====================
+# <LayerIdentifier>.gpuav_max_buffer_device_addresses
+
+khronos_validation.gpuav_max_buffer_device_addresses = 10000
+
+# RayQuery SPIR-V Instructions
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.gpuav_cache_instrumented_shaders
+# Enable instrumented shader caching
+khronos_validation.gpuav_cache_instrumented_shaders = true
+
+# Enable instrumenting shaders selectively
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.gpuav_indirect_draws_buffers
+# Validate buffers containing draw parameters used in indirect draw commands
+khronos_validation.gpuav_indirect_draws_buffers = true
+
+# Indirect dispatches parameters
+# =====================
+# <LayerIdentifier>.indirect_dispatches
+# Validate buffers containing dispatch parameters used in indirect dispatch
+# commands
+khronos_validation.indirect_dispatches = true
+
+# Indirect trace rays parameters
+# =====================
+# <LayerIdentifier>.indirect_trace_rays
+# Validate buffers containing ray tracing parameters used in indirect ray
+# tracing commands
+khronos_validation.indirect_trace_rays = true
+
+# Buffer copies
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.gpuav_debug_validate_instrumented_shaders
+# Run spirv-val after doing shader instrumentation
+#khronos_validation.gpuav_debug_validate_instrumented_shaders = false
+
+# Dump instrumented shaders
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.log_filename
+# Specifies the output filename
+khronos_validation.log_filename = stdout
+
+# Message Severity
+# =====================
+# <LayerIdentifier>.report_flags
+# Comma-delineated list of options specifying the types of messages to be
+# reported
+khronos_validation.report_flags = error
+
+# Limit Duplicated Messages
+# =====================
+# <LayerIdentifier>.enable_message_limit
+# Enable limiting of duplicate messages.
+khronos_validation.enable_message_limit = false
+
+# Max Duplicated Messages
+# =====================
+# <LayerIdentifier>.duplicate_message_limit
+# Maximum number of times any single validation message should be reported.
+#khronos_validation.duplicate_message_limit = 10
+
+# Mute Message VUIDs
+# =====================
+# <LayerIdentifier>.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
+# =====================
+# <LayerIdentifier>.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
+