intel/fs: fix subgroup invocation read bounds checking
nir->info.subgroup_size can be set to an enum :
SUBGROUP_SIZE_VARYING = 0
SUBGROUP_SIZE_UNIFORM = 1
SUBGROUP_SIZE_API_CONSTANT = 2
SUBGROUP_SIZE_FULL_SUBGROUPS = 3
So compute the API subgroup size value and compare it to the dispatch
size to determine whether we need some bound checking.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 9ac192d79d
("intel/fs: bound subgroup invocation read to dispatch size")
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21856>
This commit is contained in:

committed by
Marge Bot

parent
f6a36190a1
commit
56474fae93
@@ -29,6 +29,7 @@
|
||||
*/
|
||||
#include "brw_eu.h"
|
||||
#include "brw_fs.h"
|
||||
#include "brw_nir.h"
|
||||
#include "compiler/glsl_types.h"
|
||||
|
||||
using namespace brw;
|
||||
@@ -1362,9 +1363,14 @@ fs_visitor::fs_visitor(const struct brw_compiler *compiler, void *log_data,
|
||||
performance_analysis(this),
|
||||
needs_register_pressure(needs_register_pressure),
|
||||
dispatch_width(dispatch_width),
|
||||
api_subgroup_size(brw_nir_api_subgroup_size(shader, dispatch_width)),
|
||||
bld(fs_builder(this, dispatch_width).at_end())
|
||||
{
|
||||
init();
|
||||
assert(api_subgroup_size == 0 ||
|
||||
api_subgroup_size == 8 ||
|
||||
api_subgroup_size == 16 ||
|
||||
api_subgroup_size == 32);
|
||||
}
|
||||
|
||||
fs_visitor::fs_visitor(const struct brw_compiler *compiler, void *log_data,
|
||||
@@ -1382,9 +1388,14 @@ fs_visitor::fs_visitor(const struct brw_compiler *compiler, void *log_data,
|
||||
performance_analysis(this),
|
||||
needs_register_pressure(needs_register_pressure),
|
||||
dispatch_width(8),
|
||||
api_subgroup_size(brw_nir_api_subgroup_size(shader, dispatch_width)),
|
||||
bld(fs_builder(this, dispatch_width).at_end())
|
||||
{
|
||||
init();
|
||||
assert(api_subgroup_size == 0 ||
|
||||
api_subgroup_size == 8 ||
|
||||
api_subgroup_size == 16 ||
|
||||
api_subgroup_size == 32);
|
||||
}
|
||||
|
||||
void
|
||||
|
Reference in New Issue
Block a user