[Mesa-dev] [PATCH] anv: fix Get*MemoryRequirements for !LLC

Connor Abbott cwabbott0 at gmail.com
Tue Feb 14 17:35:00 UTC 2017


On Tue, Feb 14, 2017 at 12:33 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> On Tue, Feb 14, 2017 at 9:23 AM, Connor Abbott <cwabbott0 at gmail.com> wrote:
>>
>> Even though we supported both coherent and non-coherent memory types, we
>> effectively forced apps to use the coherent types by accident. Found by
>> inspection, only compile tested.
>>
>> Signed-off-by: Connor Abbott <cwabbott0 at gmail.com>
>> ---
>> I sent this out a while ago, but it seems like it was lost.
>> ---
>>  src/intel/vulkan/anv_device.c | 14 ++++++++------
>>  1 file changed, 8 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
>> index 46b83a3..57d70b6 100644
>> --- a/src/intel/vulkan/anv_device.c
>> +++ b/src/intel/vulkan/anv_device.c
>> @@ -1554,11 +1554,12 @@ VkResult anv_InvalidateMappedMemoryRanges(
>>  }
>>
>>  void anv_GetBufferMemoryRequirements(
>> -    VkDevice                                    device,
>> +    VkDevice                                    _device,
>>      VkBuffer                                    _buffer,
>>      VkMemoryRequirements*                       pMemoryRequirements)
>>  {
>>     ANV_FROM_HANDLE(anv_buffer, buffer, _buffer);
>> +   ANV_FROM_HANDLE(anv_device, device, _device);
>>
>>     /* The Vulkan spec (git aaed022) says:
>>      *
>> @@ -1567,20 +1568,21 @@ void anv_GetBufferMemoryRequirements(
>>      *    only if the memory type `i` in the
>> VkPhysicalDeviceMemoryProperties
>>      *    structure for the physical device is supported.
>>      *
>> -    * We support exactly one memory type.
>> +    * We support exactly one memory type on LLC, two on non-LLC.
>>      */
>> -   pMemoryRequirements->memoryTypeBits = 1;
>> +   pMemoryRequirements->memoryTypeBits = device->info.has_llc ? 1 : 3;
>
>
> Is it two or three?  The comment and code don't match.

It's a bitfield. See the comment above.

>
>>
>>
>>     pMemoryRequirements->size = buffer->size;
>>     pMemoryRequirements->alignment = 16;
>>  }
>>
>>  void anv_GetImageMemoryRequirements(
>> -    VkDevice                                    device,
>> +    VkDevice                                    _device,
>>      VkImage                                     _image,
>>      VkMemoryRequirements*                       pMemoryRequirements)
>>  {
>>     ANV_FROM_HANDLE(anv_image, image, _image);
>> +   ANV_FROM_HANDLE(anv_device, device, _device);
>>
>>     /* The Vulkan spec (git aaed022) says:
>>      *
>> @@ -1589,9 +1591,9 @@ void anv_GetImageMemoryRequirements(
>>      *    only if the memory type `i` in the
>> VkPhysicalDeviceMemoryProperties
>>      *    structure for the physical device is supported.
>>      *
>> -    * We support exactly one memory type.
>> +    * We support exactly one memory type on LLC, two on non-LLC.
>>      */
>> -   pMemoryRequirements->memoryTypeBits = 1;
>> +   pMemoryRequirements->memoryTypeBits = device->info.has_llc ? 1 : 3;
>>
>>     pMemoryRequirements->size = image->size;
>>     pMemoryRequirements->alignment = image->alignment;
>> --
>> 2.9.3
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
>


More information about the mesa-dev mailing list