Skip to content

Commit

Permalink
Revert "active_state: optimise Refresh to use buffer sequencing t…
Browse files Browse the repository at this point in the history
…o avoid …" (#59)

This reverts commit 3a52c98.
  • Loading branch information
Ishan09811 authored Jan 16, 2025
1 parent 38c0d28 commit dfa6aab
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -146,12 +146,10 @@ namespace skyline::gpu::interconnect::maxwell3d {

indexType = ConvertIndexType(engine->indexBuffer.indexSize);

if (quadConversion) {
if (quadConversion)
megaBufferBinding = GenerateQuadConversionIndexBuffer(ctx, engine->indexBuffer.indexSize, *view, firstIndex, elementCount);
quadBufferSequence.SetSequence(quadBufferSequence.GenerateBufferBindingHash(megaBufferBinding));
} else {
else
megaBufferBinding = view->TryMegaBuffer(ctx.executor.cycle, ctx.gpu.megaBufferAllocator, ctx.executor.executionTag);
}

if (megaBufferBinding)
builder.SetIndexBuffer(megaBufferBinding, indexType);
Expand All @@ -163,22 +161,17 @@ namespace skyline::gpu::interconnect::maxwell3d {
if (*view)
view->GetBuffer()->PopulateReadBarrier(vk::PipelineStageFlagBits::eVertexInput, srcStageMask, dstStageMask);

if (didEstimateSize != estimateSize ||
(elementCount + firstIndex > usedElementCount + usedFirstIndex) ||
quadConversion != usedQuadConversion) {
if (didEstimateSize != estimateSize || (elementCount + firstIndex > usedElementCount + usedFirstIndex) || quadConversion != usedQuadConversion)
return true;
}

// TODO: optimise this to use buffer sequencing to avoid needing to regenerate the quad buffer every time. We can't use as it is rn though because sequences aren't globally unique and may conflict after buffer recreation
if (usedQuadConversion) {
if (!quadBufferSequence.IsValid() || quadBufferSequence.HasChanged()) {
megaBufferBinding = GenerateQuadConversionIndexBuffer(ctx, engine->indexBuffer.indexSize, *view, firstIndex, elementCount);
quadBufferSequence.Update();
quadBufferSequence.SetSequence(quadBufferSequence.GenerateBufferBindingHash(megaBufferBinding));
}
megaBufferBinding = GenerateQuadConversionIndexBuffer(ctx, engine->indexBuffer.indexSize, *view, firstIndex, elementCount);
builder.SetIndexBuffer(megaBufferBinding, indexType);
} else if (megaBufferBinding) {
auto newMegaBufferBinding = view->TryMegaBuffer(ctx.executor.cycle, ctx.gpu.megaBufferAllocator, ctx.executor.executionTag);
if (newMegaBufferBinding != megaBufferBinding) {
if (auto newMegaBufferBinding{view->TryMegaBuffer(ctx.executor.cycle, ctx.gpu.megaBufferAllocator, ctx.executor.executionTag)};
newMegaBufferBinding != megaBufferBinding) {

megaBufferBinding = newMegaBufferBinding;
if (megaBufferBinding)
builder.SetIndexBuffer(megaBufferBinding, indexType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#include <gpu/buffer_manager.h>
#include "common.h"
#include "pipeline_state.h"
#include "buffer_sequence_tracker.h"

namespace skyline::gpu::interconnect::maxwell3d {
class VertexBufferState : dirty::RefreshableManualDirty, dirty::CachedManualDirty {
Expand Down Expand Up @@ -52,7 +51,6 @@ namespace skyline::gpu::interconnect::maxwell3d {
u32 usedElementCount{};
u32 usedFirstIndex{};
bool usedQuadConversion{};
BufferSequenceTracker quadBufferSequence;

public:
IndexBufferState(dirty::Handle dirtyHandle, DirtyManager &manager, const EngineRegisters &engine);
Expand Down

This file was deleted.

0 comments on commit dfa6aab

Please sign in to comment.