Commit 84c3a94e by Chris Forbes

Wire up subgroup input builtins in graphics pipe

- BuiltInSubgroupSize - BuiltInSubgroupLocalInvocationId Bug: b/118386749 Test: dEQP-VK.subgroups.* Change-Id: Idf06213351f2ac27664cc6bee1b6b99575676843 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/29308 Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by: 's avatarBen Clayton <bclayton@google.com> Tested-by: 's avatarChris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
parent 7288151c
...@@ -33,6 +33,20 @@ namespace sw ...@@ -33,6 +33,20 @@ namespace sw
var[it->second.FirstComponent+2] = z[0]; // sample 0 var[it->second.FirstComponent+2] = z[0]; // sample 0
var[it->second.FirstComponent+3] = w; var[it->second.FirstComponent+3] = w;
} }
it = spirvShader->inputBuiltins.find(spv::BuiltInSubgroupSize);
if (it != spirvShader->inputBuiltins.end())
{
ASSERT(it->second.SizeInComponents == 1);
routine.getVariable(it->second.Id)[it->second.FirstComponent] = As<SIMD::Float>(Int(SIMD::Width));
}
it = spirvShader->inputBuiltins.find(spv::BuiltInSubgroupLocalInvocationId);
if (it != spirvShader->inputBuiltins.end())
{
ASSERT(it->second.SizeInComponents == 1);
routine.getVariable(it->second.Id)[it->second.FirstComponent] = As<SIMD::Float>(SIMD::Int(0, 1, 2, 3));
}
} }
void PixelProgram::applyShader(Int cMask[4]) void PixelProgram::applyShader(Int cMask[4])
......
...@@ -44,6 +44,20 @@ namespace sw ...@@ -44,6 +44,20 @@ namespace sw
routine.descriptorSets = data + OFFSET(DrawData, descriptorSets); routine.descriptorSets = data + OFFSET(DrawData, descriptorSets);
routine.descriptorDynamicOffsets = data + OFFSET(DrawData, descriptorDynamicOffsets); routine.descriptorDynamicOffsets = data + OFFSET(DrawData, descriptorDynamicOffsets);
routine.pushConstants = data + OFFSET(DrawData, pushConstants); routine.pushConstants = data + OFFSET(DrawData, pushConstants);
it = spirvShader->inputBuiltins.find(spv::BuiltInSubgroupSize);
if (it != spirvShader->inputBuiltins.end())
{
ASSERT(it->second.SizeInComponents == 1);
routine.getVariable(it->second.Id)[it->second.FirstComponent] = As<SIMD::Float>(Int(SIMD::Width));
}
it = spirvShader->inputBuiltins.find(spv::BuiltInSubgroupLocalInvocationId);
if (it != spirvShader->inputBuiltins.end())
{
ASSERT(it->second.SizeInComponents == 1);
routine.getVariable(it->second.Id)[it->second.FirstComponent] = As<SIMD::Float>(SIMD::Int(0, 1, 2, 3));
}
} }
VertexProgram::~VertexProgram() VertexProgram::~VertexProgram()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment