vkh_cmd_end (dev->cmd);
_device_submit_cmd (dev, &dev->cmd, dev->fence);
}
-#define VKVG_SET_STENCIL_ASPECT dev->stencilAspectFlag = (dev->stencilFormat == VK_FORMAT_S8_UINT) ? VK_IMAGE_ASPECT_STENCIL_BIT : VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
void _device_check_best_image_tiling (VkvgDevice dev, VkFormat format) {
VkFlags stencilFormats[] = { VK_FORMAT_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT };
VkFormatProperties phyStencilProps = { 0 }, phyImgProps = { 0 };
LOG(VKVG_LOG_DEBUG, "vkvg create device failed: no suitable image format for png write\n");
dev->stencilFormat = VK_FORMAT_UNDEFINED;
+ dev->stencilAspectFlag = VK_IMAGE_ASPECT_STENCIL_BIT;
dev->supportedTiling = 0xff;
vkGetPhysicalDeviceFormatProperties(dev->phy, format, &phyImgProps);
vkGetPhysicalDeviceFormatProperties(dev->phy, stencilFormats[i], &phyStencilProps);
if (phyStencilProps.optimalTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) {
dev->stencilFormat = stencilFormats[i];
- VKVG_SET_STENCIL_ASPECT
+ if (i > 0)
+ dev->stencilAspectFlag |= VK_IMAGE_ASPECT_DEPTH_BIT;
dev->supportedTiling = VK_IMAGE_TILING_OPTIMAL;
return;
}
vkGetPhysicalDeviceFormatProperties(dev->phy, stencilFormats[i], &phyStencilProps);
if (phyStencilProps.linearTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) {
dev->stencilFormat = stencilFormats[i];
- VKVG_SET_STENCIL_ASPECT
+ if (i > 0)
+ dev->stencilAspectFlag |= VK_IMAGE_ASPECT_DEPTH_BIT;
dev->supportedTiling = VK_IMAGE_TILING_LINEAR;
return;
}