summaryrefslogtreecommitdiffstats
path: root/tools/render-test/shader-renderer-util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/render-test/shader-renderer-util.cpp')
-rw-r--r--tools/render-test/shader-renderer-util.cpp44
1 files changed, 18 insertions, 26 deletions
diff --git a/tools/render-test/shader-renderer-util.cpp b/tools/render-test/shader-renderer-util.cpp
index 57187fc44..903164567 100644
--- a/tools/render-test/shader-renderer-util.cpp
+++ b/tools/render-test/shader-renderer-util.cpp
@@ -87,38 +87,30 @@ void BindingStateImpl::apply(ICommandEncoder* encoder, PipelineType pipelineType
const int numSubResources = textureResourceDesc.calcNumSubResources();
IResource::Usage initialUsage = IResource::Usage::GenericRead;
- ITextureResource::Data initData;
- List<ptrdiff_t> mipRowStrides;
- mipRowStrides.setCount(textureResourceDesc.numMipLevels);
- List<const void*> subResources;
- subResources.setCount(numSubResources);
-
- // Set up the src row strides
- for (int i = 0; i < textureResourceDesc.numMipLevels; i++)
- {
- const int mipWidth = ITextureResource::Size::calcMipSize(textureResourceDesc.size.width, i);
- mipRowStrides[i] = mipWidth * sizeof(uint32_t);
- }
-
- // Set up pointers the the data
+ List<ITextureResource::SubresourceData> initSubresources;
+ int subResourceCounter = 0;
+ for( int a = 0; a < effectiveArraySize; ++a )
{
- int subResourceIndex = 0;
- const int numGen = int(texData.dataBuffer.getCount());
- for (int i = 0; i < numSubResources; i++)
+ for( int m = 0; m < textureResourceDesc.numMipLevels; ++m )
{
- subResources[i] = texData.dataBuffer[subResourceIndex].getBuffer();
- // Wrap around
- subResourceIndex = (subResourceIndex + 1 >= numGen) ? 0 : (subResourceIndex + 1);
+ int subResourceIndex = subResourceCounter++;
+ const int mipWidth = ITextureResource::Size::calcMipSize(textureResourceDesc.size.width, m);
+ const int mipHeight = ITextureResource::Size::calcMipSize(textureResourceDesc.size.width, m);
+
+ auto strideY = mipWidth * sizeof(uint32_t);
+ auto strideZ = mipHeight * strideY;
+
+ ITextureResource::SubresourceData subresourceData;
+ subresourceData.data = texData.dataBuffer[subResourceIndex].getBuffer();
+ subresourceData.strideY = strideY;
+ subresourceData.strideZ = strideZ;
+
+ initSubresources.add(subresourceData);
}
}
- initData.mipRowStrides = mipRowStrides.getBuffer();
- initData.numMips = textureResourceDesc.numMipLevels;
- initData.numSubResources = numSubResources;
- initData.subResources = subResources.getBuffer();
-
- textureOut = device->createTextureResource(IResource::Usage::GenericRead, textureResourceDesc, &initData);
+ textureOut = device->createTextureResource(IResource::Usage::GenericRead, textureResourceDesc, initSubresources.getBuffer());
return textureOut ? SLANG_OK : SLANG_FAIL;
}