anv: fixup compute queue detection

I ran into this case where genX(cmd_buffer_emit_bt_pool_base_address)
was returning immediately because it considered an RCS engine
emulating a compute queue as neither a render nor a compute queue.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
(cherry picked from commit d581b7282b)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41269>
This commit is contained in:
Lionel Landwerlin 2024-06-21 17:51:34 +03:00 committed by Eric Engestrom
parent 0ab24a2f24
commit 22a9e59685
2 changed files with 7 additions and 2 deletions

View file

@ -3964,7 +3964,7 @@
"description": "anv: fixup compute queue detection",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -4988,7 +4988,12 @@ static inline bool
anv_cmd_buffer_is_compute_queue(const struct anv_cmd_buffer *cmd_buffer)
{
struct anv_queue_family *queue_family = cmd_buffer->queue_family;
return queue_family->engine_class == INTEL_ENGINE_CLASS_COMPUTE;
/* Either it's a RCS engine masquerading as a compute queue, or it's an
* actual CCS.
*/
return ((queue_family->queueFlags & VK_QUEUE_GRAPHICS_BIT) == 0 &&
queue_family->engine_class == INTEL_ENGINE_CLASS_RENDER) ||
queue_family->engine_class == INTEL_ENGINE_CLASS_COMPUTE;
}
static inline bool