Skip to content

Fix skipping frames when deinterlace ring buffer is present with sync… #28

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: nodos-1.3
Choose a base branch
from

Conversation

caner-milko
Copy link
Member

… multi out

This is caused by not submitting for the skipped frame in deinterlacing ring buffer's execute.

… multi out

This is caused by not submitting for the skipped frame in deinterlacing ring buffer's execute.
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes skipped-frame handling in the deinterlacing ring buffer by adding a SkipExecute path and wiring it through the ring node, and bumps the plugin version.

  • Bump plugin version to 3.10.8
  • Add SkipExecute to ResourceInterface and implement it in GPU/CPU resource classes
  • Wire SkipExecuteRingNode into DeinterlacedBufferRingNode for non-deinterlaced fields

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
Plugins/nosUtilities/Utilities.noscfg Bumped version from 3.10.7 to 3.10.8
Plugins/nosUtilities/Source/Ring.h Added SkipExecute API, implemented in resources, and introduced SkipExecuteRingNode
Plugins/nosUtilities/Source/DeinterlacedBufferRing.cpp Updated else branch to call SkipExecuteRingNode instead of only scheduling
Comments suppressed due to low confidence (3)

Plugins/nosUtilities/Source/DeinterlacedBufferRing.cpp:85

  • [nitpick] Indentation for SendScheduleRequest(1) is inconsistent with the newly introduced braces. Consider aligning its indentation within the block for clarity.
SendScheduleRequest(1);

Plugins/nosUtilities/Source/Ring.h:58

  • SkipExecute does not accept a ringExecuteName parameter, so resource implementations cannot use the actual ring name for logging or profiling. Consider updating its signature to pass ringExecuteName through.
virtual nosResult SkipExecute(nosNodeExecuteParams* params) { return NOS_RESULT_SUCCESS; }

Plugins/nosUtilities/Source/DeinterlacedBufferRing.cpp:84

  • The new SkipExecute path and its behavior for deinterlacing should be covered by unit or integration tests to ensure skipped frames are handled correctly.
res = SkipExecuteRingNode(params, NOS_NAME_STATIC("DeinterlacedBufferRing"));

Comment on lines +493 to +496
// Force submit to ensure passes run correctly
vkss::EndCmd(vkss::BeginCmd(NOS_NAME("SkipExecute"), executeParams->NodeId), true, nullptr);
return NOS_RESULT_SUCCESS;
}
Copy link
Preview

Copilot AI Jun 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The SkipExecute implementations in GPUBufferResource and GPUTextureResource duplicate the BeginCmd/EndCmd logic. Consider extracting this into a shared helper to reduce duplication.

Suggested change
// Force submit to ensure passes run correctly
vkss::EndCmd(vkss::BeginCmd(NOS_NAME("SkipExecute"), executeParams->NodeId), true, nullptr);
return NOS_RESULT_SUCCESS;
}
// Use shared helper to perform SkipExecute logic
ExecuteSkipCommand(NOS_NAME("SkipExecute"), executeParams->NodeId);
return NOS_RESULT_SUCCESS;
}
static void ExecuteSkipCommand(const char* commandName, uint32_t nodeId)
{
// Force submit to ensure passes run correctly
vkss::EndCmd(vkss::BeginCmd(commandName, nodeId), true, nullptr);
}

Copilot uses AI. Check for mistakes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant