March 2018

The two different GUI rendering strategies at PasVulkan with the Vulkan API

Admittedly, the Vulkan API calls could potentially be further optimized and merged.

The Vulkan header generator and Vulkan header of PasVulkan is from this time point on also Vulkan 1.1 ready now

The Vulkan header generator and Vulkan header of PasVulkan are from this time point on also Vulkan 1.1 ready now, which took me about an hour to tweak and fix the PasVulkan Vulkan header generator for the new vk.xml format changes and vk.xml format additions. So have fun! 🙂

Mali T760 MP8 non-working-fragment-discarding issue workarounded

PasVulkan GUI subframework Mali T760 MP8 non-working-fragment-discarding issue is workarounded with VK_DYNAMIC_STATE_SCISSOR now.



Fragment-based discarding clipping issues on Mali GPUs

Mali T760 on Galaxy S6 seems to ignore the GLSL discard command regardless of whether "layout (early_fragment_tests) in;" is defined or not, and Mali seems doesn't support gl_ClipDistance[] in contrast to Adreno and Tegra mobile GPUs.

On mobile GPUs, the PasVulkan GUI renderer uses Z-Buffer-based front-to-back rendering for opaque objects like widgets centers, and back-to-front rendering for transparent objects like widget edges, text, icons, and so on.

And on normal Desktop/Notebook iGPUs/dGPUs the PasVulkan GUI renderer uses brute-force only-alpha-blended back-to-front rendering, because it is faster there than the two-pass-optimization-technique for mobile GPUs but it seems, that at least Mali GPUs has a problem with that two-pass-optimization-technique.

All in all, The PasVulkan GUI renderer uses gl_ClipDistance if it's supported, otherwise it uses fragment discards.

You can see the problem with a Mali GPU and a comparison with a Tegra GPU at


(Galaxy S6 with ARM Mali T760 MP8)

vs


(NVIDIA Tablet K1 with NVIDIA … (read more)