[Mesa-dev] [PATCH 4/4] gallium/radeon: align alignments for better buffer reuse

Michel Dänzer michel at daenzer.net
Mon May 9 08:04:57 UTC 2016


On 09.05.2016 17:02, Bas Nieuwenhuizen wrote:
> On Mon, May 9, 2016 at 5:59 AM, Michel Dänzer <michel at daenzer.net> wrote:
>> On 08.05.2016 21:21, Marek Olšák wrote:
>>> From: Marek Olšák <marek.olsak at amd.com>
>>>
>>> ---
>>>  src/gallium/winsys/amdgpu/drm/amdgpu_bo.c     | 1 +
>>>  src/gallium/winsys/radeon/drm/radeon_drm_bo.c | 1 +
>>>  2 files changed, 2 insertions(+)
>>>
>>> diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
>>> index eb28ba9..ed12f30 100644
>>> --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
>>> +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
>>> @@ -470,6 +470,7 @@ amdgpu_bo_create(struct radeon_winsys *rws,
>>>      * like constant/uniform buffers, can benefit from better and more reuse.
>>>      */
>>>     size = align64(size, ws->info.gart_page_size);
>>> +   alignment = align(alignment, ws->info.gart_page_size);
>>>
>>>     /* Only set one usage bit each for domains and flags, or the cache manager
>>>      * might consider different sets of domains / flags compatible
>>> diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
>>> index b24964f..b07afe6 100644
>>> --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
>>> +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
>>> @@ -732,6 +732,7 @@ radeon_winsys_bo_create(struct radeon_winsys *rws,
>>>       * like constant/uniform buffers, can benefit from better and more reuse.
>>>       */
>>>      size = align(size, ws->info.gart_page_size);
>>> +    alignment = align(alignment, ws->info.gart_page_size);
>>>
>>>      /* Only set one usage bit each for domains and flags, or the cache manager
>>>       * might consider different sets of domains / flags compatible
>>>
>>
>> This is superfluous: ws->info.gart_page_size is the CPU page size. TTM
>> only tracks BOs at CPU page size granularity, so all BOs implicitly have
>> this alignment. For GPUVM, since we're aligning the BO size, all VM
>> address spaces we assign are implicitly aligned as well.
> 
> That alignment does get used by the buffer cache though, which does
> not implicitly align on page sizes. The buffer cache only gives
> buffers that have the exact same alignment as the request and with
> this patch the number of different alignments that can be used in the
> buffer cache is reduced.

I see. Maybe something along those lines can be added to the commit log,
but either way this patch is

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>

as well.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the mesa-dev mailing list