[Mesa-dev] [PATCH 20/26] radeonsi: disable DCC on handle export if expecting write access
Marek Olšák
maraeo at gmail.com
Thu Mar 10 09:10:14 UTC 2016
On Thu, Mar 10, 2016 at 4:43 AM, Michel Dänzer <michel at daenzer.net> wrote:
> On 09.03.2016 20:29, Marek Olšák wrote:
>> On Wed, Mar 9, 2016 at 7:19 AM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
>>> On 02.03.2016 11:36, Marek Olšák wrote:
>>>>
>>>> @@ -318,6 +343,13 @@ static boolean r600_texture_get_handle(struct
>>>> pipe_screen* screen,
>>>> res->external_usage = usage;
>>>>
>>>> if (resource->target != PIPE_BUFFER) {
>>>> + /* Since shader image stores don't support DCC on
>>>> VI,
>>>> + * disable it for external clients that want write
>>>> + * access.
>>>> + */
>>>> + if (usage & PIPE_HANDLE_USAGE_WRITE)
>>>> + r600_texture_disable_dcc(rscreen, rtex);
>>>
>>>
>>> Have you considered keeping DCC enabled when the user sets the explicit
>>> flush flag and having flush_resource decompress for writably-shared
>>> resources?
>>
>> DCC decompression is a very costly operation and it's better to avoid
>> it if possible. Currently, DCC is only supported with non-displayable
>> surfaces, but all users of flush_resource (DRI2/3) only get
>> displayable surfaces. Thus, the driver doesn't have to worry about
>> flush_resource with DCC.
>
> I'm afraid it's not that simple. st/dri is used on Wayland as well, in
> which case buffers passed to flush_resource aren't generally
> displayable. See https://patchwork.freedesktop.org/patch/71713/ .
Yeah, I didn't take Wayland into account. I think it's broken, because
flush_resource doesn't decompress DCC, but we don't have to decompress
it if we set up DCC according to amdgpu metadata on handle import.
Marek
More information about the mesa-dev
mailing list