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>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41047>
This commit is contained in:
Lionel Landwerlin 2024-06-21 17:51:34 +03:00
parent c0c324fcb2
commit d581b7282b

View file

@ -5116,7 +5116,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