diff --git a/src/gallium/drivers/panfrost/ci/deqp-panfrost-g52-fails.txt b/src/gallium/drivers/panfrost/ci/deqp-panfrost-g52-fails.txt index c9c0d68cf06..a491e4c562d 100644 --- a/src/gallium/drivers/panfrost/ci/deqp-panfrost-g52-fails.txt +++ b/src/gallium/drivers/panfrost/ci/deqp-panfrost-g52-fails.txt @@ -1,5 +1,4 @@ # The shader assisted indirect draw path is buggy. The shader assisted indirect # draw path is disabled outside of CI due to these conformance issues. -KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements,Fail KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-arrays,Fail KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements,Fail diff --git a/src/panfrost/lib/pan_device.h b/src/panfrost/lib/pan_device.h index fbaa8cc4252..df6661151a9 100644 --- a/src/panfrost/lib/pan_device.h +++ b/src/panfrost/lib/pan_device.h @@ -93,6 +93,9 @@ enum pan_indirect_draw_flags { PAN_INDIRECT_DRAW_MIN_MAX_SEARCH_1B_INDEX = PAN_INDIRECT_DRAW_LAST_FLAG << 1, PAN_INDIRECT_DRAW_MIN_MAX_SEARCH_2B_INDEX, PAN_INDIRECT_DRAW_MIN_MAX_SEARCH_4B_INDEX, + PAN_INDIRECT_DRAW_MIN_MAX_SEARCH_1B_INDEX_PRIM_RESTART, + PAN_INDIRECT_DRAW_MIN_MAX_SEARCH_2B_INDEX_PRIM_RESTART, + PAN_INDIRECT_DRAW_MIN_MAX_SEARCH_3B_INDEX_PRIM_RESTART, PAN_INDIRECT_DRAW_NUM_SHADERS, }; diff --git a/src/panfrost/lib/pan_indirect_draw.c b/src/panfrost/lib/pan_indirect_draw.c index cd99ad4a2b1..c2427463e51 100644 --- a/src/panfrost/lib/pan_indirect_draw.c +++ b/src/panfrost/lib/pan_indirect_draw.c @@ -1076,7 +1076,9 @@ get_shader_id(unsigned flags, unsigned index_size, bool index_min_max_search) return flags; } - return PAN_INDIRECT_DRAW_MIN_MAX_SEARCH_1B_INDEX + + return ((flags & PAN_INDIRECT_DRAW_PRIMITIVE_RESTART) ? + PAN_INDIRECT_DRAW_MIN_MAX_SEARCH_1B_INDEX_PRIM_RESTART : + PAN_INDIRECT_DRAW_MIN_MAX_SEARCH_1B_INDEX) + util_logbase2(index_size); }