Vulkan: Add description methods to all commands.
These will be used to create a synthetic file for all the commands in the command buffer, which can be stepped over using the new debugger.
Bug: b/145351270
Change-Id: If5728463c1cf333d635c46e2d3b6314ce7d27326
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/38910
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Vulkan/VkCommandBuffer.cpp b/src/Vulkan/VkCommandBuffer.cpp
index 8678112..d8c1930 100644
--- a/src/Vulkan/VkCommandBuffer.cpp
+++ b/src/Vulkan/VkCommandBuffer.cpp
@@ -32,6 +32,7 @@
public:
// FIXME (b/119421344): change the commandBuffer argument to a CommandBuffer state
virtual void play(vk::CommandBuffer::ExecutionState& executionState) = 0;
+ virtual std::string description() = 0;
virtual ~Command() {}
};
@@ -63,6 +64,8 @@
framebuffer->clear(executionState.renderPass, clearValueCount, clearValues, renderArea);
}
+ std::string description() override { return "vkCmdBeginRenderPass()"; }
+
private:
vk::RenderPass* renderPass;
vk::Framebuffer* framebuffer;
@@ -88,6 +91,8 @@
++executionState.subpassIndex;
}
+
+ std::string description() override { return "vkCmdNextSubpass()"; }
};
class CmdEndRenderPass : public vk::CommandBuffer::Command
@@ -106,6 +111,8 @@
executionState.renderPass = nullptr;
executionState.renderPassFramebuffer = nullptr;
}
+
+ std::string description() override { return "vkCmdEndRenderPass()"; }
};
class CmdExecuteCommands : public vk::CommandBuffer::Command
@@ -120,6 +127,8 @@
commandBuffer->submitSecondary(executionState);
}
+ std::string description() override { return "vkCmdExecuteCommands()"; }
+
private:
const vk::CommandBuffer* commandBuffer;
};
@@ -137,6 +146,8 @@
executionState.pipelineState[pipelineBindPoint].pipeline = pipeline;
}
+ std::string description() override { return "vkCmdPipelineBind()"; }
+
private:
VkPipelineBindPoint pipelineBindPoint;
vk::Pipeline* pipeline;
@@ -163,6 +174,8 @@
executionState.pushConstants);
}
+ std::string description() override { return "vkCmdDispatch()"; }
+
private:
uint32_t baseGroupX;
uint32_t baseGroupY;
@@ -193,6 +206,8 @@
executionState.pushConstants);
}
+ std::string description() override { return "vkCmdDispatchIndirect()"; }
+
private:
const vk::Buffer* buffer;
VkDeviceSize offset;
@@ -211,6 +226,8 @@
executionState.vertexInputBindings[binding] = { buffer, offset };
}
+ std::string description() override { return "vkCmdVertexBufferBind()"; }
+
private:
uint32_t binding;
vk::Buffer* buffer;
@@ -231,6 +248,8 @@
executionState.indexType = indexType;
}
+ std::string description() override { return "vkCmdIndexBufferBind()"; }
+
private:
vk::Buffer* buffer;
const VkDeviceSize offset;
@@ -250,6 +269,8 @@
executionState.dynamicState.viewport = viewport;
}
+ std::string description() override { return "vkCmdSetViewport()"; }
+
private:
const VkViewport viewport;
uint32_t viewportID;
@@ -268,6 +289,8 @@
executionState.dynamicState.scissor = scissor;
}
+ std::string description() override { return "vkCmdSetScissor()"; }
+
private:
const VkRect2D scissor;
uint32_t scissorID;
@@ -288,6 +311,8 @@
executionState.dynamicState.depthBiasSlopeFactor = depthBiasSlopeFactor;
}
+ std::string description() override { return "vkCmdSetDepthBias()"; }
+
private:
float depthBiasConstantFactor;
float depthBiasClamp;
@@ -307,6 +332,8 @@
memcpy(&(executionState.dynamicState.blendConstants[0]), blendConstants, sizeof(blendConstants));
}
+ std::string description() override { return "vkCmdSetBlendConstants()"; }
+
private:
float blendConstants[4];
};
@@ -325,6 +352,8 @@
executionState.dynamicState.maxDepthBounds = maxDepthBounds;
}
+ std::string description() override { return "vkCmdSetDepthBounds()"; }
+
private:
float minDepthBounds;
float maxDepthBounds;
@@ -350,6 +379,8 @@
}
}
+ std::string description() override { return "vkCmdSetStencilCompareMask()"; }
+
private:
VkStencilFaceFlags faceMask;
uint32_t compareMask;
@@ -375,6 +406,8 @@
}
}
+ std::string description() override { return "vkCmdSetStencilWriteMask()"; }
+
private:
VkStencilFaceFlags faceMask;
uint32_t writeMask;
@@ -400,6 +433,8 @@
}
}
+ std::string description() override { return "vkCmdSetStencilReference()"; }
+
private:
VkStencilFaceFlags faceMask;
uint32_t reference;
@@ -583,6 +618,8 @@
draw(executionState, false, vertexCount, instanceCount, 0, firstVertex, firstInstance);
}
+ std::string description() override { return "vkCmdDraw()"; }
+
private:
uint32_t vertexCount;
uint32_t instanceCount;
@@ -603,6 +640,8 @@
draw(executionState, true, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
}
+ std::string description() override { return "vkCmdDrawIndexed()"; }
+
private:
uint32_t indexCount;
uint32_t instanceCount;
@@ -628,6 +667,8 @@
}
}
+ std::string description() override { return "vkCmdDrawIndirect()"; }
+
private:
const vk::Buffer* buffer;
VkDeviceSize offset;
@@ -652,6 +693,8 @@
}
}
+ std::string description() override { return "vkCmdDrawIndexedIndirect()"; }
+
private:
const vk::Buffer* buffer;
VkDeviceSize offset;
@@ -672,6 +715,8 @@
srcImage->copyTo(dstImage, region);
}
+ std::string description() override { return "vkCmdImageToImageCopy()"; }
+
private:
const vk::Image* srcImage;
vk::Image* dstImage;
@@ -691,6 +736,8 @@
srcBuffer->copyTo(dstBuffer, region);
}
+ std::string description() override { return "vkCmdBufferToBufferCopy()"; }
+
private:
const vk::Buffer* srcBuffer;
vk::Buffer* dstBuffer;
@@ -710,6 +757,8 @@
srcImage->copyTo(dstBuffer, region);
}
+ std::string description() override { return "vkCmdImageToBufferCopy()"; }
+
private:
vk::Image* srcImage;
vk::Buffer* dstBuffer;
@@ -729,6 +778,8 @@
dstImage->copyFrom(srcBuffer, region);
}
+ std::string description() override { return "vkCmdBufferToImageCopy()"; }
+
private:
vk::Buffer* srcBuffer;
vk::Image* dstImage;
@@ -748,6 +799,8 @@
dstBuffer->fill(dstOffset, size, data);
}
+ std::string description() override { return "vkCmdFillBuffer()"; }
+
private:
vk::Buffer* dstBuffer;
VkDeviceSize dstOffset;
@@ -768,6 +821,8 @@
dstBuffer->update(dstOffset, data.size(), data.data());
}
+ std::string description() override { return "vkCmdUpdateBuffer()"; }
+
private:
vk::Buffer* dstBuffer;
VkDeviceSize dstOffset;
@@ -787,6 +842,8 @@
image->clear(color, range);
}
+ std::string description() override { return "vkCmdClearColorImage()"; }
+
private:
vk::Image* image;
const VkClearColorValue color;
@@ -806,6 +863,8 @@
image->clear(depthStencil, range);
}
+ std::string description() override { return "vkCmdClearDepthStencilImage()"; }
+
private:
vk::Image* image;
const VkClearDepthStencilValue depthStencil;
@@ -829,6 +888,8 @@
executionState.renderPassFramebuffer->clearAttachment(executionState.renderPass, executionState.subpassIndex, attachment, rect);
}
+ std::string description() override { return "vkCmdClearAttachment()"; }
+
private:
const VkClearAttachment attachment;
const VkClearRect rect;
@@ -847,6 +908,8 @@
srcImage->blit(dstImage, region, filter);
}
+ std::string description() override { return "vkCmdBlitImage()"; }
+
private:
const vk::Image* srcImage;
vk::Image* dstImage;
@@ -867,6 +930,8 @@
srcImage->resolve(dstImage, region);
}
+ std::string description() override { return "vkCmdBlitImage()"; }
+
private:
const vk::Image* srcImage;
vk::Image* dstImage;
@@ -887,6 +952,8 @@
// Also note that this would be a good moment to update cube map borders or decompress compressed textures, if necessary.
}
+
+ std::string description() override { return "vkCmdPipelineBarrier()"; }
};
class CmdSignalEvent : public vk::CommandBuffer::Command
@@ -902,6 +969,8 @@
ev->signal();
}
+ std::string description() override { return "vkCmdSignalEvent()"; }
+
private:
vk::Event* ev;
VkPipelineStageFlags stageMask; // FIXME(b/117835459) : We currently ignore the flags and signal the event at the last stage
@@ -919,6 +988,8 @@
ev->reset();
}
+ std::string description() override { return "vkCmdResetEvent()"; }
+
private:
vk::Event* ev;
VkPipelineStageFlags stageMask; // FIXME(b/117835459) : We currently ignore the flags and reset the event at the last stage
@@ -937,6 +1008,8 @@
ev->wait();
}
+ std::string description() override { return "vkCmdWaitEvent()"; }
+
private:
vk::Event* ev;
};
@@ -969,6 +1042,8 @@
}
}
+ std::string description() override { return "vkCmdBindDescriptorSet()"; }
+
private:
VkPipelineBindPoint pipelineBindPoint;
const vk::PipelineLayout *pipelineLayout;
@@ -995,6 +1070,8 @@
memcpy(&executionState.pushConstants.data[offset], data, size);
}
+ std::string description() override { return "vkCmdSetPushConstants()"; }
+
private:
uint32_t offset;
uint32_t size;
@@ -1015,6 +1092,8 @@
executionState.renderer->addQuery(queryPool->getQuery(query));
}
+ std::string description() override { return "vkCmdBeginQuery()"; }
+
private:
vk::QueryPool* queryPool;
uint32_t query;
@@ -1035,6 +1114,8 @@
queryPool->end(query);
}
+ std::string description() override { return "vkCmdEndQuery()"; }
+
private:
vk::QueryPool* queryPool;
uint32_t query;
@@ -1053,6 +1134,8 @@
queryPool->reset(firstQuery, queryCount);
}
+ std::string description() override { return "vkCmdResetQueryPool()"; }
+
private:
vk::QueryPool* queryPool;
uint32_t firstQuery;
@@ -1083,6 +1166,8 @@
queryPool->writeTimestamp(query);
}
+ std::string description() override { return "vkCmdWriteTimeStamp()"; }
+
private:
vk::QueryPool* queryPool;
uint32_t query;
@@ -1105,6 +1190,8 @@
dstBuffer->getOffsetPointer(dstOffset), stride, flags);
}
+ std::string description() override { return "vkCmdCopyQueryPoolResults()"; }
+
private:
const vk::QueryPool* queryPool;
uint32_t firstQuery;