diff options
author | Caio Marcelo de Oliveira Filho <[email protected]> | 2020-05-19 09:44:55 -0700 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-05-26 20:35:03 +0000 |
commit | 462bc408fe953d8d4e914e78c7faef057e806872 (patch) | |
tree | 2d1fdbba1b99c7d914de0386755a30b9ddf36eac /src/intel | |
parent | 2a308ee4c792bc64486e94374f74d221bbaa10f1 (diff) |
intel/fs: Early return when can't satisfy explicit group size
Reviewed-by: Jason Ekstrand <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5213>
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/compiler/brw_fs.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp index 56de5950962..e810f1fe769 100644 --- a/src/intel/compiler/brw_fs.cpp +++ b/src/intel/compiler/brw_fs.cpp @@ -9053,10 +9053,6 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data, assert(min_dispatch_width <= 32); unsigned max_dispatch_width = 32; - fs_visitor *v8 = NULL, *v16 = NULL, *v32 = NULL; - fs_visitor *v = NULL; - const char *fail_msg = NULL; - if ((int)key->base.subgroup_size_type >= (int)BRW_SUBGROUP_SIZE_REQUIRE_8) { /* These enum values are expressly chosen to be equal to the subgroup * size that they require. @@ -9068,15 +9064,22 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data, required_dispatch_width == 32); if (required_dispatch_width < min_dispatch_width || required_dispatch_width > max_dispatch_width) { - fail_msg = "Cannot satisfy explicit subgroup size"; - } else { - min_dispatch_width = max_dispatch_width = required_dispatch_width; + if (error_str) { + *error_str = ralloc_strdup(mem_ctx, + "Cannot satisfy explicit subgroup size"); + } + return NULL; } + min_dispatch_width = max_dispatch_width = required_dispatch_width; } + fs_visitor *v8 = NULL, *v16 = NULL, *v32 = NULL; + fs_visitor *v = NULL; + const char *fail_msg = NULL; + /* Now the main event: Visit the shader IR and generate our CS IR for it. */ - if (!fail_msg && min_dispatch_width <= 8 && max_dispatch_width >= 8) { + if (min_dispatch_width <= 8 && max_dispatch_width >= 8) { nir_shader *nir8 = compile_cs_to_nir(compiler, mem_ctx, key, src_shader, 8); v8 = new fs_visitor(compiler, log_data, mem_ctx, &key->base, |