Skip to content

[SPIR-V] SPV_EXT_descriptor_heap RasterizerOrdered flag lost on heap buffer alias re-derivation, suppressing ROV interlock #8829

Description

Description

When a heap buffer alias pointer is re-derived in emitDescriptorHeapBufferPointer (SpirvEmitter.cpp), the new SpirvInstruction does not copy the RasterizerOrdered flag set on the original pointer in emitDescriptorHeapBufferAccess. Accesses through a local RasterizerOrderedStructuredBuffer or RasterizerOrderedByteAddressBuffer alias therefore do not cause SpirvBuilder to emit the required begin/end invocation interlock. This is a silent correctness bug.

Fix

Add bufferDataPtr->setRasterizerOrdered(isRasterizerOrderedView(decl->getType())) after restoring the storage class and layout rule on the re-derived pointer.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugBug, regression, crashneeds-triageAwaiting triagespirvWork related to SPIR-V

    Type

    No type

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions