diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 16b4dfe1..a735df4d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1638,7 +1638,12 @@ jobs: ${{ runner.temp }}/magma-cache-syncval if-no-files-found: ignore - - name: Magma P7 native mip format debt stays a named refusal + # The packed-float chain is generated by a real GPU shader blit, so this entry sits in the + # integration-magma-split lane with its siblings (CMakeLists.txt's fm loop) and carries + # their pixels assertion. Its named check survives the flip in the only direction that has + # evidence behind it: the case must EXECUTE, PASS, and never skip - a lane-level exit code + # alone would not separate "generated" from "quietly absent". + - name: Magma P7 packed-float mip generation executes green under strict split state working-directory: build-split env: MOBILEGL_ITEST_REQUIRE_GPU: "1" @@ -1646,21 +1651,17 @@ jobs: MOBILEGL_IPC_ROLE_SPLIT_STATE: "1" MOBILEGL_TRANSPORT: "inproc" run: | - private_log=MobileGL/MG_IntegrationTest/p5f-fm-GenerateMipmapPackedFloatPixels.log - rm -f "${private_log}" - rc=0 - ctest -L integration-magma-p7-known-red --no-tests=error --output-on-failure \ - --output-junit "${RUNNER_TEMP}/magma-p7.xml" || rc=$? - test "${rc}" -ne 0 - python3 - "${RUNNER_TEMP}/magma-p7.xml" "${private_log}" <<'PY' - import pathlib, sys, xml.etree.ElementTree as ET - cases = list(ET.parse(sys.argv[1]).getroot().iter("testcase")) - assert len(cases) == 1, "the P7 probe must execute exactly one named case" - case = cases[0] - assert case.get("name", "").endswith("GenerateMipmapPackedFloatPixels"), case.attrib - assert case.find("skipped") is None and case.find("failure") is not None, "the P7 probe must fail, never skip" - log = pathlib.Path(sys.argv[2]).read_text() - assert 'Fatal{UnmigratedVerb, "Magma:mipmap-native-format@P7"}' in log, "missing named native-format refusal" + p7_case='^DirectVulkan\.Split\.Fm\.F1WireScenario\.GenerateMipmapPackedFloatPixels$' + ctest -R "${p7_case}" --show-only=json-v1 > "${RUNNER_TEMP}/magma-p7-lane.json" + ctest -R "${p7_case}" --no-tests=error --output-on-failure \ + --output-junit "${RUNNER_TEMP}/magma-p7.xml" + python3 - "${GITHUB_WORKSPACE}/MobileGL/MG_IntegrationTest/Harness/split_log_paths.py" \ + "${RUNNER_TEMP}/magma-p7-lane.json" "${RUNNER_TEMP}/magma-p7.xml" <<'PY' + import importlib.util, json, sys + spec = importlib.util.spec_from_file_location("slp", sys.argv[1]) + slp = importlib.util.module_from_spec(spec); spec.loader.exec_module(slp) + name = "DirectVulkan.Split.Fm.F1WireScenario.GenerateMipmapPackedFloatPixels" + slp.require_green(json.load(open(sys.argv[2])), sys.argv[3], [name]) PY # Client vertex/index inputs are copied into owned wire buffer resources. diff --git a/MobileGL/MG_IntegrationTest/CMakeLists.txt b/MobileGL/MG_IntegrationTest/CMakeLists.txt index 87d37e5a..3b6efb7b 100644 --- a/MobileGL/MG_IntegrationTest/CMakeLists.txt +++ b/MobileGL/MG_IntegrationTest/CMakeLists.txt @@ -2433,19 +2433,16 @@ if (MOBILEGL_BUILD_DISAGGREGATED) "MOBILEGL_BACKEND_TYPE=DirectVulkan" "MOBILEGL_TRANSPORT=inproc" "MOBILEGL_ITEST_REQUIRE_GPU=1" "MGITEST_SPLIT_LANE=1" ${MGL_ITEST_CAPABILITY_ENV} ${MGL_ITEST_COMMON_ENV}) + # Every entry here is green, 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. foreach(fmSlot ComputeImageStoreThroughViewPreservesOtherRootLayer EnabledVertexBufferDrawKeepsNamedP7Fatal SrgbDrawTracksFramebufferConversion Texture1DFramebufferClearPixels VertexIdSamplerAndScalarUniformPixels ComputeImageStoreFramebufferPixels PartialTextureUploadPreservesGpuClearPixels TextureViewClearTargetsItsRootMipAndLayer ClearBufferfiPixels ClearBufferfvPixels ClearBufferivPixels ClearBufferuivPixels ClearNamedFramebufferfiPixels ClearNamedFramebufferfvPixels ClearNamedFramebufferivPixels ClearNamedFramebufferuivPixels CopyTexImage2DPixels CopyTexSubImage2DPixels GenerateMipmapPixels GenerateMipmapPackedFloatPixels GenerateMipmapDepthPixels) - set(MGL_ITEST_FM_LABEL "integration-magma-split") - if (fmSlot STREQUAL "GenerateMipmapPackedFloatPixels") - # R11F_G11F_B10F mip blits already fail on the baseline Magma lane. - # Preserve a separately named negative probe for this P7 native-format debt. - set(MGL_ITEST_FM_LABEL "integration-magma-p7-known-red") - endif() gtest_discover_tests(MobileGLIntegrationTest TEST_PREFIX "DirectVulkan.Split.Fm." TEST_FILTER "F1WireScenario.${fmSlot}" DISCOVERY_TIMEOUT 30 PROPERTIES - LABELS "${MGL_ITEST_FM_LABEL}" + LABELS "integration-magma-split" TIMEOUT ${MGL_ITEST_TIMEOUT} ENVIRONMENT "${MGL_ITEST_MAGMA_WIRE_ENVIRONMENT}\;MOBILEGL_LOG_FILE_PATH=${CMAKE_CURRENT_BINARY_DIR}/p5f-fm-${fmSlot}.log") endforeach() diff --git a/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt b/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt index 8220c9a7..35067a42 100644 --- a/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt +++ b/MobileGL/MG_IntegrationTest/Harness/dualblock-expected-fatals.txt @@ -43,5 +43,7 @@ # The expanded Magma lane also covers application VBO/EBO/UBO/SSBO and persistent # map consumers. The former VBO fatal case now asserts rendered pixels; no new # field-Fatal expectations or skip exemptions accompany that retirement. -# Its named P7 native-format probe has a separate, enforced known-red CI lane. +# The former P7 native-format probe now asserts generated pixels too: R11F_G11F_B10F mip +# generation goes through the GPU shader blit, so that entry carries the ordinary Magma +# lane label and the lane's named green step, not a known-red arm. # Every new Fatal or Admitted in this census remains a regression.