mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 00:38:48 +02:00
ir3: Align TCS per-patch output to 64 bytes to prevent stale reads
Empirically, TCS outputs have to be aligned to 64 bytes,
otherwise stale data may be read in rare cases. The exact
reason is not clear, but tests and proprietary driver behavior
strongly point at the need for 64 byte alignment.
Fixes tesselation issues in at least "Conan Exiles" but likely in many
more cases.
CC: mesa-stable
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
(cherry picked from commit 47251b2e2d)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40092>
This commit is contained in:
parent
ba82a16761
commit
ac49313d06
2 changed files with 8 additions and 2 deletions
|
|
@ -594,7 +594,7 @@
|
|||
"description": "ir3: Align TCS per-patch output to 64 bytes to prevent stale reads",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -665,7 +665,13 @@ ir3_nir_lower_tess_ctrl(nir_shader *shader, struct ir3_shader_variant *v,
|
|||
|
||||
build_primitive_map(shader, &state.map);
|
||||
memcpy(v->output_loc, state.map.loc, sizeof(v->output_loc));
|
||||
v->output_size = state.map.stride;
|
||||
|
||||
/* Empirically, TCS outputs have to be aligned to 64 bytes,
|
||||
* otherwise stale data may be read in rare cases. The exact
|
||||
* reason is not clear, but tests and proprietary driver behavior
|
||||
* strongly point at the need for 64 byte alignment.
|
||||
*/
|
||||
v->output_size = ALIGN_POT(state.map.stride, 16);
|
||||
|
||||
nir_function_impl *impl = nir_shader_get_entrypoint(shader);
|
||||
assert(impl);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue