[MG_IntegrationTest] (P7): every Magma lane pins the ICD the monolith arm has always pinned

Integrator ruling on the asymmetry package L reported. The six hand-laid Magma lanes (Fm,
Buffers, RunAhead, Caches, NamedBlit, P5fRsp) appended ${MGL_ITEST_COMMON_ENV}, so the monolith
DirectVulkan. arm ran with VK_ICD_FILENAMES pinned and the three lavapipe iterationRP repairs
forced on, while the 73 integration-magma-split entries ran against whatever ICD the loader
found first with those repairs at their device auto-detection default.

That is a latent flake rather than a semantic: the day a runner or a workstation grows a second
ICD, the lane measures a different driver from the gate it mirrors and nothing in its output
says so. Consistency wins - all six now append ${MGL_ITEST_VULKAN_ENV}, the same list the new
MGL_ITEST_VULKAN_{SPLIT,SPAWN,TCP}_ENVIRONMENT use.

The ICD pin follows the BACKEND, not the lane, in the two blocks that register both: NamedBlit
and P5fRsp loop over DirectGLES and DirectVulkan, and handing VK_ICD_FILENAMES to the DirectGLES
half would pin an ICD for a lane that never opens Vulkan. Verified in the discovery: all 73
integration-magma-split entries carry VK_ICD_FILENAMES and all three repair variables, and the
two DirectGLES.Split.NamedBlit. entries carry neither.

Re-run after the change, as the ruling asks: integration-magma-split 71 PASS / 0 FAIL / 2 SKIP
out of 73, unchanged - the two skips are the same ClipDistance pair with the same reason.
This commit is contained in:
2026-09-22 14:24:19 -04:00
parent faca09d4ad
commit a7425d95e0
+28 -6
View File
@@ -2636,9 +2636,19 @@ if (MOBILEGL_BUILD_DISAGGREGATED)
# the lane P6.5 left green (same names, same labels, same log paths) and the two new arms
# differ from it in exactly one dimension. That is what makes a red here readable: it is a
# TRANSPORT fact, because nothing else changed.
#
# ${MGL_ITEST_VULKAN_ENV} AND NOT ${MGL_ITEST_COMMON_ENV} (P7 package L, integrator ruling).
# Until this ruling the six Magma lanes appended the COMMON list, so the monolith
# `DirectVulkan.` arm ran with VK_ICD_FILENAMES pinned and the three lavapipe iterationRP
# repairs forced on while these 73 entries ran against whatever ICD the loader happened to
# find first, with the repairs at their device auto-detection default. That is not a
# semantic difference between two lanes, it is a latent flake: the day a runner or a
# workstation grows a second ICD, this lane measures a different driver from the gate it
# mirrors and nothing in its output says so. Consistency over "meaning unchanged" - and the
# re-run after the change is part of the ruling: integration-magma-split stayed 71/0/2.
set(MGL_ITEST_MAGMA_WIRE_FLAVOUR_ENV
"MOBILEGL_BACKEND_TYPE=DirectVulkan" "MOBILEGL_ITEST_REQUIRE_GPU=1" "MGITEST_SPLIT_LANE=1"
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_COMMON_ENV})
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_VULKAN_ENV})
# Every entry here is green on the inproc arm, R11F_G11F_B10F packed-float mip generation
# included: the GPU shader blit retires the named native-format refusal, so
# GenerateMipmapPackedFloatPixels carries its siblings' label and their pixels assertion.
@@ -2686,7 +2696,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED)
"MOBILEGL_IPC_ROLE_SPLIT_STATE=1" "MOBILEGL_IPC_STRICT_ERRORS=1"
"MOBILEGL_IPC_ADOPT_TIER=2" "MGITEST_PERSISTENT_MAP_ARM=emulated"
"MOBILEGL_ITEST_REQUIRE_GPU=1" "MGITEST_SPLIT_LANE=1"
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_COMMON_ENV})
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_VULKAN_ENV}) # the ICD pin, see the Fm lane above
foreach(mglItestArm IN LISTS MGL_ITEST_MAGMA_ARMS)
mgl_itest_magma_arm_shape(${mglItestArm} buffers)
mgl_itest_join_environment(MGL_ITEST_MAGMA_BUFFER_ENVIRONMENT
@@ -2751,7 +2761,8 @@ if (MOBILEGL_BUILD_DISAGGREGATED)
"MOBILEGL_IPC_SPIN_US=0" "MOBILEGL_IPC_ADOPT_TIER=2"
"MGITEST_MAGMA_RUNAHEAD_LANE=1" "MGITEST_SPLIT_LANE=1"
"MOBILEGL_ITEST_REQUIRE_GPU=1"
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_COMMON_ENV} ${mglItestArmTransportEnv})
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_VULKAN_ENV} # the ICD pin, see the Fm lane
${mglItestArmTransportEnv})
foreach(runAheadCase
QueuedBufferVersionsAndDeletedNameReuseKeepTheirPixels
QueuedProgramRebindsKeepEachUniformSnapshot
@@ -2785,7 +2796,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED)
"MOBILEGL_IPC_SPIN_US=0" "MOBILEGL_IPC_ADOPT_TIER=2"
"MGITEST_MAGMA_CACHES_LANE=1" "MGITEST_SPLIT_LANE=1"
"MOBILEGL_ITEST_REQUIRE_GPU=1"
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_COMMON_ENV})
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_VULKAN_ENV}) # the ICD pin, see the Fm lane above
# P7 package L: THE INPROC ARM ALONE, for the run-ahead lane's reason one step more
# explicit - MagmaWireCacheScenario::SetUp asserts `runtime.transportName == "inproc"`
# outright (MagmaWireCacheScenario.cpp:53), because the whole lane reads the SERVER's own
@@ -2843,12 +2854,20 @@ if (MOBILEGL_BUILD_DISAGGREGATED)
if (namedBlitBackend STREQUAL "DirectVulkan")
set(namedBlitArms ${MGL_ITEST_MAGMA_ARMS})
endif()
# The ICD pin follows the BACKEND here, not the lane: this block registers both, and
# handing VK_ICD_FILENAMES to the DirectGLES half would pin an ICD for a lane that
# never opens Vulkan (see the Fm lane above for the ruling).
if (namedBlitBackend STREQUAL "DirectVulkan")
set(namedBlitBaseEnv ${MGL_ITEST_VULKAN_ENV})
else()
set(namedBlitBaseEnv ${MGL_ITEST_COMMON_ENV})
endif()
foreach(mglItestArm IN LISTS namedBlitArms)
mgl_itest_magma_arm_shape(${mglItestArm})
mgl_itest_join_environment(MGL_ITEST_NAMED_BLIT_ENVIRONMENT
"MOBILEGL_BACKEND_TYPE=${namedBlitBackend}"
"MOBILEGL_ITEST_REQUIRE_GPU=1" "MGITEST_SPLIT_LANE=1"
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_COMMON_ENV} ${mglItestArmTransportEnv})
${MGL_ITEST_CAPABILITY_ENV} ${namedBlitBaseEnv} ${mglItestArmTransportEnv})
# THE LABEL IS `integration-magma-split` AND NOT `integration-split-magma`, and that is not
# a preference: `ctest -L` takes a REGEX, not an exact name, so `-L integration-split`
# MATCHES a label spelled `integration-split-magma` as a substring. The obvious name would
@@ -2985,8 +3004,11 @@ if (MOBILEGL_BUILD_DISAGGREGATED)
# stays on the INPROC entries alone - the CI step that reads it require_greens exactly
# the two names it has always had, and `ctest -L` would have matched a suffixed spelling.
set(p5f_rsp_arms Split)
set(p5f_rsp_base_env ${MGL_ITEST_COMMON_ENV})
if (NOT backend STREQUAL "DirectGLES")
set(p5f_rsp_arms ${MGL_ITEST_MAGMA_ARMS})
# The ICD pin follows the backend, as in the NamedBlit block (see the Fm lane).
set(p5f_rsp_base_env ${MGL_ITEST_VULKAN_ENV})
endif()
foreach(mglItestArm IN LISTS p5f_rsp_arms)
mgl_itest_magma_arm_shape(${mglItestArm} p5f-rsp)
@@ -3001,7 +3023,7 @@ if (MOBILEGL_BUILD_DISAGGREGATED)
"MOBILEGL_BACKEND_TYPE=${backend}" "MGITEST_SPLIT_LANE=1"
"MGITEST_P5F_RSP_LANE=1" "MOBILEGL_PIPE_STATS=1" "MOBILEGL_PIPE_STATS_PERIOD=1"
"MOBILEGL_LOG_FILE_PATH=${CMAKE_CURRENT_BINARY_DIR}/p5f-rsp-${backend}${mglItestArmLogTag}.log"
${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_COMMON_ENV} ${mglItestArmTransportEnv})
${MGL_ITEST_CAPABILITY_ENV} ${p5f_rsp_base_env} ${mglItestArmTransportEnv})
gtest_discover_tests(MobileGLIntegrationTest
TEST_PREFIX "${backend}.${mglItestArm}.P5fRsp."
TEST_FILTER "F1WireScenario.EachWireFrameHasZeroResidualPulls"