summaryrefslogtreecommitdiff
path: root/tools
AgeCommit message (Collapse)Author
2022-05-26Split render-vk.h/.cpp into a set of smaller files (#2244)lucy96chen
* Some preliminary work on splitting render-vk * render-vk split, tests currently crash on null reference * fixed circular include
2022-05-18Support for querying which parameters are used in emitted code (#2239)Alexey Panteleev
See https://github.com/shader-slang/slang/issues/2213
2022-05-17Split render-d3d12.h/cpp into a set of smaller files (#2231)lucy96chen
* Split render-d3d12 into numerous smaller files to make the code easier to parse * Added all new D3D12 files created from splitting render-d3d12 * Fixed several uses of attachment still floating around; Changed resource-d3d12 and descriptor-heap-d3d12 to match naming conventions of new d3d12 implementation header files * Readded files with name changes because changing them from inside VS apparently results in them being treated as new files * Merged in externals changes from master * Small cleanup changes * Rerun CI Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com>
2022-05-05Various vulkan/glsl fixes. (#2222)Yong He
* Various vulkan/glsl fixes. * Fix. * Fix. * Canonicalize type constraints for name mangling. Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com>
2022-05-04Changed all uses of attachment (in the context of render/depth stencil ↵lucy96chen
targets) to target (#2214) Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com>
2022-04-27gfx: Add interop API to control descriptor heap binding. (#2211)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-04-21GFX renaming work part 2: slang-gfx.h renames (#2194)lucy96chen
* Fixed all build errors and type conversion warnings from renames in slang-gfx.h * Made necessary build fixes to the CUDA implementation * Renamed ITextureResource::Size to ITextureResource::Extents * More rename changes based on CI errors * More renames to fix CI build errors * Rerun tests
2022-04-21Made translation units visible to transitive `import`s. (#2197)Yong He
2022-04-19Make translation units in the same CompileReq visible to `import`. (#2184)Yong He
* Make translation unitts in the same CompileReq visible to `import`. * Fix code review comments. Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com>
2022-04-14GFX renaming work part 1 (#2183)lucy96chen
* Added new typedefs for Size, Offset, Count, and Index; Replaced numerous instances of size_t in slang-gfx.h, render-d3d12, render-vk, and renderer-shared with either Size or Offset; Fixed compiler warnings for mismatched numerical types * Renamed Index and Count to GfxIndex and GfxCount, changed to 32 bit from 64 bit
2022-04-12Support `[DllImport]` (#2181)Yong He
* Support `[DllImport]` * Fix. * Fix. * Fix array type emit in cpp. * Fix. * Fix. * Fix Co-authored-by: Yong He <yhe@nvidia.com>
2022-04-07Texture views/shapes tests part 1 (#2179)lucy96chen
* Framework for texture views testing working; Small tweaks to texture testing utils; Changed D3D12 readTextureResource to account for non-1 depth * Basic framework for texture views tests working; Test file needs a rename at some point * 1D, 2D, and 3D textures working for ShaderResource, UnorderedAccess, and RenderTarget tests; Fixed some small issues with handling the depth field of 3D textures in Vulkan causing incorrectly cleared textures
2022-03-28Allow slangc to generate exe from .slang file. (#2170)Yong He
2022-03-24Separated out new texture-related structures and texture data generation ↵lucy96chen
from texture copying tests into a new util file to make them accessible to all gfx unit tests (#2169)
2022-03-24C++ extractor parsing slang.h (#2162)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Split doc extractor such that can be used in C++ extractor. * Compiles. Update the stdlib docs. * Fix issue on release builds. * Add support for extracting documentation to C++ extractor. * Dump out markup. Make enum value backing type take tokens. * Node::Type -> Node::Kind * More improvements around Node::Type -> Node::Kind * Support for parsing callable types. * Fix issue params for callable, and default value for variable. * Add support for static. * Improve handling parsing of contained types. * Small improvements around template consumption. * Improve dumping with markup/static. * Small improvements around reflection. * Add more flexible handling of markers. Allow reflection without markers. * Handling external "C" unsigned/signed
2022-03-21Add additional texture to texture copying tests (#2165)lucy96chen
* Working on finding a better way to do result comparisons in order to accommodate testing different formats and texture types, copying small to large texture currently half broken * All tests except copying into a buffer with an offset working with new code for results comparison, support for most formats WIP * Replaced SubresourceStuff with ValidationTextureData; Added implementation for ValidationTextureFormat::initializeTexel() and changed generateTextureData() to call this * All implemented formats work on D3D12, a few broken for Vulkan * Fixed numerous locations in render-vk.cpp to set aspect masks based on either the format or the provided TextureAspect; All tests except copy to buffer with offset working on new code structure * All texture to texture copying tests work for all non-compressed formats; Test code cleaned up to minimize the amount of stuff needing to be passed between functions * All tests working with all texture types except TextureCube and all non-compressed formats; Temporarily removing test for copying to a buffer at an offset, will likely return in a separate test file * Small cleanup changes * build fixes
2022-03-15C++ extractor callable support (#2159)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Split doc extractor such that can be used in C++ extractor. * Compiles. Update the stdlib docs. * Fix issue on release builds. * Add support for extracting documentation to C++ extractor. * Dump out markup. Make enum value backing type take tokens. * Node::Type -> Node::Kind * More improvements around Node::Type -> Node::Kind * Support for parsing callable types. * Fix issue params for callable, and default value for variable. * Add support for static. * Improve handling parsing of contained types. * Small improvements around template consumption. * Improve dumping with markup/static. * Small improvements around reflection. * Add more flexible handling of markers. Allow reflection without markers.
2022-03-14Small fix in d3d12 transient heap. (#2160)Yong He
Use `ShortList` instead of `Array` for `m_waitHandles`. Co-authored-by: Yong He <yhe@nvidia.com>
2022-03-11gfx: Add `ITransientResourceHeap::finish()` to avoid `Signal` after every ↵Yong He
queue submit. (#2158) Co-authored-by: Yong He <yhe@nvidia.com>
2022-03-09gfx: restructure render-vk.cpp (#2157)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-03-09Initial support for documentation extraction in C++ (#2156)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Split doc extractor such that can be used in C++ extractor. * Compiles. Update the stdlib docs. * Fix issue on release builds. * Add support for extracting documentation to C++ extractor. * Dump out markup. Make enum value backing type take tokens. * Node::Type -> Node::Kind * More improvements around Node::Type -> Node::Kind
2022-03-09gfx: restructure render-d3d12.cpp (#2154)Yong He
* Vulkan: deferred shader compilation and pipeline creation. * Fix 32bit build. * gfx: restructure the code in render-d3d12.cpp * Move `Submitter`. * Fix. * merge with master. * Revert dictionary change in previous PR. Co-authored-by: Yong He <yhe@nvidia.com>
2022-03-08GFX Vulkan: deferred shader compilation and pipeline creation. (#2153)Yong He
* Vulkan: deferred shader compilation and pipeline creation. * Fix 32bit build. Co-authored-by: Yong He <yhe@nvidia.com>
2022-03-08Expose API-specific row alignment values (#2151)lucy96chen
* Added function to IDevice that retrieves the row alignment for the particular API; Added rowDstStride argument to copyTextureToBuffer and changed D3D12 footprint row pitch to check that the user-supplied stride is correctly aligned before assigning to the footprint's row pitch * Changed alignment from Uint to size_t Co-authored-by: jsmall-nvidia <jsmall@nvidia.com>
2022-02-28Use GLSL scalar layout for constant buffers. (#2147)Yong He
2022-02-25Improved SCCP, inlining and resource specialization passes, legalize ↵Yong He
`ImageSubscript` for GLSL (#2146)
2022-02-25Add isOccluded() and setFullScreenMode() to ISwapchain (#2145)lucy96chen
* Added isOccluded() and setFullScreenMode() to ISwapchain and provided implementations for D3D12 (all others currently return false) * Removed isWindowOccluded variable and directly return the result of m_swapchain3->Present * Restart CI
2022-02-23gfx: d3d12 performance optimizations. (#2140)Yong He
* gfx: d3d12 performance optimizations. * Fix. * Fix unit test bug. * Add gfx interface for directly allocating GPU descriptor tables. Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-20gfx: defer downstream shader compilation until draw/dispatch. (#2139)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-19Optimize d3d12 mutable shader object implementation. (#2138)Yong He
* Optimize d3d12 mutable shader object implementation. * Disable mismatched clear value warning message from d3d sdk. * Fix. * Fix. * gfx: Avoid redundant d3d12 QueryInterface call. Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-18Added implementations for IFence::getSharedHandle() for Vulkan and D3D12 (#2137)lucy96chen
Co-authored-by: Yong He <yonghe@outlook.com>
2022-02-18Fully implement the ray tracing pipeline for Vulkan (#2136)lucy96chen
* Added implementation for dispatchRays() and ShaderTableImpl, currently missing extensions and createShaderTable() * Code written, working on finding and fixing bugs * SBT issues fixed; Added implementation for endEncoding() to ensure the bound pipeline is properly reset; Ray tracing pipeline example successfully runs without any validation errors * Fixed some incorrectly merged lines * Fixed spacing * Fixed alignment for member variables in VulkanApi * Restart CI * Removed accidental comment kept from merge; Changed getName() call to getNameOverride()
2022-02-17Add target option to force `scalar` layout for storage buffers. (#2135)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-16Various gfx fixes. (#2132)Yong He
* Various gfx fixes. * Fix test case. * Fix crash. * Trigger build * Trigger build 2 * Fix vulkan unit tests. Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-15Fix linux gfx issue (#2131)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Fix linux build issue with renderer-shared.h * Move to .cpp file. * Move some templates to stop definition order issue on linux. * Move to header because it's templated. * Fix warning about GeometryInstanceFlags::Enum flags : 8; being too small by making the enum backed by 8 bits. * Check if vkDestroySampler function is available.
2022-02-11gfx: Various Vulkan fixes. (#2129)Yong He
* gfx: Various Vulkan fixes. * Fix test case. * Fix vulkan crash. Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-10OSX CI Test (#2126)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Small fixes. Added compiler crash with generic defined in a function. Added enum-flags test that works (by limiting backing type to int), and using __EnumType constraint. * Add comment about crash. * Disable crashing test. * Fixes to make compile on OSX. * Add github build for OSX. * Make premake generator a utility. * Fix osx compilation issue. * More fixes for OSX build. * OSX fix due to ambiguity around size_t and integer types. * Disable xlib on build on osx. * Use 'prebuildcommands' to make prebuild make utility projects do something. * Small fixes for premake so utility works on linux/osx. * Another hack to try and make generators run when 'utility' * Fix typo in macos.yml. * Revert premake to old style, and disable stdlib embedding on OSX. * OSX testing. * Fix pipe handling for OSX. * Enable testing on OSX. * Small fix because uname -p is not x64 on darwin.
2022-02-10gfx: Add `resolveQuery` command. (#2125)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-10gfx: support shader record overwrite and fix QueryPool. (#2123)Yong He
* Various fixes to gfx. * Fix. * Fixes. * Fix. * gfx: support root parameter via user-defined attribute. * Fix. * Fix. * Skip d3d12 tests on win x86. * Fixes. * gfx: support shader record overwrite. * Fix QueyPool implementation. * Rename to `getBindingRangeLeafVariable` Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-10gfx: support d3d12 root parameters (#2122)Yong He
* Various fixes to gfx. * Fix. * Fixes. * Fix. * gfx: support root parameter via user-defined attribute. * Fix. * Fix. * Skip d3d12 tests on win x86. * Fixes. Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: jsmall-nvidia <jsmall@nvidia.com>
2022-02-10Fix MacOSX build issues (#2124)jsmall-nvidia
* #include an absolute path didn't work - because paths were taken to always be relative. * Small fixes. Added compiler crash with generic defined in a function. Added enum-flags test that works (by limiting backing type to int), and using __EnumType constraint. * Add comment about crash. * Disable crashing test. * Fixes to make compile on OSX. * Add github build for OSX. * Make premake generator a utility. * Fix osx compilation issue. * More fixes for OSX build. * OSX fix due to ambiguity around size_t and integer types. * Disable xlib on build on osx. * Use 'prebuildcommands' to make prebuild make utility projects do something. * Small fixes for premake so utility works on linux/osx. * Another hack to try and make generators run when 'utility' * Fix typo in macos.yml. * Revert premake to old style, and disable stdlib embedding on OSX.
2022-02-09Various fixes to gfx. (#2120)Yong He
* Various fixes to gfx. * Fix. * Fixes. * Fix. Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-09Added a simple test for getFormatSupportedResourceStates() (#2118)lucy96chen
* Checkpoint * Fixed problem with global variables in supported resource states test, test is functional for both Vulkan and D3D12 * Removed a comment * Added a loop over all existing formats * Rerun tests
2022-02-03Add gfx interop to allow more direct D3D12 usage scenarios. (#2117)Yong He
* Add gfx interop to allow more direct D3D12 usage scenarios. * Fix compile error in win32. * gfx: Implement IFence::getNativeHandle() on d3d12. * More GFX-D3D interop interface. * Fix cuda. Co-authored-by: Yong He <yhe@nvidia.com>
2022-02-03Added Vulkan implementation for createRayTracingPipelineState() (#2109)lucy96chen
* preliminary work on createRayTracingPipelineState for Vulkan * more stuff added to createRayTracingPipelineState * Finished filling in all necessary fields for createRayTracingPipelineState() for Vulkan Co-authored-by: Yong He <yonghe@outlook.com>
2022-02-03Added Vulkan implementation of getFormatSupportedResourceStates() (#2108)lucy96chen
* Prelim work on getFormatSupportedResourceStates * Mostly extended getFormatSupportedResourceStates to cover currently existing resource states, no testing included yet Co-authored-by: Theresa Foley <tfoleyNV@users.noreply.github.com>
2022-02-01GFX: Add API interception mechanism for pipeline creation. (#2115)Yong He
This allows the user application to intercept API calls to create pipeline states. This feature can be used to integrate NVAPI in the user application. Co-authored-by: Yong He <yhe@nvidia.com>
2022-01-27Set numerous fields in VKDevice::createGraphicsPipelineState using the ↵lucy96chen
information in GraphicsPipelineStateDesc (#2098) * Added some TODO comments * Replaced numerous hard-coded fields in createGraphicsPipelineState in render-vk.cpp with values pulled from the provided GraphicsPipelineStateDesc; Added missing fields and multiple comments for fields that do not have an equivalent in gfx or work differently between D3D12 and Vulkan * Reversed front facing enums * Added a case that handles blending not being enabled so the color write mask is still defined Co-authored-by: Theresa Foley <tfoleyNV@users.noreply.github.com>
2022-01-25gfx: Allow null entries in shader table. (#2096)Yong He
Co-authored-by: Yong He <yhe@nvidia.com>
2022-01-25Add implementations for resolveResource() to D3D12 and Vulkan backends (#2094)lucy96chen
* Added implementations for resolveResource to both D3D and Vulkan backends * Simple test for resolving a multisampled resource written and confirmed to run successfully for D3D12 * Fixed a bug preventing MSAA from working in Vulkan * Changed test format to RGBA32 Float (because swiftshader)