Skip to content

Commit 00424c1

Browse files
committed
Reintroduce "VkDebug: Update macros to address issues in b/127433389"
3641121 had preprocessor issues on Windows. This should now work on all platforms. I had to change UNIMPLEMENTED() and UNREACHABLE() to always take a format parameter to make this work on MSVC. This doesn't seem like a terrible thing though - especially if we can incorporate the frequency of hit UNIMPLEMENTED()'s to steer our focus. Change-Id: Idc58dbe6caa3fb51e085c3b236904c640091deec Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27468 Presubmit-Ready: Ben Clayton <[email protected]> Reviewed-by: Nicolas Capens <[email protected]> Tested-by: Ben Clayton <[email protected]> Kokoro-Presubmit: kokoro <[email protected]>
1 parent c2bb50b commit 00424c1

14 files changed

+260
-218
lines changed

src/Device/Blitter.cpp

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ namespace sw
161161
return false;
162162
}
163163

164-
VkImageSubresourceLayers subresLayers =
164+
VkImageSubresourceLayers subresLayers =
165165
{
166166
subresourceRange.aspectMask,
167167
subresourceRange.baseMipLevel,
@@ -341,14 +341,14 @@ namespace sw
341341
case VK_FORMAT_R32_SFLOAT:
342342
c.x = *Pointer<Float>(element);
343343
break;
344-
case VK_FORMAT_R16G16B16A16_SFLOAT:
345-
c.w = Float(*Pointer<Half>(element + 6));
346-
case VK_FORMAT_R16G16B16_SFLOAT:
347-
c.z = Float(*Pointer<Half>(element + 4));
348-
case VK_FORMAT_R16G16_SFLOAT:
349-
c.y = Float(*Pointer<Half>(element + 2));
350-
case VK_FORMAT_R16_SFLOAT:
351-
c.x = Float(*Pointer<Half>(element));
344+
case VK_FORMAT_R16G16B16A16_SFLOAT:
345+
c.w = Float(*Pointer<Half>(element + 6));
346+
case VK_FORMAT_R16G16B16_SFLOAT:
347+
c.z = Float(*Pointer<Half>(element + 4));
348+
case VK_FORMAT_R16G16_SFLOAT:
349+
c.y = Float(*Pointer<Half>(element + 2));
350+
case VK_FORMAT_R16_SFLOAT:
351+
c.x = Float(*Pointer<Half>(element));
352352
break;
353353
case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
354354
// 10 (or 11) bit float formats are unsigned formats with a 5 bit exponent and a 5 (or 6) bit mantissa.
@@ -367,8 +367,8 @@ namespace sw
367367
break;
368368
case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
369369
// This type contains a common 5 bit exponent (E) and a 9 bit the mantissa for R, G and B.
370-
c.x = Float(*Pointer<UInt>(element) & UInt(0x000001FF)); // R's mantissa (bits 0-8)
371-
c.y = Float((*Pointer<UInt>(element) & UInt(0x0003FE00)) >> 9); // G's mantissa (bits 9-17)
370+
c.x = Float(*Pointer<UInt>(element) & UInt(0x000001FF)); // R's mantissa (bits 0-8)
371+
c.y = Float((*Pointer<UInt>(element) & UInt(0x0003FE00)) >> 9); // G's mantissa (bits 9-17)
372372
c.z = Float((*Pointer<UInt>(element) & UInt(0x07FC0000)) >> 18); // B's mantissa (bits 18-26)
373373
c *= Float4(
374374
// 2^E, using the exponent (bits 27-31) and treating it as an unsigned integer value
@@ -467,10 +467,10 @@ namespace sw
467467
case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
468468
if(writeRGBA)
469469
{
470-
*Pointer<UShort>(element) = UShort(RoundInt(Float(c.w)) & Int(0xF)) |
471-
UShort((RoundInt(Float(c.x)) & Int(0xF)) << 4) |
472-
UShort((RoundInt(Float(c.y)) & Int(0xF)) << 8) |
473-
UShort((RoundInt(Float(c.z)) & Int(0xF)) << 12);
470+
*Pointer<UShort>(element) = UShort(RoundInt(Float(c.w)) & Int(0xF)) |
471+
UShort((RoundInt(Float(c.x)) & Int(0xF)) << 4) |
472+
UShort((RoundInt(Float(c.y)) & Int(0xF)) << 8) |
473+
UShort((RoundInt(Float(c.z)) & Int(0xF)) << 12);
474474
}
475475
else
476476
{
@@ -480,9 +480,9 @@ namespace sw
480480
(writeB ? 0xF000 : 0x0000);
481481
unsigned short unmask = ~mask;
482482
*Pointer<UShort>(element) = (*Pointer<UShort>(element) & UShort(unmask)) |
483-
((UShort(RoundInt(Float(c.w)) & Int(0xF)) |
484-
UShort((RoundInt(Float(c.x)) & Int(0xF)) << 4) |
485-
UShort((RoundInt(Float(c.y)) & Int(0xF)) << 8) |
483+
((UShort(RoundInt(Float(c.w)) & Int(0xF)) |
484+
UShort((RoundInt(Float(c.x)) & Int(0xF)) << 4) |
485+
UShort((RoundInt(Float(c.y)) & Int(0xF)) << 8) |
486486
UShort((RoundInt(Float(c.z)) & Int(0xF)) << 12)) & UShort(mask));
487487
}
488488
break;
@@ -565,14 +565,14 @@ namespace sw
565565
case VK_FORMAT_R32_SFLOAT:
566566
if(writeR) { *Pointer<Float>(element) = c.x; }
567567
break;
568-
case VK_FORMAT_R16G16B16A16_SFLOAT:
569-
if(writeA) { *Pointer<Half>(element + 6) = Half(c.w); }
570-
case VK_FORMAT_R16G16B16_SFLOAT:
571-
if(writeB) { *Pointer<Half>(element + 4) = Half(c.z); }
572-
case VK_FORMAT_R16G16_SFLOAT:
573-
if(writeG) { *Pointer<Half>(element + 2) = Half(c.y); }
574-
case VK_FORMAT_R16_SFLOAT:
575-
if(writeR) { *Pointer<Half>(element) = Half(c.x); }
568+
case VK_FORMAT_R16G16B16A16_SFLOAT:
569+
if(writeA) { *Pointer<Half>(element + 6) = Half(c.w); }
570+
case VK_FORMAT_R16G16B16_SFLOAT:
571+
if(writeB) { *Pointer<Half>(element + 4) = Half(c.z); }
572+
case VK_FORMAT_R16G16_SFLOAT:
573+
if(writeG) { *Pointer<Half>(element + 2) = Half(c.y); }
574+
case VK_FORMAT_R16_SFLOAT:
575+
if(writeR) { *Pointer<Half>(element) = Half(c.x); }
576576
break;
577577
case VK_FORMAT_B8G8R8A8_SNORM:
578578
if(writeB) { *Pointer<SByte>(element) = SByte(RoundInt(Float(c.z))); }
@@ -1496,7 +1496,7 @@ namespace sw
14961496
if(!blitRoutine)
14971497
{
14981498
criticalSection.unlock();
1499-
UNIMPLEMENTED();
1499+
UNIMPLEMENTED("blitRoutine");
15001500
return nullptr;
15011501
}
15021502

@@ -1518,7 +1518,7 @@ namespace sw
15181518
if((region.srcSubresource.layerCount != region.dstSubresource.layerCount) ||
15191519
(region.srcSubresource.aspectMask != region.dstSubresource.aspectMask))
15201520
{
1521-
UNIMPLEMENTED();
1521+
UNIMPLEMENTED("region");
15221522
}
15231523

15241524
if(region.dstOffsets[0].x > region.dstOffsets[1].x)

src/Pipeline/SpirvShader.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ namespace sw
279279
mainBlockId = Block::ID(it.word(1));
280280
break;
281281
default:
282-
ERR("Unexpected opcode '%s' following OpFunction", OpcodeName(it.opcode()).c_str());
282+
WARN("Unexpected opcode '%s' following OpFunction", OpcodeName(it.opcode()).c_str());
283283
}
284284
}
285285
ASSERT(mainBlockId.value() != 0); // Function's OpLabel not found
@@ -424,7 +424,7 @@ namespace sw
424424
break;
425425

426426
default:
427-
UNIMPLEMENTED(OpcodeName(insn.opcode()).c_str());
427+
UNIMPLEMENTED("%s", OpcodeName(insn.opcode()).c_str());
428428
}
429429
}
430430
}
@@ -1227,7 +1227,7 @@ namespace sw
12271227
break;
12281228

12291229
default:
1230-
UNIMPLEMENTED(OpcodeName(insn.opcode()).c_str());
1230+
UNIMPLEMENTED("opcode: %s", OpcodeName(insn.opcode()).c_str());
12311231
break;
12321232
}
12331233
}

src/Pipeline/SpirvShader.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,14 +392,14 @@ namespace sw
392392
Type const &getType(Type::ID id) const
393393
{
394394
auto it = types.find(id);
395-
ASSERT(it != types.end());
395+
ASSERT_MSG(it != types.end(), "Unknown type %d", id.value());
396396
return it->second;
397397
}
398398

399399
Object const &getObject(Object::ID id) const
400400
{
401401
auto it = defs.find(id);
402-
ASSERT(it != defs.end());
402+
ASSERT_MSG(it != defs.end(), "Unknown object %d", id.value());
403403
return it->second;
404404
}
405405

src/Vulkan/VkCommandBuffer.cpp

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ VkResult CommandBuffer::begin(VkCommandBufferUsageFlags flags, const VkCommandBu
601601

602602
if(pInheritanceInfo)
603603
{
604-
UNIMPLEMENTED();
604+
UNIMPLEMENTED("pInheritanceInfo");
605605
}
606606

607607
if(state != INITIAL)
@@ -646,7 +646,7 @@ void CommandBuffer::beginRenderPass(VkRenderPass renderPass, VkFramebuffer frame
646646

647647
if(contents != VK_SUBPASS_CONTENTS_INLINE)
648648
{
649-
UNIMPLEMENTED();
649+
UNIMPLEMENTED("VK_SUBPASS_CONTENTS_INLINE");
650650
}
651651

652652
addCommand<BeginRenderPass>(renderPass, framebuffer, renderArea, clearValueCount, clearValues);
@@ -666,18 +666,18 @@ void CommandBuffer::endRenderPass()
666666

667667
void CommandBuffer::executeCommands(uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers)
668668
{
669-
UNIMPLEMENTED();
669+
UNIMPLEMENTED("executeCommands");
670670
}
671671

672672
void CommandBuffer::setDeviceMask(uint32_t deviceMask)
673673
{
674-
UNIMPLEMENTED();
674+
UNIMPLEMENTED("setDeviceMask");
675675
}
676676

677677
void CommandBuffer::dispatchBase(uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
678678
uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ)
679679
{
680-
UNIMPLEMENTED();
680+
UNIMPLEMENTED("dispatchBase");
681681
}
682682

683683
void CommandBuffer::pipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask,
@@ -698,7 +698,7 @@ void CommandBuffer::bindPipeline(VkPipelineBindPoint pipelineBindPoint, VkPipeli
698698
addCommand<PipelineBind>(pipelineBindPoint, pipeline);
699699
break;
700700
default:
701-
UNIMPLEMENTED();
701+
UNIMPLEMENTED("pipelineBindPoint");
702702
}
703703
}
704704

@@ -713,46 +713,46 @@ void CommandBuffer::bindVertexBuffers(uint32_t firstBinding, uint32_t bindingCou
713713

714714
void CommandBuffer::beginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags)
715715
{
716-
UNIMPLEMENTED();
716+
UNIMPLEMENTED("beginQuery");
717717
}
718718

719719
void CommandBuffer::endQuery(VkQueryPool queryPool, uint32_t query)
720720
{
721-
UNIMPLEMENTED();
721+
UNIMPLEMENTED("endQuery");
722722
}
723723

724724
void CommandBuffer::resetQueryPool(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount)
725725
{
726-
UNIMPLEMENTED();
726+
UNIMPLEMENTED("resetQueryPool");
727727
}
728728

729729
void CommandBuffer::writeTimestamp(VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query)
730730
{
731-
UNIMPLEMENTED();
731+
UNIMPLEMENTED("writeTimestamp");
732732
}
733733

734734
void CommandBuffer::copyQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount,
735735
VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags)
736736
{
737-
UNIMPLEMENTED();
737+
UNIMPLEMENTED("copyQueryPoolResults");
738738
}
739739

740740
void CommandBuffer::pushConstants(VkPipelineLayout layout, VkShaderStageFlags stageFlags,
741741
uint32_t offset, uint32_t size, const void* pValues)
742742
{
743-
UNIMPLEMENTED();
743+
UNIMPLEMENTED("pushConstants");
744744
}
745745

746746
void CommandBuffer::setViewport(uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports)
747747
{
748748
// Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled
749-
UNIMPLEMENTED();
749+
UNIMPLEMENTED("setViewport");
750750
}
751751

752752
void CommandBuffer::setScissor(uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors)
753753
{
754754
// Note: The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled
755-
UNIMPLEMENTED();
755+
UNIMPLEMENTED("setScissor");
756756
}
757757

758758
void CommandBuffer::setLineWidth(float lineWidth)
@@ -762,7 +762,7 @@ void CommandBuffer::setLineWidth(float lineWidth)
762762
// If the wide lines feature is not enabled, lineWidth must be 1.0
763763
ASSERT(lineWidth == 1.0f);
764764

765-
UNIMPLEMENTED();
765+
UNIMPLEMENTED("setLineWidth");
766766
}
767767

768768
void CommandBuffer::setDepthBias(float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor)
@@ -772,7 +772,7 @@ void CommandBuffer::setDepthBias(float depthBiasConstantFactor, float depthBiasC
772772
// If the depth bias clamping feature is not enabled, depthBiasClamp must be 0.0
773773
ASSERT(depthBiasClamp == 0.0f);
774774

775-
UNIMPLEMENTED();
775+
UNIMPLEMENTED("setDepthBias");
776776
}
777777

778778
void CommandBuffer::setBlendConstants(const float blendConstants[4])
@@ -782,7 +782,7 @@ void CommandBuffer::setBlendConstants(const float blendConstants[4])
782782
// blendConstants is an array of four values specifying the R, G, B, and A components
783783
// of the blend constant color used in blending, depending on the blend factor.
784784

785-
UNIMPLEMENTED();
785+
UNIMPLEMENTED("setBlendConstants");
786786
}
787787

788788
void CommandBuffer::setDepthBounds(float minDepthBounds, float maxDepthBounds)
@@ -793,7 +793,7 @@ void CommandBuffer::setDepthBounds(float minDepthBounds, float maxDepthBounds)
793793
ASSERT(minDepthBounds >= 0.0f && minDepthBounds <= 1.0f);
794794
ASSERT(maxDepthBounds >= 0.0f && maxDepthBounds <= 1.0f);
795795

796-
UNIMPLEMENTED();
796+
UNIMPLEMENTED("setDepthBounds");
797797
}
798798

799799
void CommandBuffer::setStencilCompareMask(VkStencilFaceFlags faceMask, uint32_t compareMask)
@@ -803,7 +803,7 @@ void CommandBuffer::setStencilCompareMask(VkStencilFaceFlags faceMask, uint32_t
803803
// faceMask must not be 0
804804
ASSERT(faceMask != 0);
805805

806-
UNIMPLEMENTED();
806+
UNIMPLEMENTED("setStencilCompareMask");
807807
}
808808

809809
void CommandBuffer::setStencilWriteMask(VkStencilFaceFlags faceMask, uint32_t writeMask)
@@ -813,7 +813,7 @@ void CommandBuffer::setStencilWriteMask(VkStencilFaceFlags faceMask, uint32_t wr
813813
// faceMask must not be 0
814814
ASSERT(faceMask != 0);
815815

816-
UNIMPLEMENTED();
816+
UNIMPLEMENTED("setStencilWriteMask");
817817
}
818818

819819
void CommandBuffer::setStencilReference(VkStencilFaceFlags faceMask, uint32_t reference)
@@ -823,7 +823,7 @@ void CommandBuffer::setStencilReference(VkStencilFaceFlags faceMask, uint32_t re
823823
// faceMask must not be 0
824824
ASSERT(faceMask != 0);
825825

826-
UNIMPLEMENTED();
826+
UNIMPLEMENTED("setStencilReference");
827827
}
828828

829829
void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
@@ -834,7 +834,7 @@ void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, Vk
834834

835835
if(dynamicOffsetCount > 0)
836836
{
837-
UNIMPLEMENTED();
837+
UNIMPLEMENTED("bindDescriptorSets");
838838
}
839839

840840
for(uint32_t i = 0; i < descriptorSetCount; i++)
@@ -855,7 +855,7 @@ void CommandBuffer::dispatch(uint32_t groupCountX, uint32_t groupCountY, uint32_
855855

856856
void CommandBuffer::dispatchIndirect(VkBuffer buffer, VkDeviceSize offset)
857857
{
858-
UNIMPLEMENTED();
858+
UNIMPLEMENTED("dispatchIndirect");
859859
}
860860

861861
void CommandBuffer::copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions)
@@ -974,7 +974,7 @@ void CommandBuffer::clearAttachments(uint32_t attachmentCount, const VkClearAtta
974974
void CommandBuffer::resolveImage(VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout,
975975
uint32_t regionCount, const VkImageResolve* pRegions)
976976
{
977-
UNIMPLEMENTED();
977+
UNIMPLEMENTED("resolveImage");
978978
}
979979

980980
void CommandBuffer::setEvent(VkEvent event, VkPipelineStageFlags stageMask)
@@ -996,7 +996,7 @@ void CommandBuffer::waitEvents(uint32_t eventCount, const VkEvent* pEvents, VkPi
996996
uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers,
997997
uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers)
998998
{
999-
UNIMPLEMENTED();
999+
UNIMPLEMENTED("waitEvents");
10001000
}
10011001

10021002
void CommandBuffer::draw(uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance)
@@ -1011,12 +1011,12 @@ void CommandBuffer::drawIndexed(uint32_t indexCount, uint32_t instanceCount, uin
10111011

10121012
void CommandBuffer::drawIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
10131013
{
1014-
UNIMPLEMENTED();
1014+
UNIMPLEMENTED("drawIndirect");
10151015
}
10161016

10171017
void CommandBuffer::drawIndexedIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
10181018
{
1019-
UNIMPLEMENTED();
1019+
UNIMPLEMENTED("drawIndexedIndirect");
10201020
}
10211021

10221022
void CommandBuffer::submit(CommandBuffer::ExecutionState& executionState)

0 commit comments

Comments
 (0)