[Mesa-dev] [PATCH 3/3] radeonsi: cache flush/invalidation for missing PIPE_BARRIER_*_BUFFER bits
Marek Olšák
maraeo at gmail.com
Mon Mar 21 19:39:11 UTC 2016
On Mon, Mar 21, 2016 at 5:35 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> On 21.03.2016 06:07, Marek Olšák wrote:
>>
>> On Sat, Mar 19, 2016 at 4:37 AM, Nicolai Hähnle <nhaehnle at gmail.com>
>> wrote:
>>>
>>> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>>>
>>> This fixes arb_shader_image_load_store-host-mem-barrier.
>>> ---
>>> src/gallium/drivers/radeonsi/si_state.c | 7 +++++--
>>> 1 file changed, 5 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/src/gallium/drivers/radeonsi/si_state.c
>>> b/src/gallium/drivers/radeonsi/si_state.c
>>> index 6dcd532..4093921 100644
>>> --- a/src/gallium/drivers/radeonsi/si_state.c
>>> +++ b/src/gallium/drivers/radeonsi/si_state.c
>>> @@ -3535,7 +3535,9 @@ static void si_memory_barrier(struct pipe_context
>>> *ctx, unsigned flags)
>>> if (flags & (PIPE_BARRIER_VERTEX_BUFFER |
>>> PIPE_BARRIER_SHADER_BUFFER |
>>> PIPE_BARRIER_TEXTURE |
>>> - PIPE_BARRIER_IMAGE)) {
>>> + PIPE_BARRIER_IMAGE |
>>> + PIPE_BARRIER_INDEX_BUFFER |
>>> + PIPE_BARRIER_STREAMOUT_BUFFER)) {
>>
>>
>> The hw reads the index buffer via TC L2 on VI only. The index buffer
>> is uncached on older chips.
>>
>> I think this patch needs to flush TC L2 for PIPE_BARRIER_INDEX_BUFFER
>> if the chip family is not VI.
>
>
> You're right. What's your take on the question of invalidating L2 vs. only
> writing L2 back to memory? I think at least VI has a TCWB bit in the cache
> actions. That would be a separate change though.
Sorry, I don't know much about these other flags. My understanding of
the memory architecture is very basic.
Marek
More information about the mesa-dev
mailing list