summaryrefslogtreecommitdiffstats
path: root/tools/gfx/vulkan/render-vk.cpp
Commit message (Collapse)AuthorAge
* Vulkan validation error fixes (#2254)lucy96chen2022-06-01
| | | | | * Fixed Vulkan validation errors for incorrect layer counts and view types in Debug * Removed old (and empty) render-vk files; Ran premake.bat
* Split render-vk.h/.cpp into a set of smaller files (#2244)lucy96chen2022-05-26
| | | | | | | * Some preliminary work on splitting render-vk * render-vk split, tests currently crash on null reference * fixed circular include
* Various vulkan/glsl fixes. (#2222)Yong He2022-05-05
| | | | | | | | | | | | * 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>
* Changed all uses of attachment (in the context of render/depth stencil ↵lucy96chen2022-05-04
| | | | | targets) to target (#2214) Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com>
* GFX renaming work part 2: slang-gfx.h renames (#2194)lucy96chen2022-04-21
| | | | | | | | | | | | | * 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
* GFX renaming work part 1 (#2183)lucy96chen2022-04-14
| | | | | * 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
* Texture views/shapes tests part 1 (#2179)lucy96chen2022-04-07
| | | | | | | * 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
* Add additional texture to texture copying tests (#2165)lucy96chen2022-03-21
| | | | | | | | | | | | | | | | | | | * 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
* gfx: restructure render-vk.cpp (#2157)Yong He2022-03-09
| | | Co-authored-by: Yong He <yhe@nvidia.com>
* gfx: restructure render-d3d12.cpp (#2154)Yong He2022-03-09
| | | | | | | | | | | | | | | | | * 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>
* GFX Vulkan: deferred shader compilation and pipeline creation. (#2153)Yong He2022-03-08
| | | | | | | * Vulkan: deferred shader compilation and pipeline creation. * Fix 32bit build. Co-authored-by: Yong He <yhe@nvidia.com>
* Expose API-specific row alignment values (#2151)lucy96chen2022-03-08
| | | | | | | * 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>
* Use GLSL scalar layout for constant buffers. (#2147)Yong He2022-02-28
|
* Improved SCCP, inlining and resource specialization passes, legalize ↵Yong He2022-02-25
| | | | `ImageSubscript` for GLSL (#2146)
* Add isOccluded() and setFullScreenMode() to ISwapchain (#2145)lucy96chen2022-02-25
| | | | | | | * 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
* gfx: d3d12 performance optimizations. (#2140)Yong He2022-02-23
| | | | | | | | | | | * 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>
* gfx: defer downstream shader compilation until draw/dispatch. (#2139)Yong He2022-02-20
| | | Co-authored-by: Yong He <yhe@nvidia.com>
* Optimize d3d12 mutable shader object implementation. (#2138)Yong He2022-02-19
| | | | | | | | | | | | | * 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>
* Added implementations for IFence::getSharedHandle() for Vulkan and D3D12 (#2137)lucy96chen2022-02-18
| | | Co-authored-by: Yong He <yonghe@outlook.com>
* Fully implement the ray tracing pipeline for Vulkan (#2136)lucy96chen2022-02-18
| | | | | | | | | | | | | | | | | * 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()
* Various gfx fixes. (#2132)Yong He2022-02-16
| | | | | | | | | | | | | | | * 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>
* Fix linux gfx issue (#2131)jsmall-nvidia2022-02-15
| | | | | | | | | | | | | | | * #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.
* gfx: Various Vulkan fixes. (#2129)Yong He2022-02-11
| | | | | | | | | * gfx: Various Vulkan fixes. * Fix test case. * Fix vulkan crash. Co-authored-by: Yong He <yhe@nvidia.com>
* gfx: Add `resolveQuery` command. (#2125)Yong He2022-02-10
| | | Co-authored-by: Yong He <yhe@nvidia.com>
* Various fixes to gfx. (#2120)Yong He2022-02-09
| | | | | | | | | | | * Various fixes to gfx. * Fix. * Fixes. * Fix. Co-authored-by: Yong He <yhe@nvidia.com>
* Added a simple test for getFormatSupportedResourceStates() (#2118)lucy96chen2022-02-09
| | | | | | | | | | | * 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
* Add gfx interop to allow more direct D3D12 usage scenarios. (#2117)Yong He2022-02-03
| | | | | | | | | | | | | * 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>
* Added Vulkan implementation for createRayTracingPipelineState() (#2109)lucy96chen2022-02-03
| | | | | | | | | * 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>
* Added Vulkan implementation of getFormatSupportedResourceStates() (#2108)lucy96chen2022-02-03
| | | | | | | * 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>
* Set numerous fields in VKDevice::createGraphicsPipelineState using the ↵lucy96chen2022-01-27
| | | | | | | | | | | | | 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>
* Add implementations for resolveResource() to D3D12 and Vulkan backends (#2094)lucy96chen2022-01-25
| | | | | | | | | * 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)
* GFX: seperated ShaderTable. (#2090)Yong He2022-01-21
|
* Vulkan implementations for copyTexture, copyTextureToBuffer, and ↵lucy96chen2022-01-19
| | | | | | | | | | | | | | | | | | | | | | | | textureSubresourceBarrier (#2080) * Added preliminary implementations for Vulkan's copyTexture, copyTextureToBuffer, and textureSubresourceBarrier * Simple copyTexture test working * Expanded test to use textureSubresourceBarrier() to change resource states before copying out to a buffer; Changed copyTextureToBuffer() to assert that only a single mip level is being copied; Test passes on Vulkan only * Fixed an incorrect loop condition in D3D12's textureSubresourceBarrier and changed the size of the results buffer to pre-account for padding; Test runs in D3D12 but does not pass * D3D12 test working, compareComputeResult for buffers now takes an offset into the results * Refactored texture copying tests * Second test written but does not copy correctly * Fixed texture creation in D3D12 to take into account the subresource index when copying texture data so it actually copies all slices instead of just the ones in the first array layer; Second test working on both D3D12 and Vulkan * Added a note for future tests to be added for texture copying; Fixed build errors in CUDA Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: Theresa Foley <tfoleyNV@users.noreply.github.com>
* Various fixes to GFX, nested parameter block test for d3d12. (#2081)Yong He2022-01-14
| | | | | | | | | | | | | * Various fixes. * Add nested parameter block test. * Remove slang-llvm licence info * Ingore slang-llvm/ directory. * Fixup. Co-authored-by: Yong He <yhe@nvidia.com>
* Various fixes to gfx. (#2074)Yong He2022-01-10
| | | | | | | * Various gfx fixes. * Fixup. Co-authored-by: Yong He <yhe@nvidia.com>
* Draw call tests for Vulkan (#2073)lucy96chen2022-01-10
| | | | | | | | | | | | | | | | | | | | | | | | | * Added instancing support to Vulkan, drawInstanced() test image is upside-down * Fixed inverted drawInstanced() test output by changing Vulkan viewport convention * Replaced vkCmdDraw with vkCmdDrawIndexed in all non-indirect indexed draws, drawIndexedIndirect test now working for Vulkan * Moved index and vertex buffer binding into setIndexBuffer and setVertexBuffers; Defaulted countBuffer to nullptr and countOffset to 0 and added a check for non-null countBuffer to drawIndirect and drawIndexedIndirect in Vulkan; All Vulkan draw tests working (but D3D12 tests broken) * Added support for drawInstanced and drawIndexedInstanced to D3D11 and added tests for both, however D3D11 tests are currently disabled due to readTextureResource assuming a fixed pixel size (among other possible problems); Fixed issues causing D3D12 tests to fail after major back-end fixes to get Vulkan up and running * Removed testing function for dumping images and some other commented out code * Removed some commented out code * Fix initializer list causing builds to fail (attempt 1) * Removed initializer list for VertexStreamDesc in createInputLayout() and fill in struct fields normally (build fix attempt 2) * Removed default values from VertexStreamDesc and changed all initializer lists to reflect this change * Moved applyBinding before setVertexBuffer in RenderTestApp::renderFrame() to ensure the pipeline has already been bound before vertex buffers are * Changed D3D11's readTextureResource to calculate pixel size using format-specific size information; Removed wrapper around D3D11 instanced and indexed instanced draw tests
* Buffer allocation backend. (#2045)ZanderMajercik2022-01-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * removed initialization of upload resource for CPU visible buffers (D3D12, Vulkan) * reverted slang-gfx.h change * declared DescBase::hasCpuAccessFlag() const to make backend changes compile under gcc * commit before checking master branch * commit before merge * commit before checking master * commit before merging upstream * revert vulkan changes * commit before testing on master * commit before merge with master * reverted bad merge changes * reverted more bad merge changes in render-d3d12.cpp * reverted buffer transition in _uploadBufferData * implemented bufferBarrier() in render-d3d12.cpp * reverted uneccesary transition in createBuffer * create staging buffer even when AccessFlag::None passed to D3D11 createBufferResource * renamed AccessFlags to MemoryType Co-authored-by: Yong He <yonghe@outlook.com>
* Fixes to `uploadTextureData`. (#2058)Yong He2021-12-13
| | | | | | | * Fixes to `uploadTextureData`. * Fix, Co-authored-by: Yong He <yhe@nvidia.com>
* gfx: Implement `setSamplePositions`. (#2056)Yong He2021-12-13
| | | | | | | | | | | * gfx: Implement remaining resource commands on D3D12. Includes: `textureBarrier`, `copyTexture`, `uploadTextureData`, `copyTextureToBuffer`, and `textureSubresourceBarrier`. * gfx: Implement `CurrentSize` query. * gfx: Implement `setSamplePositions`. Co-authored-by: Yong He <yhe@nvidia.com>
* gfx: use uint32_t in draw calls and implement current size query. (#2055)Yong He2021-12-13
| | | | | | | | | * gfx: Implement remaining resource commands on D3D12. Includes: `textureBarrier`, `copyTexture`, `uploadTextureData`, `copyTextureToBuffer`, and `textureSubresourceBarrier`. * gfx: Implement `CurrentSize` query. Co-authored-by: Yong He <yhe@nvidia.com>
* Implement instanced and indirect draw calls (#2053)lucy96chen2021-12-09
| | | | | | | | | | | | | | | | * Added implementations of drawInstanced, drawIndexedInstanced, drawIndirect, and drawIndexedIndirect to both render-d3d12 and render-vk * drawInstanced test WIP * Draw calls implemented, working on debugging test * Added new test and accompanying shader file * Fixes. * Fixes. Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: Yong He <yonghe@outlook.com>
* Remove `PipelineType` from gfx header. (#2051)Yong He2021-12-09
| | | Co-authored-by: Yong He <yhe@nvidia.com>
* gfx: Implement `claerResourceView`. (#2052)Yong He2021-12-09
|
* gfx Fence implementation improvements. (#2049)Yong He2021-12-08
|
* D3D12 and Vulkan to CUDA Texture Sharing (#2038)lucy96chen2021-12-08
|
* gfx: D3D12 and VK Fence implementation. (#2048)Yong He2021-12-07
| | | | | | | | | | | | | * gfx: D3D12 and VK Fence implementation. * Fix. * Update project files. * Revert project file changes. * Remove project files Co-authored-by: Yong He <yhe@nvidia.com>
* Fix shader-toy example. (#2047)Yong He2021-12-06
| | | Co-authored-by: Yong He <yhe@nvidia.com>
* gfx Mutable Root shader object implementation. (#2042)Yong He2021-12-06
| | | | | | | * gfx Mutable Root shader object implementation. * Fix x86 build. Co-authored-by: Yong He <yhe@nvidia.com>
* gfx: Add more fixed function states and instancing draw calls. (#2023)Yong He2021-11-22
| | | | | | | | | | | | | * gfx: Add more fixed function states and instancing draw calls. * Fix clang error. * Fix clang. * Fixes. * Add `AccelerationStructureCurrentSize` enum. Co-authored-by: Yong He <yhe@nvidia.com>
* gfx: add coverage for more resource commands. (#2020)Yong He2021-11-18
| | | | | | | | | | | | | | | * gfx: specify SubresourceRange for resource view creation. * Add gfx method for `resolveResource`. * Fix compile error. * `copyTextureToBuffer` and `textureSubresourceBarrier`. * Fix vulkan bug. * Fix test cras;h. Co-authored-by: Yong He <yhe@nvidia.com>