mirror of
https://github.com/rive-app/rive-cpp.git
synced 2026-01-18 13:11:19 +01:00
fix(vk): Only rely on implicit PowerVR raster ordering on Vulkan 1.3 (#11132) 4cdb5779cd
After testing a statistically significant number of devices (7, specifically!) I have concluded that implicit PowerVR raster ordering only works with Rive on Vulkan 1.3 contexts. Update our renderer accordingly. Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
This commit is contained in:
@@ -1 +1 @@
|
||||
19be344a5a7049529f7296ef3d2f3e6a99ca986d
|
||||
4cdb5779cd45ccbb2a5d351f5ae60d923a9d511a
|
||||
|
||||
@@ -742,13 +742,29 @@ RenderContextVulkanImpl::RenderContextVulkanImpl(
|
||||
break;
|
||||
|
||||
case VULKAN_VENDOR_ARM:
|
||||
case VULKAN_VENDOR_IMG_TEC:
|
||||
// This is undocumented, but raster ordering works on Mali and
|
||||
// PowerVR if you define a subpass dependency, even without
|
||||
// EXT_rasterization_order_attachment_access.
|
||||
// Raster ordering is known to work on ARM hardware, even on old
|
||||
// drivers without EXT_rasterization_order_attachment_access, as
|
||||
// long as you define a subpass self-dependency.
|
||||
m_platformFeatures.supportsRasterOrderingMode =
|
||||
!contextOptions.forceAtomicMode;
|
||||
break;
|
||||
|
||||
case VULKAN_VENDOR_IMG_TEC:
|
||||
// Raster ordering is known to work on IMG hardware, even without
|
||||
// EXT_rasterization_order_attachment_access, as long as you define
|
||||
// a subpass self-dependency.
|
||||
// IMG just can't expose the extension because they do _not_
|
||||
// guarantee raster ordering across samples, which is required by
|
||||
// the extension, but irrelevant to Rive.
|
||||
// THAT BEING SAID: while Google Chrome relies on implicit raster
|
||||
// ordering on all IMG devices, it has only been observed to work
|
||||
// with Rive on Vulkan 1.3 contexts (PowerVR Rogue GE9215 -- driver
|
||||
// 1.555, and PowerVR D-Series DXT-48-1536 (Pixel 10) -- driver
|
||||
// 1.602).
|
||||
m_platformFeatures.supportsRasterOrderingMode =
|
||||
!contextOptions.forceAtomicMode &&
|
||||
m_vk->features.apiVersion >= VK_API_VERSION_1_3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ while :; do
|
||||
-a|-a32)
|
||||
TARGET="android"
|
||||
DEFAULT_BACKEND=gl
|
||||
SERIAL="$(adb get-serialno)"
|
||||
SERIAL="$(adb get-serialno | sed 's/[:.]/_/g')"
|
||||
if [[ "$1" == "-a32" ]]; then
|
||||
ARGS="--android-arch arm"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user