<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<div class="moz-cite-prefix">On 2019-04-08 2:39 p.m., Marek Olšák wrote:<br>
</div>
<blockquote type="cite" cite="mid:CAAxE2A7wQgtRFK842iOKwy79dhf3BBukd5NOgxc_LvQu6XgXGQ@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, Apr 8, 2019 at 2:33 PM James Zhu <<a href="mailto:jamesz@amd.com" moz-do-not-send="true">jamesz@amd.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
            0.8ex;border-left:1px solid
            rgb(204,204,204);padding-left:1ex">
<br>
On 2019-04-08 2:25 p.m., Marek Olšák wrote:<br>
> From: Marek Olšák <<a href="mailto:marek.olsak@amd.com" target="_blank" moz-do-not-send="true">marek.olsak@amd.com</a>><br>
><br>
> ---<br>
>   src/gallium/drivers/radeonsi/si_descriptors.c | 2 +-<br>
>   1 file changed, 1 insertion(+), 1 deletion(-)<br>
><br>
> diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c<br>
> index 244ba5a7bec..ac40ed27f91 100644<br>
> --- a/src/gallium/drivers/radeonsi/si_descriptors.c<br>
> +++ b/src/gallium/drivers/radeonsi/si_descriptors.c<br>
> @@ -942,21 +942,21 @@ void si_update_ps_colorbuf0_slot(struct si_context *sctx)<br>
>   static void si_bind_sampler_states(struct pipe_context *ctx,<br>
>                                      enum pipe_shader_type shader,<br>
>                                      unsigned start, unsigned count, void **states)<br>
>   {<br>
>       struct si_context *sctx = (struct si_context *)ctx;<br>
>       struct si_samplers *samplers = &sctx->samplers[shader];<br>
>       struct si_descriptors *desc = si_sampler_and_image_descriptors(sctx, shader);<br>
>       struct si_sampler_state **sstates = (struct si_sampler_state**)states;<br>
>       int i;<br>
>   <br>
> -     if (!count || shader >= SI_NUM_SHADERS)<br>
> +     if (!count || shader >= SI_NUM_SHADERS || !sstates)<br>
<br>
if sstates == NULL, it means we want to unbind samplers->sampler_states <br>
from current setting.<br>
<br>
So I think it is better not just bypass it.<br>
</blockquote>
<div><br>
</div>
The driver never unbinds constant state objects. If sstates[i] == NULL, it's not unbound. sstates == NULL is a similar case.</div>
</div>
</blockquote>
<p>Then we should not call unbind sampler state after compute shader launch. Since it is doing nothing.</p>
<p>James<br>
</p>
<blockquote type="cite" cite="mid:CAAxE2A7wQgtRFK842iOKwy79dhf3BBukd5NOgxc_LvQu6XgXGQ@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote"><br>
</div>
<div class="gmail_quote">It's not a standard behavior, but the driver has been doing it for a very long time.<br>
</div>
<div class="gmail_quote"><br>
</div>
<div class="gmail_quote">Marek<br>
</div>
</div>
</blockquote>
</body>
</html>