intel/common: Use as much as possible spec recommended values for compute engine async thread limits

Spec recommended values should give us a good balance between progress
in render and compute engines, also with less possibility of values
it will reduce the number of times that we need to emit
STATE_COMPUTE_MODE reducing the number of stalls in the compute engine.

Cc: stable
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35563>
This commit is contained in:
José Roberto de Souza
2025-06-17 10:52:41 -07:00
committed by Marge Bot
parent 080b9a165c
commit 59d361043e
+22 -30
View File
@@ -9,6 +9,8 @@
#include "intel_engine.h"
#include "util/compiler.h"
/* Updates intel_device_info fields that has dependencies on intel/common
* functions.
*/
@@ -61,9 +63,8 @@ intel_compute_engine_async_threads_limit(const struct intel_device_info *devinfo
*/
switch (hw_threads_in_wg) {
case 0 ... 2:
/* Max 2 */
pixel_async_compute_thread_limit = 1;
break;
/* Minimum is Max 2 but lets use spec recommended value below */
FALLTHROUGH;
case 3 ... 8:
/* Max 8 */
pixel_async_compute_thread_limit = 2;
@@ -95,21 +96,17 @@ intel_compute_engine_async_threads_limit(const struct intel_device_info *devinfo
switch (hw_threads_in_wg) {
case 0 ... 32:
/* Max 32 */
z_pass_async_compute_thread_limit = 5;
break;
/* Minimum is Max 32 but lets use spec recommended value below */
FALLTHROUGH;
case 33 ... 40:
/* Max 40 */
z_pass_async_compute_thread_limit = 4;
break;
/* Minimum is Max 40 but lets use spec recommended value below */
FALLTHROUGH;
case 41 ... 48:
/* Max 48 */
z_pass_async_compute_thread_limit = 3;
break;
/* Minimum is Max 48 but lets use spec recommended value below */
FALLTHROUGH;
case 49 ... 56:
/* Max 56 */
z_pass_async_compute_thread_limit = 2;
break;
/* Minimum is Max 56 but lets use spec recommended value below */
FALLTHROUGH;
case 57 ... 60:
/* Max 60 */
z_pass_async_compute_thread_limit = 0;
@@ -141,9 +138,8 @@ intel_compute_engine_async_threads_limit(const struct intel_device_info *devinfo
} else {
switch (hw_threads_in_wg) {
case 0 ... 4:
/* Max 2 */
pixel_async_compute_thread_limit = 1;
break;
/* Minimum is Max 2 but lets use spec recommended value below */
FALLTHROUGH;
case 5 ... 16:
/* Max 8 */
pixel_async_compute_thread_limit = 2;
@@ -175,21 +171,17 @@ intel_compute_engine_async_threads_limit(const struct intel_device_info *devinfo
switch (hw_threads_in_wg) {
case 0 ... 64:
/* Max 32 */
z_pass_async_compute_thread_limit = 5;
break;
/* Minimum is Max 32 but lets use spec recommended value below */
FALLTHROUGH;
case 65 ... 80:
/* Max 40 */
z_pass_async_compute_thread_limit = 4;
break;
/* Minimum is Max 40 but lets use spec recommended value below */
FALLTHROUGH;
case 81 ... 96:
/* Max 48 */
z_pass_async_compute_thread_limit = 3;
break;
/* Minimum is Max 48 but lets use spec recommended value below */
FALLTHROUGH;
case 97 ... 112:
/* Max 56 */
z_pass_async_compute_thread_limit = 2;
break;
/* Minimum is Max 56 but lets use spec recommended value below */
FALLTHROUGH;
case 113 ... 120:
/* Max 60 */
z_pass_async_compute_thread_limit = 0;