Commit 72c398f5 by Ben Clayton

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