[Mesa-dev] [PATCH 07/11] glsl_to_tgsi: enable copy propagation for tessellation shaders

Nicolai Hähnle nhaehnle at gmail.com
Thu Oct 5 15:04:19 UTC 2017


On 03.10.2017 17:46, Marek Olšák wrote:
> On Mon, Oct 2, 2017 at 12:55 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
>> On 29.09.2017 14:25, Marek Olšák wrote:
>>>
>>> From: Marek Olšák <marek.olsak at amd.com>
>>>
>>> just don't propagate output reads
>>> ---
>>>    src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 6 ++----
>>>    1 file changed, 2 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>>> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>>> index 50a71e4..2d62213 100644
>>> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>>> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>>> @@ -4940,20 +4940,21 @@ glsl_to_tgsi_visitor::copy_propagate(void)
>>>            /* If this is a copy, add it to the ACP. */
>>>          if (inst->op == TGSI_OPCODE_MOV &&
>>>              inst->dst[0].file == PROGRAM_TEMPORARY &&
>>>              !(inst->dst[0].file == inst->src[0].file &&
>>>                 inst->dst[0].index == inst->src[0].index) &&
>>>              !inst->dst[0].reladdr &&
>>>              !inst->dst[0].reladdr2 &&
>>>              !inst->saturate &&
>>>              inst->src[0].file != PROGRAM_ARRAY &&
>>> +          inst->src[0].file != PROGRAM_OUTPUT &&
>>
>>
>> Did you check shader-db effects of this? We only really need this
>> restriction on TCS. Though I guess radeonsi is actually one of the least
>> affected drivers thanks to LLVM.
> 
> No shader-db change, but I can add this:
> 
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 9ddfb1e..1253f88 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -4970,7 +4970,8 @@ glsl_to_tgsi_visitor::copy_propagate(void)
>             !inst->dst[0].reladdr2 &&
>             !inst->saturate &&
>             inst->src[0].file != PROGRAM_ARRAY &&
> -          inst->src[0].file != PROGRAM_OUTPUT &&
> +          (this->shader->Stage != MESA_SHADER_TESS_CTRL ||
> +           inst->src[0].file != PROGRAM_OUTPUT) &&
>             !inst->src[0].reladdr &&
>             !inst->src[0].reladdr2 &&
>             !inst->src[0].negate &&

That looks good, thanks!


> 
> 
> Marek
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list