mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-11 05:38:31 +09:00
- Five of the applier's eight entry points had no caller in any build, including both wires the redundancy of the patch trio and of the residual block exists to arm. ROADMAP.md asks that every gate be able to go red for the reason it exists; these could not change colour at all. - Each wire is now driven in three states: DISARMED (the applier has not scattered the bytes it would compare, which is the MOBILEGL_PIPE_PUSH=0x10 shape), ARMED AND AGREEING, and ARMED AND DIVERGING. The diverging state is asserted in the form the build gives it - a poison or verify build aborts and the parent reads SIGABRT and the Fatal line out of the log, a shipped push build counts and logs - so neither case is skipped anywhere. - ResidualTripWireHoldsAcrossAVerbClassThatDoesNotPublishTheBlock is the draw-then-dispatch sequence itself: it aborts on the pre-ledger form of the wire and passes on this one. - The patch case carries a NaN outer level, a legal glPatchParameterfv value that must compare equal to itself, which is why the wire memcmps rather than compares. - set_pixel_pack_state, set_vertex_attrib_defaults and delete_render_state are driven and read back through the accessor a backend would use, each under the verb class that publishes it. MGPipeDeriveRenderStateFields - D-7's kept whole-block form, which production does not call - is checked against the chunk-scoped one. - The suite gains its own main() (and links gtest, not gtest_main) for PipeInputsTest's reason: the diverging cases read the wire's line back out of a log file this process names before anything logs. - SetterConsistency drives SetStencilOp and SetStencilFunc and SetStencilMask on BOTH faces and SetHint on all four targets. Face 0's Func ends chunk P2 and its three ops open P3, which face 1's Func closes, so the previous one-face-each walk never wrote P3 at all.
117 lines
3.6 KiB
CMake
117 lines
3.6 KiB
CMake
cmake_minimum_required(VERSION 3.14)
|
|
|
|
add_executable(
|
|
PipeCatalogueTest
|
|
PipeCatalogueTest.cpp
|
|
)
|
|
|
|
target_include_directories(PipeCatalogueTest PRIVATE
|
|
${MGL_ROOT}/include
|
|
${MGL_ROOT}/MobileGL
|
|
${MGL_ROOT}/MobileGL/MG_Pipe
|
|
${MGL_ROOT}/3rdparty/xxHash
|
|
${MGL_ROOT}/3rdparty/Vulkan-Headers/include
|
|
${MGL_ROOT}/3rdparty/SPIRV-Reflect
|
|
)
|
|
|
|
target_link_libraries(
|
|
PipeCatalogueTest PRIVATE
|
|
GTest::gtest_main
|
|
${LINK_LIBRARIES}
|
|
)
|
|
|
|
if (MSVC)
|
|
target_compile_options(PipeCatalogueTest PRIVATE /Zc:preprocessor)
|
|
endif()
|
|
|
|
# The P1 poison and verify shapes at the block level: a fake GLContext, the real filler and
|
|
# accessors out of the static library. Links gtest (not gtest_main): the suite needs its own
|
|
# main() to point MOBILEGL_LOG_FILE_PATH at a temp file before anything logs, because its
|
|
# abort cases read the Fatal line back out of that file. Every case is a visible SKIP in a
|
|
# pull build.
|
|
add_executable(
|
|
PipeInputsTest
|
|
PipeInputsTest.cpp
|
|
)
|
|
|
|
target_include_directories(PipeInputsTest PRIVATE
|
|
${MGL_ROOT}/include
|
|
${MGL_ROOT}/MobileGL
|
|
${MGL_ROOT}/MobileGL/MG_Pipe
|
|
${MGL_ROOT}/3rdparty/xxHash
|
|
${MGL_ROOT}/3rdparty/Vulkan-Headers/include
|
|
${MGL_ROOT}/3rdparty/SPIRV-Reflect
|
|
)
|
|
|
|
target_link_libraries(
|
|
PipeInputsTest PRIVATE
|
|
GTest::gtest
|
|
${LINK_LIBRARIES}
|
|
)
|
|
|
|
if (MSVC)
|
|
target_compile_options(PipeInputsTest PRIVATE /Zc:preprocessor)
|
|
endif()
|
|
|
|
|
|
# The four P2 suites. Their targets and this registration are the CONTRACT commit's; their
|
|
# CONTENTS belong to the packages named in each file's header, so no package after A has to
|
|
# come back to this file.
|
|
#
|
|
# RenderStateSpansTest links gtest, not gtest_main, for PipeInputsTest's reason: its applier
|
|
# trip-wire cases read the wire's line back out of a log file, so the suite needs its own
|
|
# main() to point MOBILEGL_LOG_FILE_PATH at one before anything logs. The other three need no
|
|
# main() of their own.
|
|
foreach(pipeTest TrackerTest SlotAllocatorTest CsoCacheTest)
|
|
add_executable(${pipeTest} ${pipeTest}.cpp)
|
|
|
|
target_include_directories(${pipeTest} PRIVATE
|
|
${MGL_ROOT}/include
|
|
${MGL_ROOT}/MobileGL
|
|
${MGL_ROOT}/MobileGL/MG_Pipe
|
|
${MGL_ROOT}/3rdparty/xxHash
|
|
${MGL_ROOT}/3rdparty/Vulkan-Headers/include
|
|
${MGL_ROOT}/3rdparty/SPIRV-Reflect
|
|
)
|
|
|
|
target_link_libraries(${pipeTest} PRIVATE
|
|
GTest::gtest_main
|
|
${LINK_LIBRARIES}
|
|
)
|
|
|
|
if (MSVC)
|
|
target_compile_options(${pipeTest} PRIVATE /Zc:preprocessor)
|
|
endif()
|
|
endforeach()
|
|
|
|
add_executable(
|
|
RenderStateSpansTest
|
|
RenderStateSpansTest.cpp
|
|
)
|
|
|
|
target_include_directories(RenderStateSpansTest PRIVATE
|
|
${MGL_ROOT}/include
|
|
${MGL_ROOT}/MobileGL
|
|
${MGL_ROOT}/MobileGL/MG_Pipe
|
|
${MGL_ROOT}/3rdparty/xxHash
|
|
${MGL_ROOT}/3rdparty/Vulkan-Headers/include
|
|
${MGL_ROOT}/3rdparty/SPIRV-Reflect
|
|
)
|
|
|
|
target_link_libraries(RenderStateSpansTest PRIVATE
|
|
GTest::gtest
|
|
${LINK_LIBRARIES}
|
|
)
|
|
|
|
if (MSVC)
|
|
target_compile_options(RenderStateSpansTest PRIVATE /Zc:preprocessor)
|
|
endif()
|
|
|
|
include(GoogleTest)
|
|
gtest_discover_tests(PipeCatalogueTest DISCOVERY_TIMEOUT 30 PROPERTIES LABELS unit)
|
|
gtest_discover_tests(PipeInputsTest DISCOVERY_TIMEOUT 30 PROPERTIES LABELS unit)
|
|
gtest_discover_tests(RenderStateSpansTest DISCOVERY_TIMEOUT 30 PROPERTIES LABELS unit)
|
|
foreach(pipeTest TrackerTest SlotAllocatorTest CsoCacheTest)
|
|
gtest_discover_tests(${pipeTest} DISCOVERY_TIMEOUT 30 PROPERTIES LABELS unit)
|
|
endforeach()
|