Merge pull request #898 from js6i/master
Check for stencil only image view in identity swizzle case
This commit is contained in:
commit
806482f786
@ -148,7 +148,11 @@ void MVKDescriptorSetLayoutBinding::push(MVKCommandEncoder* cmdEncoder,
|
|||||||
MVKBuffer* buffer = (MVKBuffer*)bufferInfo.buffer;
|
MVKBuffer* buffer = (MVKBuffer*)bufferInfo.buffer;
|
||||||
bb.mtlBuffer = buffer->getMTLBuffer();
|
bb.mtlBuffer = buffer->getMTLBuffer();
|
||||||
bb.offset = buffer->getMTLBufferOffset() + bufferInfo.offset;
|
bb.offset = buffer->getMTLBufferOffset() + bufferInfo.offset;
|
||||||
bb.size = (uint32_t)buffer->getByteCount();
|
if (bufferInfo.range == VK_WHOLE_SIZE)
|
||||||
|
bb.size = (uint32_t)(buffer->getByteCount() - bb.offset);
|
||||||
|
else
|
||||||
|
bb.size = (uint32_t)bufferInfo.range;
|
||||||
|
|
||||||
for (uint32_t i = kMVKShaderStageVertex; i < kMVKShaderStageMax; i++) {
|
for (uint32_t i = kMVKShaderStageVertex; i < kMVKShaderStageMax; i++) {
|
||||||
if (_applyToStage[i]) {
|
if (_applyToStage[i]) {
|
||||||
bb.index = mtlIdxs.stages[i].bufferIndex + rezIdx;
|
bb.index = mtlIdxs.stages[i].bufferIndex + rezIdx;
|
||||||
@ -493,7 +497,10 @@ void MVKBufferDescriptor::bind(MVKCommandEncoder* cmdEncoder,
|
|||||||
if (_mvkBuffer) {
|
if (_mvkBuffer) {
|
||||||
bb.mtlBuffer = _mvkBuffer->getMTLBuffer();
|
bb.mtlBuffer = _mvkBuffer->getMTLBuffer();
|
||||||
bb.offset = _mvkBuffer->getMTLBufferOffset() + _buffOffset + bufferDynamicOffset;
|
bb.offset = _mvkBuffer->getMTLBufferOffset() + _buffOffset + bufferDynamicOffset;
|
||||||
bb.size = (uint32_t)_mvkBuffer->getByteCount();
|
if (_buffRange == VK_WHOLE_SIZE)
|
||||||
|
bb.size = (uint32_t)(_mvkBuffer->getByteCount() - bb.offset);
|
||||||
|
else
|
||||||
|
bb.size = _buffRange;
|
||||||
}
|
}
|
||||||
for (uint32_t i = kMVKShaderStageVertex; i < kMVKShaderStageMax; i++) {
|
for (uint32_t i = kMVKShaderStageVertex; i < kMVKShaderStageMax; i++) {
|
||||||
if (stages[i]) {
|
if (stages[i]) {
|
||||||
|
@ -1231,6 +1231,16 @@ VkResult MVKImageView::validateSwizzledMTLPixelFormat(const VkImageViewCreateInf
|
|||||||
|
|
||||||
// If we have an identity swizzle, we're all good.
|
// If we have an identity swizzle, we're all good.
|
||||||
if (SWIZZLE_MATCHES(R, G, B, A)) {
|
if (SWIZZLE_MATCHES(R, G, B, A)) {
|
||||||
|
// Change to stencil-only format if only stencil aspect is requested
|
||||||
|
if (pCreateInfo->subresourceRange.aspectMask == VK_IMAGE_ASPECT_STENCIL_BIT) {
|
||||||
|
if (mtlPixFmt == MTLPixelFormatDepth32Float_Stencil8)
|
||||||
|
mtlPixFmt = MTLPixelFormatX32_Stencil8;
|
||||||
|
#if MVK_MACOS
|
||||||
|
else if (mtlPixFmt == MTLPixelFormatDepth24Unorm_Stencil8)
|
||||||
|
mtlPixFmt = MTLPixelFormatX24_Stencil8;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user