mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 15:58:05 +02:00
anv: rework debug flag
Making it easier to use. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41047>
This commit is contained in:
parent
d581b7282b
commit
88b4eed4f6
12 changed files with 39 additions and 35 deletions
|
|
@ -1079,7 +1079,7 @@ anv_cmd_buffer_end_batch_buffer(struct anv_cmd_buffer *cmd_buffer)
|
|||
* actual ExecuteCommands implementation.
|
||||
*/
|
||||
const uint32_t length = cmd_buffer->batch.next - cmd_buffer->batch.start;
|
||||
if (!(cmd_buffer->device->physical->instance->debug & ANV_DEBUG_NO_SECONDARY_CALL)) {
|
||||
if (!ANV_DEBUG(NO_SECONDARY_CALL)) {
|
||||
cmd_buffer->exec_mode = ANV_CMD_BUFFER_EXEC_MODE_CALL_AND_RETURN;
|
||||
|
||||
void *jump_addr =
|
||||
|
|
|
|||
|
|
@ -448,7 +448,7 @@ anv_descriptor_requires_bindless(const struct anv_physical_device *pdevice,
|
|||
const struct anv_descriptor_set_layout *set,
|
||||
const struct anv_descriptor_set_binding_layout *binding)
|
||||
{
|
||||
if (pdevice->instance->debug & ANV_DEBUG_BINDLESS)
|
||||
if (ANV_DEBUG(BINDLESS))
|
||||
return anv_descriptor_supports_bindless(pdevice, set, binding);
|
||||
|
||||
if (set->vk.flags & VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR)
|
||||
|
|
|
|||
|
|
@ -813,11 +813,11 @@ anv_get_color_format_features(const struct anv_physical_device *physical_device,
|
|||
|
||||
if (anv_format->flags & ANV_FORMAT_FLAG_CAN_VIDEO &&
|
||||
!(create_flags & VK_IMAGE_CREATE_DISJOINT_BIT)) {
|
||||
flags |= (physical_device->instance->debug & ANV_DEBUG_VIDEO_DECODE) ?
|
||||
flags |= ANV_DEBUG(VIDEO_DECODE) ?
|
||||
VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR |
|
||||
VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR : 0;
|
||||
|
||||
flags |= (physical_device->instance->debug & ANV_DEBUG_VIDEO_ENCODE) ?
|
||||
flags |= ANV_DEBUG(VIDEO_ENCODE) ?
|
||||
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR |
|
||||
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR : 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,6 +105,14 @@ static const struct debug_control debug_control[] = {
|
|||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
enum anv_debug anv_debug;
|
||||
|
||||
static void
|
||||
process_anv_debug_variable_once(void)
|
||||
{
|
||||
anv_debug = parse_debug_string(os_get_option("ANV_DEBUG"), debug_control);
|
||||
}
|
||||
|
||||
VkResult anv_EnumerateInstanceVersion(
|
||||
uint32_t* pApiVersion)
|
||||
{
|
||||
|
|
@ -327,8 +335,9 @@ VkResult anv_CreateInstance(
|
|||
|
||||
anv_init_dri_options(instance);
|
||||
|
||||
instance->debug = parse_debug_string(os_get_option("ANV_DEBUG"),
|
||||
debug_control);
|
||||
static once_flag process_anv_debug_variable_flag = ONCE_FLAG_INIT;
|
||||
call_once(&process_anv_debug_variable_flag,
|
||||
process_anv_debug_variable_once);
|
||||
|
||||
process_intel_debug_variable();
|
||||
instance->vk.enable_debug_logging = INTEL_DEBUG(DEBUG_PERF);
|
||||
|
|
|
|||
|
|
@ -2265,8 +2265,7 @@ binding_should_use_surface_binding_table(const struct apply_pipeline_layout_stat
|
|||
if ((bind_layout->data & ANV_DESCRIPTOR_BTI_SURFACE_STATE) == 0)
|
||||
return false;
|
||||
|
||||
if ((state->pdevice->instance->debug & ANV_DEBUG_BINDLESS) &&
|
||||
(bind_layout->data & ANV_DESCRIPTOR_SURFACE))
|
||||
if (ANV_DEBUG(BINDLESS) && (bind_layout->data & ANV_DESCRIPTOR_SURFACE))
|
||||
return false;
|
||||
|
||||
if (state->set[set].binding[binding].properties &
|
||||
|
|
@ -2283,8 +2282,7 @@ binding_should_use_sampler_binding_table(const struct apply_pipeline_layout_stat
|
|||
if ((binding->data & ANV_DESCRIPTOR_BTI_SAMPLER_STATE) == 0)
|
||||
return false;
|
||||
|
||||
if ((state->pdevice->instance->debug & ANV_DEBUG_BINDLESS) &&
|
||||
(binding->data & ANV_DESCRIPTOR_SAMPLER))
|
||||
if (ANV_DEBUG(BINDLESS) && (binding->data & ANV_DESCRIPTOR_SAMPLER))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -138,9 +138,8 @@ get_device_extensions(const struct anv_physical_device *device,
|
|||
!intel_use_jay_any_stage(&device->info);
|
||||
const bool hw_video_encode_supported = device->info.verx10 < 125;
|
||||
const bool video_encode_enabled = hw_video_encode_supported &&
|
||||
(device->instance->debug & ANV_DEBUG_VIDEO_ENCODE);
|
||||
const bool video_decode_enabled = device->instance->debug & ANV_DEBUG_VIDEO_DECODE;
|
||||
|
||||
ANV_DEBUG(VIDEO_ENCODE);
|
||||
const bool video_decode_enabled = ANV_DEBUG(VIDEO_DECODE);
|
||||
|
||||
*ext = (struct vk_device_extension_table) {
|
||||
.KHR_8bit_storage = true,
|
||||
|
|
@ -201,7 +200,7 @@ get_device_extensions(const struct anv_physical_device *device,
|
|||
device->perf &&
|
||||
(intel_perf_has_hold_preemption(device->perf) ||
|
||||
INTEL_DEBUG(DEBUG_NO_OACONFIG)) &&
|
||||
!(device->instance->debug & ANV_DEBUG_NO_SECONDARY_CALL),
|
||||
!ANV_DEBUG(NO_SECONDARY_CALL),
|
||||
.KHR_pipeline_binary = true,
|
||||
.KHR_pipeline_executable_properties = true,
|
||||
.KHR_pipeline_library = true,
|
||||
|
|
@ -309,7 +308,7 @@ get_device_extensions(const struct anv_physical_device *device,
|
|||
VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR,
|
||||
.EXT_global_priority_query = device->max_context_priority >=
|
||||
VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR,
|
||||
.EXT_graphics_pipeline_library = !(device->instance->debug & ANV_DEBUG_NO_GPL),
|
||||
.EXT_graphics_pipeline_library = !ANV_DEBUG(NO_GPL),
|
||||
.EXT_hdr_metadata = true,
|
||||
.EXT_host_image_copy = true,
|
||||
.EXT_host_query_reset = true,
|
||||
|
|
@ -2387,7 +2386,7 @@ anv_physical_device_init_uuids(struct anv_physical_device *device)
|
|||
_mesa_blake3_init(&blake3_ctx);
|
||||
_mesa_blake3_update(&blake3_ctx, build_id_data(note), build_id_len);
|
||||
brw_device_blake3_update(&blake3_ctx, &device->info);
|
||||
bool always_use_bindless = !!(device->instance->debug & ANV_DEBUG_BINDLESS);
|
||||
bool always_use_bindless = ANV_DEBUG(BINDLESS);
|
||||
_mesa_blake3_update(&blake3_ctx, &always_use_bindless,
|
||||
sizeof(always_use_bindless));
|
||||
_mesa_blake3_final(&blake3_ctx, blake3);
|
||||
|
|
@ -2566,8 +2565,7 @@ anv_physical_device_init_queue_families(struct anv_physical_device *pdevice)
|
|||
.engine_class = compute_class,
|
||||
};
|
||||
}
|
||||
if (v_count > 0 && ((pdevice->instance->debug & ANV_DEBUG_VIDEO_DECODE) ||
|
||||
(pdevice->instance->debug & ANV_DEBUG_VIDEO_ENCODE))) {
|
||||
if (v_count > 0 && (ANV_DEBUG(VIDEO_DECODE) || ANV_DEBUG(VIDEO_ENCODE))) {
|
||||
/* HEVC support on Gfx9 is only available on VCS0. So limit the number of video queues
|
||||
* to the first VCS engine instance.
|
||||
*
|
||||
|
|
@ -2580,9 +2578,9 @@ anv_physical_device_init_queue_families(struct anv_physical_device *pdevice)
|
|||
*/
|
||||
/* TODO: enable protected content on video queue */
|
||||
pdevice->queue.families[family_count++] = (struct anv_queue_family) {
|
||||
.queueFlags = ((pdevice->instance->debug & ANV_DEBUG_VIDEO_DECODE) ?
|
||||
.queueFlags = (ANV_DEBUG(VIDEO_DECODE) ?
|
||||
VK_QUEUE_VIDEO_DECODE_BIT_KHR : 0) |
|
||||
((pdevice->instance->debug & ANV_DEBUG_VIDEO_ENCODE) ?
|
||||
(ANV_DEBUG(VIDEO_ENCODE) ?
|
||||
VK_QUEUE_VIDEO_ENCODE_BIT_KHR : 0),
|
||||
.queueCount = pdevice->info.ver == 9 ? MIN2(1, v_count) : v_count,
|
||||
.engine_class = INTEL_ENGINE_CLASS_VIDEO,
|
||||
|
|
@ -2816,9 +2814,9 @@ anv_physical_device_try_create(struct vk_instance *vk_instance,
|
|||
device->uses_relocs = device->info.kmd_type != INTEL_KMD_TYPE_XE;
|
||||
|
||||
/* While xe.ko can use both vm_bind and TR-TT, i915.ko only has TR-TT. */
|
||||
if (!(instance->debug & ANV_DEBUG_NO_SPARSE)) {
|
||||
if (!ANV_DEBUG(NO_SPARSE)) {
|
||||
if (device->info.kmd_type == INTEL_KMD_TYPE_XE) {
|
||||
if (instance->debug & ANV_DEBUG_SPARSE_TRTT)
|
||||
if (ANV_DEBUG(SPARSE_TRTT))
|
||||
device->sparse_type = ANV_SPARSE_TYPE_TRTT;
|
||||
else
|
||||
device->sparse_type = ANV_SPARSE_TYPE_VM_BIND;
|
||||
|
|
|
|||
|
|
@ -1801,14 +1801,16 @@ enum anv_debug {
|
|||
ANV_DEBUG_DESCRIPTOR_DIRTY = BITFIELD_BIT(9),
|
||||
};
|
||||
|
||||
extern enum anv_debug anv_debug;
|
||||
|
||||
#define ANV_DEBUG(name) unlikely(anv_debug & ANV_DEBUG_##name)
|
||||
|
||||
struct anv_instance {
|
||||
struct vk_instance vk;
|
||||
|
||||
struct driOptionCache dri_options;
|
||||
struct driOptionCache available_dri_options;
|
||||
|
||||
enum anv_debug debug;
|
||||
|
||||
int mesh_conv_prim_attrs_to_vert_attrs;
|
||||
bool enable_tbimr;
|
||||
bool enable_vf_distribution;
|
||||
|
|
@ -6940,8 +6942,7 @@ anv_cmd_buffer_dirty_descriptors(struct anv_cmd_buffer* cmd_buffer,
|
|||
const char* reason)
|
||||
{
|
||||
cmd_buffer->state.descriptors_dirty |= stages;
|
||||
if (unlikely(cmd_buffer->device->physical->instance->debug &
|
||||
ANV_DEBUG_DESCRIPTOR_DIRTY))
|
||||
if (ANV_DEBUG(DESCRIPTOR_DIRTY))
|
||||
anv_cmd_buffer_descriptor_buffer_debug(cmd_buffer, stages, reason);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -340,7 +340,7 @@ anv_slab_bo_init(struct anv_device *device)
|
|||
unsigned num_slab_orders_per_allocator = (max_slab_order - min_slab_order) /
|
||||
num_slab_allocator;
|
||||
|
||||
if (unlikely(device->physical->instance->debug & ANV_DEBUG_NO_SLAB))
|
||||
if (ANV_DEBUG(NO_SLAB))
|
||||
return true;
|
||||
|
||||
/* feature requirement */
|
||||
|
|
|
|||
|
|
@ -643,11 +643,10 @@ emit_cs_walker(struct anv_cmd_buffer *cmd_buffer,
|
|||
bool is_unaligned_size_x, uint32_t unaligned_invocations_x)
|
||||
{
|
||||
struct anv_device *device = cmd_buffer->device;
|
||||
struct anv_instance *instance = device->physical->instance;
|
||||
bool is_indirect = !anv_address_is_null(indirect_addr);
|
||||
|
||||
struct mi_builder b;
|
||||
if (unlikely(instance->debug & ANV_DEBUG_SHADER_HASH)) {
|
||||
if (ANV_DEBUG(SHADER_HASH)) {
|
||||
mi_builder_init(&b, device->info, &cmd_buffer->batch);
|
||||
mi_builder_set_mocs(&b, isl_mocs(&device->isl_dev, 0, false));
|
||||
mi_store(&b, mi_mem32(device->workaround_address),
|
||||
|
|
|
|||
|
|
@ -1079,13 +1079,13 @@ cmd_buffer_pre_draw_wa(struct anv_cmd_buffer *cmd_buffer)
|
|||
UNUSED struct anv_gfx_dynamic_state *hw_state = &gfx->dyn_state;
|
||||
|
||||
struct mi_builder b;
|
||||
if (unlikely(instance->debug & ANV_DEBUG_SHADER_HASH)) {
|
||||
if (ANV_DEBUG(SHADER_HASH)) {
|
||||
mi_builder_init(&b, device->info, &cmd_buffer->batch);
|
||||
mi_builder_set_mocs(&b, isl_mocs(&device->isl_dev, 0, false));
|
||||
}
|
||||
|
||||
#define DEBUG_SHADER_HASH(stage) do { \
|
||||
if (unlikely(instance->debug & ANV_DEBUG_SHADER_HASH)) { \
|
||||
if (ANV_DEBUG(SHADER_HASH)) { \
|
||||
mi_store(&b, \
|
||||
mi_mem32(device->workaround_address), \
|
||||
mi_imm(gfx->shaders[stage]->prog_data->source_hash)); \
|
||||
|
|
|
|||
|
|
@ -3605,7 +3605,6 @@ cmd_buffer_gfx_state_emission(struct anv_cmd_buffer *cmd_buffer)
|
|||
{
|
||||
struct anv_batch *batch = &cmd_buffer->batch;
|
||||
struct anv_device *device = cmd_buffer->device;
|
||||
struct anv_instance *instance = device->physical->instance;
|
||||
struct anv_cmd_graphics_state *gfx = &cmd_buffer->state.gfx;
|
||||
const struct vk_dynamic_graphics_state *dyn =
|
||||
&cmd_buffer->vk.dynamic_graphics_state;
|
||||
|
|
@ -3615,7 +3614,7 @@ cmd_buffer_gfx_state_emission(struct anv_cmd_buffer *cmd_buffer)
|
|||
|
||||
#define DEBUG_SHADER_HASH(stage) do { \
|
||||
if (unlikely( \
|
||||
(instance->debug & ANV_DEBUG_SHADER_HASH) && \
|
||||
ANV_DEBUG(SHADER_HASH) && \
|
||||
anv_gfx_has_stage(gfx, stage))) { \
|
||||
mi_store(&b, \
|
||||
mi_mem32(device->workaround_address), \
|
||||
|
|
@ -3624,7 +3623,7 @@ cmd_buffer_gfx_state_emission(struct anv_cmd_buffer *cmd_buffer)
|
|||
} while (0)
|
||||
|
||||
struct mi_builder b;
|
||||
if (unlikely(instance->debug & ANV_DEBUG_SHADER_HASH)) {
|
||||
if (ANV_DEBUG(SHADER_HASH)) {
|
||||
mi_builder_init(&b, device->info, &cmd_buffer->batch);
|
||||
mi_builder_set_mocs(&b, isl_mocs(&device->isl_dev, 0, false));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ is_slab_parent_memory_mapped_placeable(struct anv_device *device,
|
|||
{
|
||||
if ((alloc_flags & ANV_BO_ALLOC_SLAB_PARENT) == false)
|
||||
return false;
|
||||
if (device->physical->instance->debug & ANV_DEBUG_NO_SLAB)
|
||||
if (ANV_DEBUG(NO_SLAB))
|
||||
return false;
|
||||
if (!device->vk.enabled_features.memoryMapPlaced)
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue