diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-01-17 09:15:06 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-17 09:15:06 -0500 |
| commit | a8669ade5cb3add8b9ce08e2c3bd96e93190bca8 (patch) | |
| tree | 63be2fa7829c5bf956a5ce4d52af4e1d4073bf84 /tools/render-test/cpu-compute-util.cpp | |
| parent | 662721ba4ab0e38924701df4c876a86eb8390968 (diff) | |
Slang -> CUDA kernel runs correctly in test infrastructure (#1167)
* First pass at BindLocation.
* Added BindSet::init - for initializing with two input constant buffers. Needs better name, and perhaps should be another class.
* Fix handling of constant buffer stripping.
Improved initialization.
* Trying to generalize BindLocation a little more.
Split out CPULikeBindRoot.
* More work to make BindLocation et al work with non uniform bindings.
* Added parsing to a location.
* WIP: Trying to get CPU working with BindLocation.
* Describe problem of knowing the type of the reference point in the binding table.
* More ideas on getBindings fix.
* Remove BindSet as member of BindLocation.
* Added BindLocation::Invalid
* Made BindLocation able to be key in hash
* Use BindLocation for bindings on BindingSet.
* Added cuda and nvrtc categories to test infrastructure.
Disabled CUDA synthetic tests by default.
Fixed such that all tests now produce something in BindLocation style.
* Use m_userIndex instead of m_userData on Resource.
Move the binding setup out of cpu-compute-util (as no longer CPU specific)
* Removed CPUBinding - used BindLocation/BindSet instead.
Fixed some bugs around indexOf around uniform indirection.
* Renamed BindSet::Resource -> BindSet::Value.
* Document BindLocation.
* Fixes for Clang/GCC
Improve invariant requirement handling when constructing from BindPoints.
* WIP: First attempt to run CUDA kernel.
* Fix some issues around doing CUDA kernel launch.
* Fix issues around use of cudaMemCpy .
* Better cuda runtime error checking mechanism.
* Fixed bug in passing parameters to cuda kernel launch.
Simplified initialisation of context.
* WIP: Fix CUDA runtime issues.
* Add explicit CUDA synchronize so failures don't appear on implicit ones.
* Fix problem emitting non shared variable on CUDA.
* Fix some typos in CUDA layout.
Use just a pointer for now for CUDA StucturedBuffer.
* Arg order for CUDA launch was wrong.
* First compute kernel runs on CUDA.
Diffstat (limited to 'tools/render-test/cpu-compute-util.cpp')
| -rw-r--r-- | tools/render-test/cpu-compute-util.cpp | 53 |
1 files changed, 2 insertions, 51 deletions
diff --git a/tools/render-test/cpu-compute-util.cpp b/tools/render-test/cpu-compute-util.cpp index e94a6d6e1..2bb0baf88 100644 --- a/tools/render-test/cpu-compute-util.cpp +++ b/tools/render-test/cpu-compute-util.cpp @@ -15,42 +15,6 @@ namespace renderer_test { using namespace Slang; -/* static */SlangResult CPUComputeUtil::writeBindings(const ShaderInputLayout& layout, const List<BindSet::Value*>& buffers, const String& fileName) -{ - FILE * f = fopen(fileName.getBuffer(), "wb"); - if (!f) - { - return SLANG_FAIL; - } - - const auto& entries = layout.entries; - - for (int i = 0; i < entries.getCount(); ++i) - { - const auto& entry = entries[i]; - if (entry.isOutput) - { - BindSet::Value* buffer = buffers[i]; - - unsigned int* ptr = (unsigned int*)buffer->m_data; - - const int size = int(entry.bufferData.getCount()); - // Must be the same size or less than allocated buffer - SLANG_ASSERT(size * sizeof(unsigned int) <= buffer->m_sizeInBytes); - - for (int i = 0; i < size; ++i) - { - unsigned int v = ptr[i]; - - fprintf(f, "%X\n", v); - } - } - } - fclose(f); - return SLANG_OK; -} - - template <int COUNT> struct OneTexture2D : public CPUComputeUtil::Resource, public CPPPrelude::ITexture2D { @@ -109,21 +73,8 @@ static CPUComputeUtil::Resource* _newOneTexture2D(int elemCount) // Okay lets iterate adding buffers auto outStream = StdWriters::getOut(); SLANG_RETURN_ON_FAIL(ShaderInputLayout::addBindSetValues(compilationAndLayout.layout.entries, compilationAndLayout.sourcePath, outStream, outContext.m_bindRoot)); - - { - const auto& entries = compilationAndLayout.layout.entries; - outContext.m_buffers.setCount(entries.getCount()); - - const auto& values = outContext.m_bindSet.getValues(); - for (BindSet::Value* value : values) - { - if (value->m_userIndex >= 0) - { - outContext.m_buffers[value->m_userIndex] = value; - } - } - } - + ShaderInputLayout::getValueBuffers(compilationAndLayout.layout.entries, outContext.m_bindSet, outContext.m_buffers); + // Okay we need to find all of the bindings and match up to those in the layout const ShaderInputLayout& layout = compilationAndLayout.layout; |
