mirror of
https://github.com/Takiiiiiiii/strato.git
synced 2025-07-17 08:46:39 +00:00
Finish off transform feedback implementation
This commit is contained in:
@ -272,9 +272,11 @@ namespace skyline::gpu::interconnect::maxwell3d {
|
||||
u32 vertexOffset;
|
||||
u32 firstInstance;
|
||||
bool indexed;
|
||||
bool transformFeedbackEnable;
|
||||
};
|
||||
auto *drawParams{ctx.executor.allocator->EmplaceUntracked<DrawParams>(DrawParams{stateUpdater,
|
||||
count, first, instanceCount, vertexOffset, firstInstance, indexed})};
|
||||
count, first, instanceCount, vertexOffset, firstInstance, indexed,
|
||||
ctx.gpu.traits.supportsTransformFeedback ? transformFeedbackEnable : false})};
|
||||
|
||||
const auto &surfaceClip{clearEngineRegisters.surfaceClip};
|
||||
vk::Rect2D scissor{
|
||||
@ -285,11 +287,16 @@ namespace skyline::gpu::interconnect::maxwell3d {
|
||||
ctx.executor.AddSubpass([drawParams](vk::raii::CommandBuffer &commandBuffer, const std::shared_ptr<FenceCycle> &, GPU &gpu, vk::RenderPass, u32) {
|
||||
drawParams->stateUpdater.RecordAll(gpu, commandBuffer);
|
||||
|
||||
if (drawParams->transformFeedbackEnable)
|
||||
commandBuffer.beginTransformFeedbackEXT(0, {}, {});
|
||||
|
||||
if (drawParams->indexed)
|
||||
commandBuffer.drawIndexed(drawParams->count, drawParams->instanceCount, drawParams->first, static_cast<i32>(drawParams->vertexOffset), drawParams->firstInstance);
|
||||
else
|
||||
commandBuffer.draw(drawParams->count, drawParams->instanceCount, drawParams->first, drawParams->firstInstance);
|
||||
|
||||
if (drawParams->transformFeedbackEnable)
|
||||
commandBuffer.endTransformFeedbackEXT(0, {}, {});
|
||||
}, scissor, {}, activeState.GetColorAttachments(), activeState.GetDepthAttachment(), !ctx.gpu.traits.quirks.relaxedRenderPassCompatibility);
|
||||
|
||||
constantBuffers.ResetQuickBind();
|
||||
|
@ -84,6 +84,6 @@ namespace skyline::gpu::interconnect::maxwell3d {
|
||||
|
||||
void Clear(engine::ClearSurface &clearSurface);
|
||||
|
||||
void Draw(engine::DrawTopology topology, bool indexed, u32 count, u32 first, u32 instanceCount, u32 vertexOffset, u32 firstInstance);
|
||||
void Draw(engine::DrawTopology topology, bool transformFeedbackEnable, bool indexed, u32 count, u32 first, u32 instanceCount, u32 vertexOffset, u32 firstInstance);
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user