mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
CI: barriered-validate wrapper builds without the transport, and the field-ownership self-test expects CopyTexImage2D unbarriered since P15.
This commit is contained in:
@@ -3428,9 +3428,14 @@ namespace MobileGL::MG_Pipe {
|
||||
}
|
||||
|
||||
void MGPipeValidateForVerbBarriered(MGPipeVerb verb) {
|
||||
#if MOBILEGL_BUILD_DISAGGREGATED
|
||||
g_forceBarrieredFill = true;
|
||||
MGPipeValidateForVerb(verb);
|
||||
g_forceBarrieredFill = false;
|
||||
#else
|
||||
// Without a transport every fill is barriered already (fillOwed is constant true).
|
||||
MGPipeValidateForVerb(verb);
|
||||
#endif
|
||||
}
|
||||
|
||||
// ---- the validate point (P2 brief D1) ----
|
||||
|
||||
@@ -328,8 +328,9 @@ def build_admitted(accessors, ownership, phase, verbs, verb_ops, waits, verb_cla
|
||||
|
||||
Disjunct (1) survives as its own term because it is a stronger claim about the same pair: it
|
||||
says the client waits for the record STATICALLY, which is what lets a row whose phase IS this
|
||||
one (GetTextureUnitObject@CopyTexImage2D) still be admitted. Without (1) it would fail the
|
||||
lane; without (2) GetTransformFeedbackProgram@DrawArrays would fail it, and CONTRACT-P5E §5.7
|
||||
one still be admitted (GetTextureUnitObject@CopyTexImage2D was, until P15 made
|
||||
copy_framebuffer_to_texture fire-and-forget; the self-test barriers that op again to show it).
|
||||
Without (1) such a row would fail the lane; without (2) GetTransformFeedbackProgram@DrawArrays would fail it, and CONTRACT-P5E §5.7
|
||||
rules transform feedback out of this phase entirely - so the lane would be red on a row no
|
||||
package here is allowed to touch.
|
||||
|
||||
@@ -1040,8 +1041,12 @@ def self_test():
|
||||
expect("GetFramebufferBindingSlot@ReadPixels is REJECTED since P9 (read_pixels_to_buffer "
|
||||
"stamps ReadPixels without a wait)",
|
||||
"GetFramebufferBindingSlot@ReadPixels" not in derived)
|
||||
expect("GetTextureUnitObject@CopyTexImage2D is admitted by disjunct 1",
|
||||
"GetTextureUnitObject@CopyTexImage2D" in derived)
|
||||
# P15 moved the second: copy_framebuffer_to_texture is fire-and-forget (kWaitNone), so
|
||||
# CopyTexImage2D is no longer statically barriered and its P5e-owed pair leaves too. The
|
||||
# control below barriers that op again and the pair must come back by disjunct 1.
|
||||
expect("GetTextureUnitObject@CopyTexImage2D is REJECTED since P15 (copy_framebuffer_to_texture "
|
||||
"waits for nothing)",
|
||||
"GetTextureUnitObject@CopyTexImage2D" not in derived)
|
||||
# Disjunct 2's three. Each is a debt some LATER phase owes, on a verb this phase does not
|
||||
# barrier - and CONTRACT-P5E §5.7 rules transform feedback out of P5e entirely, so the
|
||||
# static rule alone would have failed the lane on a row no package here may touch.
|
||||
@@ -1090,6 +1095,11 @@ def self_test():
|
||||
"GetFramebufferBindingSlot@ReadPixels" not in admitted_pairs_for(wire_text=unwaited)
|
||||
and "GetTextureObject@ReadPixels" in admitted_pairs_for(wire_text=unwaited))
|
||||
|
||||
recopied = set_wait("CopyFramebufferToTexture", "kWaitApplied")
|
||||
expect("barriering copy_framebuffer_to_texture brings GetTextureUnitObject@CopyTexImage2D back "
|
||||
"(disjunct 1)",
|
||||
"GetTextureUnitObject@CopyTexImage2D" in admitted_pairs_for(wire_text=recopied))
|
||||
|
||||
# The same disjunct from the other side. ID-118 moved ResourceCopyRegion to a barriered wait
|
||||
# class; unbarrier it again and its P5e-owed pairs go, while GetTextureObject stays admitted
|
||||
# on ID-125's second disjunct because it retires in P7. BOTH disjuncts hold for that pair
|
||||
|
||||
Reference in New Issue
Block a user