mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-13 22:58:30 +09:00
[Fix] (Pipe, State): look the resource handle up on the content paths instead of minting it, publish the bind mask from the two draw-time emitters, pair the destroy with the create's own latch, and state the record-lifetime rule the applier now holds
This commit is contained in:
@@ -115,7 +115,14 @@ namespace MobileGL::MG_Pipe {
|
||||
void MGPipeMintResourceHandle(MG_State::GLState::BufferObject& buffer);
|
||||
// In this order, and it is not negotiable (D-L): the destroy resolves the handle, and
|
||||
// MGPipeSlotAllocator::Free erases the lifetimeId -> slot mapping it resolves through.
|
||||
void MGPipeEmitResourceDestroyAndFree(MG_State::GLState::BufferObject& buffer);
|
||||
//
|
||||
// RETURNS whether resource_destroy was emitted, which is the LATCH taken at this buffer's
|
||||
// create and not a second reading of MGPipeResourceSubsystemEnabled(). The destructor
|
||||
// needs that answer to decide whether the legacy OnDestroy still owes a call: asking the
|
||||
// predicate twice pairs a create emitted under one registration with a destroy gated on
|
||||
// another, and either direction leaks - a live applier record on a slot about to be
|
||||
// re-handed-out, or a backend object nobody releases.
|
||||
Bool MGPipeEmitResourceDestroyAndFree(MG_State::GLState::BufferObject& buffer);
|
||||
|
||||
void MGPipeEmitResourceCreate(MG_State::GLState::BufferObject& buffer);
|
||||
void MGPipeEmitResourceRespecify(MG_State::GLState::BufferObject& buffer);
|
||||
|
||||
Reference in New Issue
Block a user