mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 18:00:13 +01:00
i965/fs: Build 32-wide compute shader when needed.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
37fd13ee2d
commit
864737ce6c
1 changed files with 26 additions and 0 deletions
|
|
@ -6524,6 +6524,32 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data,
|
|||
}
|
||||
}
|
||||
|
||||
fs_visitor v32(compiler, log_data, mem_ctx, key, &prog_data->base,
|
||||
NULL, /* Never used in core profile */
|
||||
shader, 32, shader_time_index);
|
||||
if (!fail_msg && v8.max_dispatch_width >= 32 &&
|
||||
simd_required > 16) {
|
||||
/* Try a SIMD32 compile */
|
||||
if (simd_required <= 8)
|
||||
v32.import_uniforms(&v8);
|
||||
else if (simd_required <= 16)
|
||||
v32.import_uniforms(&v16);
|
||||
|
||||
if (!v32.run_cs()) {
|
||||
compiler->shader_perf_log(log_data,
|
||||
"SIMD32 shader failed to compile: %s",
|
||||
v16.fail_msg);
|
||||
if (!cfg) {
|
||||
fail_msg =
|
||||
"Couldn't generate SIMD32 program and not "
|
||||
"enough threads for SIMD16";
|
||||
}
|
||||
} else {
|
||||
cfg = v32.cfg;
|
||||
prog_data->simd_size = 32;
|
||||
}
|
||||
}
|
||||
|
||||
if (unlikely(cfg == NULL)) {
|
||||
assert(fail_msg);
|
||||
if (error_str)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue