[Mesa-dev] [PATCH] gallium/radeon: add a debug flag not to use write combining
Christian König
deathsimple at vodafone.de
Thu Aug 6 08:17:13 PDT 2015
> can we disable HDP flushes and other flushes for
> USWC when we don't use write
> combining and CPU writes to VRAM?
Nope, write combining happens in the CPU before the write request is
send over the PCIe bus.
The HDP is a (rather small) read/write cache in GPUs memory controller
as far as I know.
Regards,
Christian.
On 06.08.2015 17:09, Marek Olšák wrote:
> On a related note, can we disable HDP flushes and other flushes for
> USWC when we don't use write
> combining and CPU writes to VRAM? Maybe by adding a per-IB flag that
> would instruct the
> kernel to flush or not flush HDP?
>
> Marek
>
> On Wed, Aug 5, 2015 at 4:18 AM, Michel Dänzer <michel at daenzer.net> wrote:
>> On 03.08.2015 21:36, Marek Olšák wrote:
>>> From: Marek Olšák <marek.olsak at amd.com>
>>>
>>> ---
>>> src/gallium/drivers/radeon/r600_buffer_common.c | 6 ++++--
>>> src/gallium/drivers/radeon/r600_pipe_common.c | 1 +
>>> src/gallium/drivers/radeon/r600_pipe_common.h | 1 +
>>> 3 files changed, 6 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/src/gallium/drivers/radeon/r600_buffer_common.c b/src/gallium/drivers/radeon/r600_buffer_common.c
>>> index fc5f6c2..d5ee188 100644
>>> --- a/src/gallium/drivers/radeon/r600_buffer_common.c
>>> +++ b/src/gallium/drivers/radeon/r600_buffer_common.c
>>> @@ -111,7 +111,8 @@ bool r600_init_resource(struct r600_common_screen *rscreen,
>>>
>>> switch (res->b.b.usage) {
>>> case PIPE_USAGE_STREAM:
>>> - flags = RADEON_FLAG_GTT_WC;
>>> + if (!(rscreen->debug_flags & DBG_NO_WC))
>>> + flags = RADEON_FLAG_GTT_WC;
>>> /* fall through */
>>> case PIPE_USAGE_STAGING:
>>> /* Transfers are likely to occur more often with these resources. */
>>> @@ -133,7 +134,8 @@ bool r600_init_resource(struct r600_common_screen *rscreen,
>>> default:
>>> /* Not listing GTT here improves performance in some apps. */
>>> res->domains = RADEON_DOMAIN_VRAM;
>>> - flags |= RADEON_FLAG_GTT_WC;
>>> + if (!(rscreen->debug_flags & DBG_NO_WC))
>>> + flags |= RADEON_FLAG_GTT_WC;
>>> break;
>>> }
>> I think it would be both simpler and safer to mask out
>> RADEON_FLAG_GTT_WC after all the code which sets the various flags.
>>
>>
>> --
>> Earthling Michel Dänzer | http://www.amd.com
>> Libre software enthusiast | Mesa and X developer
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list