mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
d2f8a576a8
Co-authored-by: Francisco Casas <fcasas@codeweavers.com> Co-authored-by: Zebediah Figura <zfigura@codeweavers.com> Because copy_propagation_transform_object_load() replaces a deref instead of an instruction, it is currently prone to two problems: 1- It can replace a deref with the same deref, returning true every time and getting the compilation stuck in an endless loop of copy-propagation iterations. 2- When performed multiple times in the same deref, the second time it can replace the deref with a deref from a temp that is only valid in another point of the program execution, resulting in an incorrect value. This patch preempts this by avoiding replacing derefs when the new deref doesn't point to a uniform variable. Because, uniform variables cannot be written to. |
||
---|---|---|
.. | ||
checksum.c | ||
d3dbc.c | ||
dxbc.c | ||
glsl.c | ||
hlsl_codegen.c | ||
hlsl_constant_ops.c | ||
hlsl_sm1.c | ||
hlsl_sm4.c | ||
hlsl.c | ||
hlsl.h | ||
hlsl.l | ||
hlsl.y | ||
libvkd3d-shader.pc.in | ||
preproc.h | ||
preproc.l | ||
preproc.y | ||
sm4.h | ||
spirv.c | ||
trace.c | ||
vkd3d_shader_main.c | ||
vkd3d_shader_private.h | ||
vkd3d_shader.map |