summaryrefslogtreecommitdiffstats
path: root/tools/gfx/metal
Commit message (Collapse)AuthorAge
* Correct incorrect enum usage on metal (#6994)Ellie Hermaszewska2025-05-05
|
* Implement parameter block to slang-gfx for Metal backend (#6577)kaizhangNV2025-04-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * implement parameterblock for metal Metal uses argument buffer to pass parameter buffer to pipeline, in this change, we implement a simple way to copy the data to argument buffer. In argument buffer tier2 rule, all the fields in parameter block will be flatten to ordinary data, therefore - we keep the m_data as in ShaderObjectImpl a CPU buffer to track on the data set in. - For resource types, they will be represeted as device pointer or resource id in argument buffer, we will just set their address or id at corresponsing offset in the CPU buffer every time when 'setResource' or 'setSampler' is called. - When binding the pipeline, we just simply copy the CPU argument buffer to GPU argument buffer. - The only special case is nested parameter block. Because nested parameter block is represented as a device pointer which will be another argument buffer, we will just recursively call `_ensureArgumentBufferUpToDate` to get sub-object's argument buffer, and fill the GPU address of those 'sub'-argument buffer to the root argument buffer at correct offset. * Inform command encoder to hazard track the bindless resources Since for all the resources within argument buffer are bindless, Metal won't automatically hazard track those resources, we will have to call 'useResources' to inform Metal to hazard track those resources, otherwise we will have to call wait fence after each command submission. * nullptr check * address comment
* Fix precompiledTargetModule tests (#6455)cheneym22025-02-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix precompiledTargetModule tests Add SPIRV-Tool linker support to gfx unit tests and use the linker in precompileModule tests that use precompiled modules to reconstitute SPIRV shaders that were modularly compiled. Fix a Slang reference count bug in the precompile service. * Use sm_6_6 New DXC requires higher version for linkability. * Rename helper function, pass by reference * Link through slang-glslang * Add missing files * Fix metal * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> Co-authored-by: Yong He <yonghe@outlook.com>
* Add implementation for 'uploadTextureData' in metal (#6443)kaizhangNV2025-02-24
| | | | | | | | | Close issue: #6386. - Implement uploadTextureData in metal - Fix a bug in 'copyTextureToBuffer' in metal The last parameter for Metal::copyFromTexture is the 'destinationBytesPerImage', but previous implementation fill in the destination size which is wrong in 3-D texture.
* Metal fix (#6413)kaizhangNV2025-02-20
| | | | | | | | | | | Partially fix #6378 * Fix invalid access mode for texture_buffer * Fix texture view create issue in metal In newTextureView, levelRange should represent the mipmap level range, while sliceRange should represent the texture layer range for texture array. But the implement inverse those two wrongly.
* Fix metal issue (#6361)kaizhangNV2025-02-14
| | | | | | | | | | | | | * Fix metal issue - implement waitForFences for metal backend - fix a bug that it misses clear the entryPoints when initializing RootShaderObject * format --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Correct include dir for libslang (#5539)Ellie Hermaszewska2024-11-13
| | | | | | | | This stops adding the repo root to the include path for anything linking with slang. This enabled a bunch of convenient includes, but might lead to confusing behavior for anyone including slang. Not to mention differences including it from an install vs source. Co-authored-by: Yong He <yonghe@outlook.com>
* Move switch statement bodies to their own lines (#5493)Ellie Hermaszewska2024-11-05
| | | | | | | | | * Move switch statement bodies to their own lines * format --------- Co-authored-by: Yong He <yonghe@outlook.com>
* formatEllie Hermaszewska2024-10-29
| | | | | | | * format * Minor test fixes * enable checking cpp format in ci
* Support parameter block in metal shader objects. (#4671)Yong He2024-07-19
| | | | | | | | | | | | | * Support parameter block in metal shader objects. * Ingore parameter block tests on devices without tier2 argument buffer. * Fix warning. * Fix texture subscript test. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* gfx/metal uniform data binding and memory leak fix. (#4644)Yong He2024-07-15
| | | Co-authored-by: Yong He <yhe@nvidia.com>
* [gfx] Metal improvements (#4337)skallweitNV2024-06-11
| | | | | | | | | | | | | | | | | * fix binding resources for render pass * compute vertex buffer binding offset based on root layout * fix result code * cleanup * implement readTextureResource * more getNativeHandle --------- Co-authored-by: Yong He <yonghe@outlook.com>
* [gfx] Metal texture fixes (#4331)skallweitNV2024-06-11
|
* [gfx] Metal graphics support (#4324)skallweitNV2024-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix double semicolons * fix another double semicolon * wait for init data upload * remove obsolete setData * refactor swapchain to work on virtual back buffers * buffer/texture use breakable device reference * refactor input layout * create render command encoder * add todo * refactor framebuffer layout * refactor framebuffer * refactor shader program * translatePrimitiveType * add more translate functions * refactor framebuffer * refactor render pass * implement graphics pipeline state * add depth stencil state * initial render command encoder support * comment
* work on gfx metal backend (#4287)skallweitNV2024-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * implement sampler state * implement input layout * implement fence object * buffer implementation * texture implementation * cleanup * add adapter enumeration * supported formats and allocation info * work on device and implement readBufferResource * skeleton for transient resource heap * initial work on command queue / buffers / encoders * fix uploading initial buffer data * implement buffer resource view * string utility functions * wip query pool implementation * cleanup * swapchain * wip * remove plain buffer view * extend gfxGetDeviceTypeName with metal * basic support for resource binding with compute shaders * needed for metal bindings * replace assert(0) with SLANG_UNIMPLEMENTED_X
* [gfx] metal backend skeleton (#4223)Simon Kallweit2024-05-27
* add metal-cpp submodule * add metal-cpp cmake target * gfx metal backend skeleton * add premake support * add foundation framework * add metal-cpp include to premake * update vs project file --------- Co-authored-by: Simon Kallweit <skallweit@nvidia.com> Co-authored-by: Jay Kwak <82421531+jkwak-work@users.noreply.github.com>