Skip to content

Residency sets causing corruption #2565

@kickblade

Description

@kickblade

Platform: MacBook Air M2 with macOS 15.5 (24F74)

I have some code that loops through a set of framebuffers and resource sets and kicks off a fullscreen draw pass as follows:

unsigned int frameBufferCount = 3;
for( size_t i = 1; i < frameBufferCount; ++I )
{
	encoder.Bind( pipeline );
	encoder.Bind( resourceSets[i-1] );
	encoder.Bind( framebuffers[i] );
	encoder.Bind( vertexBuffers, vertexBufferCount );
	encoder.SetViewport( 0, 0, frameBufferWidth, frameBufferHeight );
	encoder.SetScissor( 0, 0, frameBufferWidth, frameBufferHeight );
	encoder.Draw( indexBuffer, indexType, indexCount );
	encoder.Bind( nullptr );
}

This was all working and outputting the same image as an actual android device prior to this git commit: c3f40ee - "Put resources in residency sets"

However, it now causes random corruption every frame at runtime.

Android Reference - Ground Truth
Image

MacOS - Before residency sets
Image

MacOS - After residency sets
Image
Image

The residency sets commit is causing random squares (corruption) to appear. I am able to fix it by hard setting _metalFeatures.residencySets to be false and building the libs manually. I can also fix it on latest code by doing the same thing.

Residency sets seem to be ok in this kind of loop if the framebuffer count is <= 2 but any more than that and I see corruption.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions