03-17-2016, 06:11 PM -
Actually the spec allows this for linear tiling :
In my case the driver reports linear tiling support for VK_IMAGE_USAGE_SAMPLED_BIT for RGBA8 format. Unfortunatly the mipLevel constraint applies.
The backend should not only check for VkFormatProperties::linearTilingFeatures bits but also calls vkGetPhysicalDeviceImageFormatProperties (https://www.khronos.org/registry/vulkan/...Properties ).
I tried to enforce optimal tiling for sampled image here :
https://github.com/RPCS3/rpcs3/blob/mast...e.cpp#L226
but then it crashes in this block:
https://github.com/RPCS3/rpcs3/blob/mast...e.cpp#L375
Quote:Images created with tiling equal to VK_IMAGE_TILING_LINEAR have further restrictions on their limits and capabilities compared to images created with tiling equal to VK_IMAGE_TILING_OPTIMAL. Creation of images with tiling VK_IMAGE_TILING_LINEAR may not be supported unless other parameters meet all of the constraints:
imageType is VK_IMAGE_TYPE_2D
format is not a depth/stencil format
mipLevels is 1
arrayLayers is 1
samples is VK_SAMPLE_COUNT_1_BIT
usage only includes VK_IMAGE_USAGE_TRANSFER_SRC_BIT and/or VK_IMAGE_USAGE_TRANSFER_DST_BIT
Implementations may support additional limits and capabilities beyond those listed above. To determine the specific capabilities of an implementation, query the valid usage bits by calling vkGetPhysicalDeviceFormatProperties and the valid limits for mipLevels and arrayLayers by calling vkGetPhysicalDeviceImageFormatProperties.
In my case the driver reports linear tiling support for VK_IMAGE_USAGE_SAMPLED_BIT for RGBA8 format. Unfortunatly the mipLevel constraint applies.
The backend should not only check for VkFormatProperties::linearTilingFeatures bits but also calls vkGetPhysicalDeviceImageFormatProperties (https://www.khronos.org/registry/vulkan/...Properties ).
I tried to enforce optimal tiling for sampled image here :
https://github.com/RPCS3/rpcs3/blob/mast...e.cpp#L226
but then it crashes in this block:
https://github.com/RPCS3/rpcs3/blob/mast...e.cpp#L375