Skip to main content
GameDev.net gamedev.net

PRO Tired of ads? Read GameDev.net ad-free and help keep the community independent with GameDev Pro — $3/month.

k
khawk Member News
· 7 years, 5 months ago

Flax Engine Adds Vulkan Support

Briefing

<p> <a href=https://flaxengine.com/blog/flax-facts-25-vulkan/ rel="external nofollow">Flax Engine</a> has announced their upcoming <a href=/articles/programming/graphics/a-practical-approach-to-managing-resource-states-in-vulkan-and-direct3d12-r5027/ rel>Vulkan renderer support</a>. </p> <p> With the addition, Flax now supports DirectX 11, DirectX 12, and Vulkan. Over DirectX 11, the Vulkan renderer reduces CPU utilization up to 10%, is faster than the DirectX 12 renderer, and they have future performance improvements planned. Flax also plans to remove their OpenGL backend in favor of Vulkan, which they view as particularly important for mobile platforms where Vulkan is much faster than OpenGL ES. </p> <p> From the announcement: </p> <blockquote class=ipsQuote data-ipsquote> <div class=ipsQuote_citation> Quote </div> <div class="ipsQuote_contents ipsClearfix"> <p style="background-color:#ffffff; color:#666666; font-size:14px; padding:0px; text-align:start"> Having<span> </span><strong>stable Vulkan graphics backend is a notable milestone</strong><span> </span>that moves us closer towards adding support for more platforms (who wants<span> </span><em>Flax Editor for Linux</em>?). </p> <div style="background-color:#ffffff; color:#666666; font-size:14px; text-align:start"> <figure><img alt="Vulkan Rendering" data-attachment-id=1263 data-comments-opened=1 data-image-description data-image-meta='{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}' data-image-title="Vulkan Rendering" data-imageproxy-source=https://flaxengine.com/wp-content/uploads/2019/04/vulkan_rendering.png data-large-file=https://flaxengine.com/wp-content/uploads/2019/04/vulkan_rendering.png data-medium-file=https://flaxengine.com/wp-content/uploads/2019/04/vulkan_rendering-300x102.png data-orig-file=https://flaxengine.com/wp-content/uploads/2019/04/vulkan_rendering.png data-orig-size=767,262 data-permalink=https://flaxengine.com/blog/flax-facts-25-vulkan/vulkan_rendering/ sizes="(max-width: 767px) 100vw, 767px" src="https://flaxengine.com/wp-content/uploads/2019/04/vulkan_rendering.png&key=9437675b8bd3be9552e8a5da21fa948ae710ba222c38b3d5edbe92c567745a6f" srcset="https://flaxengine.com/wp-content/uploads/2019/04/vulkan_rendering.png&key=9437675b8bd3be9552e8a5da21fa948ae710ba222c38b3d5edbe92c567745a6f 767w, https://flaxengine.com/wp-content/uploads/2019/04/vulkan_rendering-300x102.png&key=84ef9eb99617167bc284714a7ddb88039e105889c6628e6affefb93a84a13529 300w" style="border:0px; vertical-align:middle"><figcaption style="color:#555d66; font-size:13px; text-align:center"> Vulkan implementation in Flax </figcaption></figure> </div> <p style="background-color:#ffffff; color:#666666; font-size:14px; padding:0px; text-align:start"> Under the hood, we use<span> </span><a aria-label="volk (opens in a new tab)" href=https://github.com/zeux/volk rel="external nofollow" style="background-color:transparent; color:#30337d" target=_blank>volk<span> </span></a>for loading<span> </span>entrypoints,<span> </span><a aria-label="Vulkan Memory Allocator (opens in a new tab)" href=https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator rel="external nofollow" style="background-color:transparent; color:#30337d" target=_blank>Vulkan Memory Allocator</a><span> </span>from AMD to improve GPU resources allocation and<span> </span><a aria-label="glslang (opens in a new tab)" href=https://github.com/KhronosGroup/glslang rel="external nofollow" style="background-color:transparent; color:#30337d" target=_blank>glslang<span> </span></a>to compile our HLSL shaders into SPIR-V.<span> </span><br><br> The current implementation supports full graphics pipeline and compute shaders (only stream-output and counter buffers are missing). We use descriptors pool manager to reuse descriptor set layouts and optimized pipeline binding to reduce API calls. The pipeline state objects are cached on request and reused later which reduces memory usage. Also using ring-buffer for uniforms data reduces descriptors changes due to dynamic offset assignment that is more efficient. </p> </div> </blockquote> <p> Learn more <a href=https://flaxengine.com/blog/flax-facts-25-vulkan/ rel="external nofollow">here</a>. </p>

Discuss

Game development news without the noise

One useful weekly briefing. No daily flood.

Sending your confirmation email…

Discussion

Loading comments...