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)) {
|
if (unlikely(cfg == NULL)) {
|
||||||
assert(fail_msg);
|
assert(fail_msg);
|
||||||
if (error_str)
|
if (error_str)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue