[Mesa-dev] [PATCH] r600g: Include SH and SMX when invalidating read caches

Alex Deucher alexdeucher at gmail.com
Sun Jun 23 10:41:42 PDT 2013


On Sat, Jun 22, 2013 at 11:53 AM, Martin Andersson <g02maran at gmail.com> wrote:
> On Sat, Jun 22, 2013 at 12:22 PM, Marek Olšák <maraeo at gmail.com> wrote:
>> Reviewed-by: Marek Olšák <maraeo at gmail.com>
>>
>> BTW, SMX is a write cache, to maybe it shouldn't be part of this patch.
>
> I made a little experiment where i ran
> "ext_framebuffer_multisample-unaligned-blit 4 color downsample -auto"
> 10000 times and found that without SMX the test failed 177 times and
> with SMX it didn't fail at all. So I do think the SMX cache should be
> invalidated somewhere.
>
> Before http://cgit.freedesktop.org/mesa/mesa/commit/?id=4539f8e20af286d1f521eb016c89c6d9af0b801c
> it was under R600_CONTEXT_FLUSH_AND_INV, is that a better place?
>
> If that is the proper place for SMX should SH also be there, since it
> was also there before the patch, or do you have any other suggestions?

Does something like this help?  You might play with some variants of
this patch.  This might break compute however as Tom had some problems
with CB flushes on cayman class hw in the past.

Alex


>
>> Marek
>>
>> On Sun, Jun 16, 2013 at 1:27 PM, Martin Andersson <g02maran at gmail.com> wrote:
>>> Not including the SH and SMX caches when invalidating read caches causes
>>> random failures on some piglit tests when VA is enabled.
>>>
>>> Since the failures are random, and there other problems also causing random
>>> failures, it's hard to know exactly what tests were effected, but these
>>> tests now consistently pass:
>>>
>>> fast_color_clear/all-colors
>>> fast_color_clear/redundant-clear
>>> spec/!OpenGL 1.1/draw-pixels samples={2,4,6,8}
>>> spec/!OpenGL 1.1/drawbuffer-modes
>>> ---
>>>  src/gallium/drivers/r600/r600_hw_context.c | 2 ++
>>>  1 file changed, 2 insertions(+)
>>>
>>> diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c
>>> index 944b666..df20e56 100644
>>> --- a/src/gallium/drivers/r600/r600_hw_context.c
>>> +++ b/src/gallium/drivers/r600/r600_hw_context.c
>>> @@ -231,6 +231,8 @@ void r600_flush_emit(struct r600_context *rctx)
>>>         if (rctx->flags & R600_CONTEXT_INVAL_READ_CACHES) {
>>>                 cp_coher_cntl |= S_0085F0_VC_ACTION_ENA(1) |
>>>                                 S_0085F0_TC_ACTION_ENA(1) |
>>> +                               S_0085F0_SH_ACTION_ENA(1) |
>>> +                               S_0085F0_SMX_ACTION_ENA(1) |
>>>                                 S_0085F0_FULL_CACHE_ENA(1);
>>>                 emit_flush = 1;
>>>         }
>>> --
>>> 1.8.3
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-r600g-adjust-flush-flags.patch
Type: text/x-patch
Size: 4499 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130623/3d08b216/attachment.bin>


More information about the mesa-dev mailing list