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
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 @@ public:
framebuffer->clear(executionState.renderPass, clearValueCount, clearValues, renderArea);
}
std::string description() override { return "vkCmdBeginRenderPass()"; }
private:
vk::RenderPass* renderPass;
vk::Framebuffer* framebuffer;
......@@ -88,6 +91,8 @@ public:
++executionState.subpassIndex;
}
std::string description() override { return "vkCmdNextSubpass()"; }
};
class CmdEndRenderPass : public vk::CommandBuffer::Command
......@@ -106,6 +111,8 @@ public:
executionState.renderPass = nullptr;
executionState.renderPassFramebuffer = nullptr;
}
std::string description() override { return "vkCmdEndRenderPass()"; }
};
class CmdExecuteCommands : public vk::CommandBuffer::Command
......@@ -120,6 +127,8 @@ public:
commandBuffer->submitSecondary(executionState);
}
std::string description() override { return "vkCmdExecuteCommands()"; }
private:
const vk::CommandBuffer* commandBuffer;
};
......@@ -137,6 +146,8 @@ public:
executionState.pipelineState[pipelineBindPoint].pipeline = pipeline;
}
std::string description() override { return "vkCmdPipelineBind()"; }
private:
VkPipelineBindPoint pipelineBindPoint;
vk::Pipeline* pipeline;
......@@ -163,6 +174,8 @@ public:
executionState.pushConstants);
}
std::string description() override { return "vkCmdDispatch()"; }
private:
uint32_t baseGroupX;
uint32_t baseGroupY;
......@@ -193,6 +206,8 @@ public:
executionState.pushConstants);
}
std::string description() override { return "vkCmdDispatchIndirect()"; }
private:
const vk::Buffer* buffer;
VkDeviceSize offset;
......@@ -211,6 +226,8 @@ public:
executionState.vertexInputBindings[binding] = { buffer, offset };
}
std::string description() override { return "vkCmdVertexBufferBind()"; }
private:
uint32_t binding;
vk::Buffer* buffer;
......@@ -231,6 +248,8 @@ public:
executionState.indexType = indexType;
}
std::string description() override { return "vkCmdIndexBufferBind()"; }
private:
vk::Buffer* buffer;
const VkDeviceSize offset;
......@@ -250,6 +269,8 @@ public:
executionState.dynamicState.viewport = viewport;
}
std::string description() override { return "vkCmdSetViewport()"; }
private:
const VkViewport viewport;
uint32_t viewportID;
......@@ -268,6 +289,8 @@ public:
executionState.dynamicState.scissor = scissor;
}
std::string description() override { return "vkCmdSetScissor()"; }
private:
const VkRect2D scissor;
uint32_t scissorID;
......@@ -288,6 +311,8 @@ public:
executionState.dynamicState.depthBiasSlopeFactor = depthBiasSlopeFactor;
}
std::string description() override { return "vkCmdSetDepthBias()"; }
private:
float depthBiasConstantFactor;
float depthBiasClamp;
......@@ -307,6 +332,8 @@ public:
memcpy(&(executionState.dynamicState.blendConstants[0]), blendConstants, sizeof(blendConstants));
}
std::string description() override { return "vkCmdSetBlendConstants()"; }
private:
float blendConstants[4];
};
......@@ -325,6 +352,8 @@ public:
executionState.dynamicState.maxDepthBounds = maxDepthBounds;
}
std::string description() override { return "vkCmdSetDepthBounds()"; }
private:
float minDepthBounds;
float maxDepthBounds;
......@@ -350,6 +379,8 @@ public:
}
}
std::string description() override { return "vkCmdSetStencilCompareMask()"; }
private:
VkStencilFaceFlags faceMask;
uint32_t compareMask;
......@@ -375,6 +406,8 @@ public:
}
}
std::string description() override { return "vkCmdSetStencilWriteMask()"; }
private:
VkStencilFaceFlags faceMask;
uint32_t writeMask;
......@@ -400,6 +433,8 @@ public:
}
}
std::string description() override { return "vkCmdSetStencilReference()"; }
private:
VkStencilFaceFlags faceMask;
uint32_t reference;
......@@ -583,6 +618,8 @@ public:
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 @@ public:
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 @@ public:
}
}
std::string description() override { return "vkCmdDrawIndirect()"; }
private:
const vk::Buffer* buffer;
VkDeviceSize offset;
......@@ -652,6 +693,8 @@ public:
}
}
std::string description() override { return "vkCmdDrawIndexedIndirect()"; }
private:
const vk::Buffer* buffer;
VkDeviceSize offset;
......@@ -672,6 +715,8 @@ public:
srcImage->copyTo(dstImage, region);
}
std::string description() override { return "vkCmdImageToImageCopy()"; }
private:
const vk::Image* srcImage;
vk::Image* dstImage;
......@@ -691,6 +736,8 @@ public:
srcBuffer->copyTo(dstBuffer, region);
}
std::string description() override { return "vkCmdBufferToBufferCopy()"; }
private:
const vk::Buffer* srcBuffer;
vk::Buffer* dstBuffer;
......@@ -710,6 +757,8 @@ public:
srcImage->copyTo(dstBuffer, region);
}
std::string description() override { return "vkCmdImageToBufferCopy()"; }
private:
vk::Image* srcImage;
vk::Buffer* dstBuffer;
......@@ -729,6 +778,8 @@ public:
dstImage->copyFrom(srcBuffer, region);
}
std::string description() override { return "vkCmdBufferToImageCopy()"; }
private:
vk::Buffer* srcBuffer;
vk::Image* dstImage;
......@@ -748,6 +799,8 @@ public:
dstBuffer->fill(dstOffset, size, data);
}
std::string description() override { return "vkCmdFillBuffer()"; }
private:
vk::Buffer* dstBuffer;
VkDeviceSize dstOffset;
......@@ -768,6 +821,8 @@ public:
dstBuffer->update(dstOffset, data.size(), data.data());
}
std::string description() override { return "vkCmdUpdateBuffer()"; }
private:
vk::Buffer* dstBuffer;
VkDeviceSize dstOffset;
......@@ -787,6 +842,8 @@ public:
image->clear(color, range);
}
std::string description() override { return "vkCmdClearColorImage()"; }
private:
vk::Image* image;
const VkClearColorValue color;
......@@ -806,6 +863,8 @@ public:
image->clear(depthStencil, range);
}
std::string description() override { return "vkCmdClearDepthStencilImage()"; }
private:
vk::Image* image;
const VkClearDepthStencilValue depthStencil;
......@@ -829,6 +888,8 @@ public:
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 @@ public:
srcImage->blit(dstImage, region, filter);
}
std::string description() override { return "vkCmdBlitImage()"; }
private:
const vk::Image* srcImage;
vk::Image* dstImage;
......@@ -867,6 +930,8 @@ public:
srcImage->resolve(dstImage, region);
}
std::string description() override { return "vkCmdBlitImage()"; }
private:
const vk::Image* srcImage;
vk::Image* dstImage;
......@@ -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.
}
std::string description() override { return "vkCmdPipelineBarrier()"; }
};
class CmdSignalEvent : public vk::CommandBuffer::Command
......@@ -902,6 +969,8 @@ public:
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 @@ public:
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 @@ public:
ev->wait();
}
std::string description() override { return "vkCmdWaitEvent()"; }
private:
vk::Event* ev;
};
......@@ -969,6 +1042,8 @@ public:
}
}
std::string description() override { return "vkCmdBindDescriptorSet()"; }
private:
VkPipelineBindPoint pipelineBindPoint;
const vk::PipelineLayout *pipelineLayout;
......@@ -995,6 +1070,8 @@ public:
memcpy(&executionState.pushConstants.data[offset], data, size);
}
std::string description() override { return "vkCmdSetPushConstants()"; }
private:
uint32_t offset;
uint32_t size;
......@@ -1015,6 +1092,8 @@ public:
executionState.renderer->addQuery(queryPool->getQuery(query));
}
std::string description() override { return "vkCmdBeginQuery()"; }
private:
vk::QueryPool* queryPool;
uint32_t query;
......@@ -1035,6 +1114,8 @@ public:
queryPool->end(query);
}
std::string description() override { return "vkCmdEndQuery()"; }
private:
vk::QueryPool* queryPool;
uint32_t query;
......@@ -1053,6 +1134,8 @@ public:
queryPool->reset(firstQuery, queryCount);
}
std::string description() override { return "vkCmdResetQueryPool()"; }
private:
vk::QueryPool* queryPool;
uint32_t firstQuery;
......@@ -1083,6 +1166,8 @@ public:
queryPool->writeTimestamp(query);
}
std::string description() override { return "vkCmdWriteTimeStamp()"; }
private:
vk::QueryPool* queryPool;
uint32_t query;
......@@ -1105,6 +1190,8 @@ public:
dstBuffer->getOffsetPointer(dstOffset), stride, flags);
}
std::string description() override { return "vkCmdCopyQueryPoolResults()"; }
private:
const vk::QueryPool* queryPool;
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