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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Vulkan API support for Windows and Linux was added in this release:
vertex_idfor triangle rendering.HelloCubeUniformstutorial version (underUNIFORMS_BUFFER_ENABLEDdefine) implements vertices transformation on GPU using MVP matrix stored in uniforms buffer and program bindings object.TextureLabelerhelper class was added to libraryMethaneAppsCommonwith shared implementation of text labels rendering to texture cube/array faces.Asteroidssample can be changed now with new single-key shortcuts:0 .. 9Eventslibrary inEmitterandReceiverclasses.Platform::AppLinimplementation 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::StateandInput::Mouse::Stateconversion 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.hppC++ wrappers with support of dynamic dispatch table, which allows to build withoutVulkan SDKlibraries.vk::Unique*wrappers are used to automatically release Vulkan objects in RAII style.DeviceVKclass.RenderCommandListVKsetup 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.ImageTextureVKhas mip-maps generation implemented on GPU.RenderPatternclass was added to represent render pass attachments configuration without binding to particular resources (wrapper ofvk::Renderpass).RenderPasswas updated accordingly to get configuration fromRenderPatternand bind attachment resources.RenderPatterninstance was added toRenderStatesettings.Device::Capabilitiesstruct was added with the required command queues count and other configuration flags, required due to Vulkan specifics.CommandQueueTrackingBaseclass was added to share command queue execution tracking logic between DirectX and Vulkan implementations.RenderContextDXimplementation is now using waitable object to reduce DXGI swap-chain latency.Systemsingleton is now destroyed strictly after all itsDevicesto enable correct Vulkan destruction order.ResourceStateenumeration was simplified: stateVertexAndConstantBufferwas split toVertexBufferandConstantBufferstates; statesNonPixelShaderResourceandPixelShaderResourcewere merged into one stateShaderResource.Resource::SetOwnerQueueFamily(..)andResourceBarriers::[Add|Remove]OwnerTransition(...)interfaces and implemented ownership transition for Vulkan resources.ResourceLocationinterface 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.StructuredBufferin DirectX.DescriptorByUsageargument, which was previously used to restore DirectX descriptors after resource recreation on previous location in heaps to let bindings work.DeviceDXclass.TimestampQueryBufferandTimestampQueryobjects inCommandListBaseclass.Methane/TracyGpu.hppwith Tracy v0.8 (was broken after update). Added reference Tracy GPU instrumentation viaTracyD3D12.hppheader under macro definitionMETHANE_GPU_INSTRUMENTATION_ENABLED == 2inCommandListDX.hpp(value1is 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()CommandQueueTrackingBasewith proper shutdown procedure called from destructor of derived class.Camera::Resizemethod arguments were changed to useFrameSizeandFloatSizestructures, which simplify its calls from theApp::Resizemethod.Graphics/Meshmodule was split fromGraphics/Primitives.SkyBoxextension is now usingCubeMeshinstead ofSphereMeshfor sky rendering.Text::HorizontalAlignment::Justifymode was added to support horizontal text justification.HeadsUpDisplay: Graphics API name is now displayed in HUD .Textrepeated 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,RectandRectSizevalues was added inDataTypesunit tests.Settingsstructures for initialization convenience.Build/Output/ExternalsCacheby default (it can be changed with CMake optionCPM_SOURCE_CACHE).README.mddescription of the external dependencies was added inExternalsdirectory.Vulkan-Headerswas updated to v1.3.219SPIRV-Crosswas added v1.3.216.0DirectXCompilerwas updated to v1.6.2104 to support SPIRV generation on Windows and new binaries for LinuxDirectXTexwas updated to v1.9.6Catch2updated to v3.1.0CLI11updated to v2.2.0CMRCupdated to 2021-08-27FMTupdated to v8.1.1FreeType2updated to v2.12.1IttApiupdated to v3.23.0MagicEnumwas updated to v0.8.0TaskFlowwas updated to v3.4.0STBupdated to 2021-09-10Tracyupdated to v0.8.2.1CMakeModulesupdated with support for auto-detecting new Windows SDK versions, including Win11 2110 SDK (closed build error in Windows #87)CMakeLists.txtwas simplified by moving all compiler configuration options toCMake/MethaneBuildOptions.cmake.METHANE_GFX_VULKAN_ENABLEDwas added to enable Vulkan build on Windows.CMakePresets.jsonfile 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_sourceto compiler shaders file andadd_methane_shaders_libraryto add compiled shaders to application resources (seeCMake/MethaneShaders.cmake)CMakeSettings.json.CMakePresets.jsonshould be used instead.MethaneShadersenable compilation of HLSL shaders to SPIRV for Vulkan graphics API using new DirectX Compiler (DXC) version.Ubuntu_VK_Profilingbuild was added to Azure Pipelines.Build/Windows/Build.batandBuild/Posix/Build.shwere extended with convenience command line options, including--vulkan,--debug,--graphviz,--analyzeand others.Folder.DotSettingsand.editorconfigfrom repository.MoltenVKlibrary, unfortunately it does not work due to some unsupported Vulkan extensions which are required by Methane Kit.ProfileCMake presets same as in SonarCloud analysis builds in Azure Pipelines.README.mdtoBuild/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