asahi: Add ASAHI_MESA_DEBUG=nowc flag
Add a debug flag to disable write-combining as a performance hack. This may help diagnose slowness with glReadPixels() heavy workloads like screen capture. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
This commit is contained in:

committed by
Marge Bot

parent
3a0d1f83d5
commit
389c0fdc7c
@@ -1633,6 +1633,10 @@ Asahi driver environment variables
|
|||||||
possible) or added in the Mesa-wide driconf (if closed source).
|
possible) or added in the Mesa-wide driconf (if closed source).
|
||||||
``dirty``
|
``dirty``
|
||||||
In debug builds only: disable dirty tracking optimizations.
|
In debug builds only: disable dirty tracking optimizations.
|
||||||
|
``nowc``
|
||||||
|
Disable write-combining (force all allocations to be write-through). This
|
||||||
|
may be useful for diagnosing certain performance issues. Note imported
|
||||||
|
buffers may still be write-combined.
|
||||||
|
|
||||||
.. envvar:: AGX_MESA_DEBUG
|
.. envvar:: AGX_MESA_DEBUG
|
||||||
|
|
||||||
|
@@ -25,6 +25,7 @@ enum agx_dbg {
|
|||||||
AGX_DBG_STATS = BITFIELD_BIT(9),
|
AGX_DBG_STATS = BITFIELD_BIT(9),
|
||||||
AGX_DBG_RESOURCE = BITFIELD_BIT(10),
|
AGX_DBG_RESOURCE = BITFIELD_BIT(10),
|
||||||
AGX_DBG_BATCH = BITFIELD_BIT(11),
|
AGX_DBG_BATCH = BITFIELD_BIT(11),
|
||||||
|
AGX_DBG_NOWC = BITFIELD_BIT(12),
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Dummy partial declarations, pending real UAPI */
|
/* Dummy partial declarations, pending real UAPI */
|
||||||
|
@@ -69,6 +69,7 @@ static const struct debug_named_value agx_debug_options[] = {
|
|||||||
{"stats", AGX_DBG_STATS, "Show command execution statistics"},
|
{"stats", AGX_DBG_STATS, "Show command execution statistics"},
|
||||||
{"resource", AGX_DBG_RESOURCE, "Log resource operations"},
|
{"resource", AGX_DBG_RESOURCE, "Log resource operations"},
|
||||||
{"batch", AGX_DBG_BATCH, "Log batches"},
|
{"batch", AGX_DBG_BATCH, "Log batches"},
|
||||||
|
{"nowc", AGX_DBG_NOWC, "Disable write-combining"},
|
||||||
DEBUG_NAMED_VALUE_END
|
DEBUG_NAMED_VALUE_END
|
||||||
};
|
};
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
@@ -557,6 +558,11 @@ agx_resource_create_with_modifiers(struct pipe_screen *screen,
|
|||||||
create_flags |= AGX_BO_WRITEBACK;
|
create_flags |= AGX_BO_WRITEBACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Allow disabling write-combine to debug performance issues */
|
||||||
|
if (dev->debug & AGX_DBG_NOWC) {
|
||||||
|
create_flags |= AGX_BO_WRITEBACK;
|
||||||
|
}
|
||||||
|
|
||||||
/* Create buffers that might be shared with the SHAREABLE flag */
|
/* Create buffers that might be shared with the SHAREABLE flag */
|
||||||
if (bind & (PIPE_BIND_SCANOUT | PIPE_BIND_DISPLAY_TARGET | PIPE_BIND_SHARED))
|
if (bind & (PIPE_BIND_SCANOUT | PIPE_BIND_DISPLAY_TARGET | PIPE_BIND_SHARED))
|
||||||
create_flags |= AGX_BO_SHAREABLE;
|
create_flags |= AGX_BO_SHAREABLE;
|
||||||
|
Reference in New Issue
Block a user