Version 0.6: Vulkan API and Linux support #95
egorodet
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Vulkan API support for Windows and Linux was added in this release:
vertex_id
for triangle rendering.HelloCubeUniforms
tutorial version (underUNIFORMS_BUFFER_ENABLED
define) implements vertices transformation on GPU using MVP matrix stored in uniforms buffer and program bindings object.TextureLabeler
helper class was added to libraryMethaneAppsCommon
with shared implementation of text labels rendering to texture cube/array faces.Asteroids
sample can be changed now with new single-key shortcuts:0 .. 9
Events
library inEmitter
andReceiver
classes.Platform::AppLin
implementation based on X11/XCB libraries for Linux was added (close Linux platform support #11), which allows to create GUI Window for rendering on Linux desktop with support of:Input::Keyboard::State
andInput::Mouse::State
conversion to string was fixed, more functionality of these classes was covered with unit tests.SystemVK
,DeviceVK
,RenderContextVK
,FrameBufferTextureVK
,RenderPassVK
,RenderPatternVK
,ShaderVK
,ProgramVK
,RenderStateVK
,ViewStateVK
,CommandListVK
,RenderCommandListVK
,FenceVK
,BufferVK
,FrameBufferTextureVK
,DepthStencilTextureVK
,RenderTargetTextureVK
,ImageTextureVK
,SamplerVK
,ProgramBindingsVK
,ResourceBarriersVK
,ParallelRenderCommandListVK
,TimestampQueryBufferVK
,TimestampQueryVK
. classes.vulkan.hpp
C++ wrappers with support of dynamic dispatch table, which allows to build withoutVulkan SDK
libraries.vk::Unique*
wrappers are used to automatically release Vulkan objects in RAII style.DeviceVK
class.RenderCommandListVK
setup all Vulkan pipeline barriers before render pass begin by using secondary command buffer for recording all synchronisation commands separately from render pass commands in primary buffer.ImageTextureVK
has mip-maps generation implemented on GPU.RenderPattern
class was added to represent render pass attachments configuration without binding to particular resources (wrapper ofvk::Renderpass
).RenderPass
was updated accordingly to get configuration fromRenderPattern
and bind attachment resources.RenderPattern
instance was added toRenderState
settings.Device::Capabilities
struct was added with the required command queues count and other configuration flags, required due to Vulkan specifics.CommandQueueTrackingBase
class was added to share command queue execution tracking logic between DirectX and Vulkan implementations.RenderContextDX
implementation is now using waitable object to reduce DXGI swap-chain latency.System
singleton is now destroyed strictly after all itsDevices
to enable correct Vulkan destruction order.ResourceState
enumeration was simplified: stateVertexAndConstantBuffer
was split toVertexBuffer
andConstantBuffer
states; statesNonPixelShaderResource
andPixelShaderResource
were merged into one stateShaderResource
.Resource::SetOwnerQueueFamily(..)
andResourceBarriers::[Add|Remove]OwnerTransition(...)
interfaces and implemented ownership transition for Vulkan resources.ResourceLocation
interface was renamed toResourceView
, extended with settings of sub-resource index, count, size, offset and reworked internally for DirectX and Vulkan to support multiple views handling for a single resource.StructuredBuffer
in DirectX.DescriptorByUsage
argument, which was previously used to restore DirectX descriptors after resource recreation on previous location in heaps to let bindings work.DeviceDX
class.TimestampQueryBuffer
andTimestampQuery
objects inCommandListBase
class.Methane/TracyGpu.hpp
with Tracy v0.8 (was broken after update). Added reference Tracy GPU instrumentation viaTracyD3D12.hpp
header under macro definitionMETHANE_GPU_INSTRUMENTATION_ENABLED == 2
inCommandListDX.hpp
(value1
is reserved for Methane GPU instrumentation).METHANE_GPU_PROFILING_ENABLED=ON
:CommandList::Reset()
, while they should be cleared onCommandList::Commit()
.Context::Reset()
by always using deferred heap allocation in all cases. Deferred heap initialisation flag was removed, since it became unconditionally deferred.CommandQueueTrackingBase::WaitForExecution()
CommandQueueTrackingBase
with proper shutdown procedure called from destructor of derived class.Camera::Resize
method arguments were changed to useFrameSize
andFloatSize
structures, which simplify its calls from theApp::Resize
method.Graphics/Mesh
module was split fromGraphics/Primitives
.SkyBox
extension is now usingCubeMesh
instead ofSphereMesh
for sky rendering.Text::HorizontalAlignment::Justify
mode was added to support horizontal text justification.HeadsUpDisplay
: Graphics API name is now displayed in HUD .Text
repeated buffer updates in deferred mode.Point<T,size>
wrapper class was extended with workarounds of MacOS & ARM specific bugs in HLSL++ integer vector comparison and division operators (see 1 and 2).Point
,Rect
andRectSize
values was added inDataTypes
unit tests.Settings
structures for initialization convenience.Build/Output/ExternalsCache
by default (it can be changed with CMake optionCPM_SOURCE_CACHE
).README.md
description of the external dependencies was added inExternals
directory.Vulkan-Headers
was updated to v1.3.219SPIRV-Cross
was added v1.3.216.0DirectXCompiler
was updated to v1.6.2104 to support SPIRV generation on Windows and new binaries for LinuxDirectXTex
was updated to v1.9.6Catch2
updated to v3.1.0CLI11
updated to v2.2.0CMRC
updated to 2021-08-27FMT
updated to v8.1.1FreeType2
updated to v2.12.1IttApi
updated to v3.23.0MagicEnum
was updated to v0.8.0TaskFlow
was updated to v3.4.0STB
updated to 2021-09-10Tracy
updated to v0.8.2.1CMakeModules
updated with support for auto-detecting new Windows SDK versions, including Win11 2110 SDK (closed build error in Windows #87)CMakeLists.txt
was simplified by moving all compiler configuration options toCMake/MethaneBuildOptions.cmake
.METHANE_GFX_VULKAN_ENABLED
was added to enable Vulkan build on Windows.CMakePresets.json
file was added with predefined configure and build presets for "Ninja Multi-Config" and platform native generators "Visual Studio 16 2019", "Xcode" and "Unix Makefiles".add_methane_shaders_source
to compiler shaders file andadd_methane_shaders_library
to add compiled shaders to application resources (seeCMake/MethaneShaders.cmake
)CMakeSettings.json
.CMakePresets.json
should be used instead.MethaneShaders
enable compilation of HLSL shaders to SPIRV for Vulkan graphics API using new DirectX Compiler (DXC) version.Ubuntu_VK_Profiling
build was added to Azure Pipelines.Build/Windows/Build.bat
andBuild/Posix/Build.sh
were extended with convenience command line options, including--vulkan
,--debug
,--graphviz
,--analyze
and others.Folder.DotSettings
and.editorconfig
from repository.MoltenVK
library, unfortunately it does not work due to some unsupported Vulkan extensions which are required by Methane Kit.Profile
CMake presets same as in SonarCloud analysis builds in Azure Pipelines.README.md
toBuild/README.md
.This discussion was created from the release Version 0.6: Vulkan API and Linux support.
Beta Was this translation helpful? Give feedback.
All reactions