<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Oct 5, 2016 at 9:15 AM, Ilia Mirkin <span dir="ltr"><<a href="mailto:imirkin@alum.mit.edu" target="_blank">imirkin@alum.mit.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, Sep 26, 2016 at 10:31 AM, Lionel Landwerlin<br>
<<a href="mailto:llandwerlin@gmail.com">llandwerlin@gmail.com</a>> wrote:<br>
> Anv programs the hardware to use L3 data cache if we use either SSBOs or<br>
> images in the shaders, we can program i965 the same way.<br>
><br>
> gl_shader_program has a bit of a confusing named field with<br>
> 'NumAtomicBuffers'. It doesn't tell how many buffers are accessed by the<br>
> shader in an atomic way but instead the number of atomic counters<br>
> manipulated by the shader.<br>
<br>
</span>It's likely that at least some shaders use SSBO's without atomic<br>
operations. If you only need the data cache for atomics, it should be<br>
fairly easy to determine if any atomic ops are performed or not. (Same<br>
for images.)<br></blockquote><div><br></div><div>I think we want the data cache regardless of whether or not we're doing atomics<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If you do need it for all SSBO's whether atomic or not, I'm not sure I<br>
understand the significance of the quoted paragraph.<br></blockquote><div><br></div><div>I don't either.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
[And in either case, it's the number of atomic buffers, not counters -<br>
you can have multiple counters in a single buffer.]<br>
<span class=""><br>
><br>
> Signed-off-by: Lionel Landwerlin <<a href="mailto:lionel.g.landwerlin@intel.com">lionel.g.landwerlin@intel.com</a><wbr>><br>
> Cc: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
> ---<br>
>  src/mesa/drivers/dri/i965/<wbr>gen7_l3_state.c | 3 ++-<br>
>  1 file changed, 2 insertions(+), 1 deletion(-)<br>
><br>
> diff --git a/src/mesa/drivers/dri/i965/<wbr>gen7_l3_state.c b/src/mesa/drivers/dri/i965/<wbr>gen7_l3_state.c<br>
> index 92e8788..fdaea81 100644<br>
> --- a/src/mesa/drivers/dri/i965/<wbr>gen7_l3_state.c<br>
> +++ b/src/mesa/drivers/dri/i965/<wbr>gen7_l3_state.c<br>
> @@ -55,7 +55,8 @@ get_pipeline_state_l3_weights(<wbr>const struct brw_context *brw)<br>
>           prog ? prog->_LinkedShaders[stage_<wbr>states[i]->stage] : NULL;<br>
>        const struct brw_stage_prog_data *prog_data = stage_states[i]->prog_data;<br>
><br>
> -      needs_dc |= (prog && prog->NumAtomicBuffers) ||<br>
> +      needs_dc |= (prog && (prog->NumAtomicBuffers ||<br>
> +                            prog->NumShaderStorageBlocks)) ||<br>
>           (shader && shader->NumImages) ||<br>
>           (prog_data && prog_data->total_scratch);<br>
>        needs_slm |= prog_data && prog_data->total_shared;<br>
> --<br>
> 2.9.3<br>
><br>
</span>> ______________________________<wbr>_________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</blockquote></div><br></div></div>