Version 0.5: HLSL++ Math, Graphics API Optimizations, Automated Static Code Analysis, Tests Code Coverage, Code Improvements and Refactoring #85
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.
-
Methane/Exceptions.hppwas added with common exception type defintionsMethane/Checks.hppwas added with error checking macro definitions akaMETA_CHECK*META_LOGmacros has been updated to make string formatting using FMT library inside of the macro using variadic argumentsRawVectortemplate class was added as a replacement ofcml::vectorfor dense-packed components storage used in vertex attributes.Pointtemplate class now use underlying HLSL++ vector and unifies 2D and 3D implementations.RectandRectSize,VolumeandVolumeSizeclasses were refactored. Made class fields private, available through accessors.Constantstemplate class was added with math constants.AppBaseclass, moved from platform specific classesProgram::ArgumentandProgram::ArgumentAccessor(previouslyProgram::ArgumentDesc) were refactored from struct to class style with field accesor functions.Program::Argument::Modifiersbit-mask was replaced withProgram::ArgumentAccessor::Typeenum.Program::ArgumentAccessor::Type::FrameConstantto reduce number of excessive argument binding setup calls. Frame-constant bindings are properly supported by DX descriptor table layout.ProgramBindings::Createfunction as an optional argument to support frame-constant bindings.ProgramBindingsDX.COPYcomamnd queue is now used by default forBlitCommandListexecution in DirectX (instead ofDIRECTcommand queue used before). So the resources upload is also done with a COPY queue in DX now. It can be switched back to usingDIRECTqueue withRenderContext::Settings::options_maskbit-mask flagContext::Options::BlitWithDirectQueueOnWindows.Resource::SetDatamethod is extended with an optional argument of command queue for resource state synchronization. Command queue where resource is actually used should be passed whenever possible.Resource::SetDatamethod implementations to theSetProgramBindings,SetVertexBufferandSetIndexBuffercalls, while setup resource barriers are still cached insideResourceobject.Resource::StateandResource::Barrierstypes were moved to the public header files and split fromResourceinterface definition.CommandKitinterface was added to Graphics Core to provide unified access fromContext::GetDefaultCommandKitto the command queue, command lists, command list set and synchronization fences made for working together with the sameCommandList::Type. This interface allowed to replace methodsContext::GetUploadCommandQueue,Context::GetUploadCommandList,Context::GetUploadCommandListSetandRenderContext::GetRenderCommandQueuewithContext::GetDefaultCommandKit.CommandListchanges:CommandList::SetResourceBarriers(...)call was added to the public interface (was private before).RenderCommandListchanges:RenderCommandList::ResetWithStateOncemethod was added additionally toResetWithStateto skip command list reset when it is already inEncodingstate with the sameRenderStatealready applied.RenderCommandList::SetIndexBuffersmethod was adedd, index buffer is now set separately fromDrawIndexedcall.RenderCommandList::Set[Index|Vertex]Buffersmethods were exnteded with an optional argument which allows to disable setting resource barriers automatically.ParallelRenderCommandListchanges:ImageLoadernow initializes texture names insideLoadfunctions.ResourceBasederived classes hierarchy based on template implementation ofResource[DX|MT|VK]<ResourceBaseType>which is replacingResourceNTalias classNativeplatform alias headersDeviceandContextreferences passed to core interface factory functionsGraphics::Apptemplate class implementation was split toGraphics::AppBaseto reduce template code and speedup compilationColortemplate class was rewritten from scratch and now can use both integer and floating point components via underlying HLSL++ vector storageArcBallCameraunit-tests were improved and uncovered some issues in tested class implementation. Issues were fixedSphereMeshgeneration was simplified with matrix-free implementationUnitTypederived classes implementation within one template classTextrendering is now callingResetWithStateOnceinstead ofResetWithStateto minimize rendering state resets in sequence of several text blocksRawVector,Pointnew template classes were covered with unit-tests.RectandRectSize,VolumeandVolumeSizeexisting template classes were covered with unit-tests.Colortemplate class was covered with unit-tests.UnitTypetemplate class was covered with unit tests.UserInterface::Contextclass unit convertors were covered with unit tests.FakeRenderContextclass was added to UI unit-testing infrastructure.ParseAndAddCatchTestsCMake function withcatch_discover_teststo fix Catch warnings.enumcode bloat and improve type safety withenum classtypes:enum classtypes for bit-masks instead of rawenumtypes to improve type safety.META_CHECK*macroses throwing specific exception types, which simplified error checking code and fixed many issues related to non-specific exception throws across Methane code basedefaultbranches of allswitchblocks to fix repeated analysis issuestd::functionusage with template arguments wherever possible to improve performancefmt::format(...)for string formatting wherever possible project widemagic_enumlibrary to replace rawenumtypes of bit-masks toenum classtypes, use enum names and counts generated in compile time.std::map::try_emplaceinstead ofstd::map::emplacestd::byteinstead ofuint8_tandcharfor byte-access to memory buffersforloops over elements ofstd::map[[nodiscard]]attribute for constant methods like gettersstd::string_viewin some cases for input string argumentsifandswitchstatementsscoped_lockinstead oflock_guardOpenCppCoveragetool, on MacOS withllvm-profdataand on Linux withGcov(closed Setup code coverage results collection with Azure Pipelines and Sonar Cloud #72)This discussion was created from the release Version 0.5: HLSL++ Math, Graphics API Optimizations, Automated Static Code Analysis, Tests Code Coverage, Code Improvements and Refactoring.
Beta Was this translation helpful? Give feedback.
All reactions