Path: blob/21.2-virgl/src/intel/isl/tests/isl_aux_info_test.cpp
4547 views
/*1* Copyright 2019 Intel Corporation2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* the rights to use, copy, modify, merge, publish, distribute, sublicense,7* and/or sell copies of the Software, and to permit persons to whom the8* Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL17* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING19* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER20* DEALINGS IN THE SOFTWARE.21*/2223#include "gtest/gtest.h"24#include "isl/isl.h"2526void27PrintTo(const enum isl_aux_op &op, ::std::ostream* os) {28*os << (const char *[]) {29[ISL_AUX_OP_ASSERT ] = "ISL_AUX_OP_ASSERT",30[ISL_AUX_OP_NONE ] = "ISL_AUX_OP_NONE",31[ISL_AUX_OP_FAST_CLEAR ] = "ISL_AUX_OP_FAST_CLEAR",32[ISL_AUX_OP_FULL_RESOLVE ] = "ISL_AUX_OP_FULL_RESOLVE",33[ISL_AUX_OP_PARTIAL_RESOLVE] = "ISL_AUX_OP_PARTIAL_RESOLVE",34[ISL_AUX_OP_AMBIGUATE ] = "ISL_AUX_OP_AMBIGUATE",35}[op];36}3738#define E(state, usage, fc, op) \39EXPECT_EQ(ISL_AUX_OP_ ## op, \40isl_aux_prepare_access(ISL_AUX_STATE_ ## state, \41ISL_AUX_USAGE_ ## usage, fc))4243TEST(PrepareAccess, CompressedFalseFastClearFalsePartialResolveFalse) {44E(CLEAR, NONE, false, FULL_RESOLVE);45E(CLEAR, NONE, true, ASSERT);46E(PARTIAL_CLEAR, NONE, false, FULL_RESOLVE);47E(PARTIAL_CLEAR, NONE, true, ASSERT);48E(COMPRESSED_CLEAR, NONE, false, FULL_RESOLVE);49E(COMPRESSED_CLEAR, NONE, true, ASSERT);50E(COMPRESSED_NO_CLEAR, NONE, false, FULL_RESOLVE);51E(COMPRESSED_NO_CLEAR, NONE, true, ASSERT);52E(RESOLVED, NONE, false, NONE);53E(RESOLVED, NONE, true, ASSERT);54E(PASS_THROUGH, NONE, false, NONE);55E(PASS_THROUGH, NONE, true, ASSERT);56E(AUX_INVALID, NONE, false, NONE);57E(AUX_INVALID, NONE, true, ASSERT);58}5960TEST(PrepareAccess, CompressedFalseFastClearTruePartialResolveFalse) {61E(CLEAR, CCS_D, false, FULL_RESOLVE);62E(CLEAR, CCS_D, true, NONE);63E(PARTIAL_CLEAR, CCS_D, false, FULL_RESOLVE);64E(PARTIAL_CLEAR, CCS_D, true, NONE);65E(COMPRESSED_CLEAR, CCS_D, false, FULL_RESOLVE);66E(COMPRESSED_CLEAR, CCS_D, true, FULL_RESOLVE);67E(COMPRESSED_NO_CLEAR, CCS_D, false, FULL_RESOLVE);68E(COMPRESSED_NO_CLEAR, CCS_D, true, FULL_RESOLVE);69E(RESOLVED, CCS_D, false, NONE);70E(RESOLVED, CCS_D, true, NONE);71E(PASS_THROUGH, CCS_D, false, NONE);72E(PASS_THROUGH, CCS_D, true, NONE);73E(AUX_INVALID, CCS_D, false, AMBIGUATE);74E(AUX_INVALID, CCS_D, true, AMBIGUATE);75}7677TEST(PrepareAccess, CompressedTrueFastClearFalsePartialResolveFalse) {78E(CLEAR, MC, false, ASSERT);79E(CLEAR, MC, true, ASSERT);80E(PARTIAL_CLEAR, MC, false, ASSERT);81E(PARTIAL_CLEAR, MC, true, ASSERT);82E(COMPRESSED_CLEAR, MC, false, ASSERT);83E(COMPRESSED_CLEAR, MC, true, ASSERT);84E(COMPRESSED_NO_CLEAR, MC, false, NONE);85E(COMPRESSED_NO_CLEAR, MC, true, ASSERT);86E(RESOLVED, MC, false, NONE);87E(RESOLVED, MC, true, ASSERT);88E(PASS_THROUGH, MC, false, NONE);89E(PASS_THROUGH, MC, true, ASSERT);90E(AUX_INVALID, MC, false, AMBIGUATE);91E(AUX_INVALID, MC, true, ASSERT);92}9394TEST(PrepareAccess, CompressedTrueFastClearTruePartialResolveFalse) {95E(CLEAR, HIZ, false, FULL_RESOLVE);96E(CLEAR, HIZ, true, NONE);97E(PARTIAL_CLEAR, HIZ, false, FULL_RESOLVE);98E(PARTIAL_CLEAR, HIZ, true, NONE);99E(COMPRESSED_CLEAR, HIZ, false, FULL_RESOLVE);100E(COMPRESSED_CLEAR, HIZ, true, NONE);101E(COMPRESSED_NO_CLEAR, HIZ, false, NONE);102E(COMPRESSED_NO_CLEAR, HIZ, true, NONE);103E(RESOLVED, HIZ, false, NONE);104E(RESOLVED, HIZ, true, NONE);105E(PASS_THROUGH, HIZ, false, NONE);106E(PASS_THROUGH, HIZ, true, NONE);107E(AUX_INVALID, HIZ, false, AMBIGUATE);108E(AUX_INVALID, HIZ, true, AMBIGUATE);109}110111TEST(PrepareAccess, CompressedTrueFastClearTruePartialResolveTrue) {112E(CLEAR, MCS, false, PARTIAL_RESOLVE);113E(CLEAR, MCS, true, NONE);114E(PARTIAL_CLEAR, MCS, false, PARTIAL_RESOLVE);115E(PARTIAL_CLEAR, MCS, true, NONE);116E(COMPRESSED_CLEAR, MCS, false, PARTIAL_RESOLVE);117E(COMPRESSED_CLEAR, MCS, true, NONE);118E(COMPRESSED_NO_CLEAR, MCS, false, NONE);119E(COMPRESSED_NO_CLEAR, MCS, true, NONE);120E(RESOLVED, MCS, false, NONE);121E(RESOLVED, MCS, true, NONE);122E(PASS_THROUGH, MCS, false, NONE);123E(PASS_THROUGH, MCS, true, NONE);124E(AUX_INVALID, MCS, false, AMBIGUATE);125E(AUX_INVALID, MCS, true, AMBIGUATE);126}127128void129PrintTo(const enum isl_aux_state &state, ::std::ostream* os) {130*os << (const char *[]) {131[ISL_AUX_STATE_ASSERT ] = "ISL_AUX_STATE_ASSERT",132[ISL_AUX_STATE_CLEAR ] = "ISL_AUX_STATE_CLEAR",133[ISL_AUX_STATE_PARTIAL_CLEAR ] = "ISL_AUX_STATE_PARTIAL_CLEAR",134[ISL_AUX_STATE_COMPRESSED_CLEAR ] = "ISL_AUX_STATE_COMPRESSED_CLEAR",135[ISL_AUX_STATE_COMPRESSED_NO_CLEAR] = "ISL_AUX_STATE_COMPRESSED_NO_CLEAR",136[ISL_AUX_STATE_RESOLVED ] = "ISL_AUX_STATE_RESOLVED",137[ISL_AUX_STATE_PASS_THROUGH ] = "ISL_AUX_STATE_PASS_THROUGH",138[ISL_AUX_STATE_AUX_INVALID ] = "ISL_AUX_STATE_AUX_INVALID"139}[state];140}141142#undef E143#define E(state1, usage, op, state2) \144EXPECT_EQ(ISL_AUX_STATE_ ## state2, \145isl_aux_state_transition_aux_op(ISL_AUX_STATE_ ## state1, \146ISL_AUX_USAGE_ ## usage, \147ISL_AUX_OP_ ## op))148149/* The usages used in each test of this suite represent all combinations of150* ::fast_clear and ::full_resolves_ambiguate.151*/152TEST(StateTransitionAuxOp, None) {153E(CLEAR, NONE, NONE, ASSERT);154E(PARTIAL_CLEAR, NONE, NONE, ASSERT);155E(COMPRESSED_CLEAR, NONE, NONE, ASSERT);156E(COMPRESSED_NO_CLEAR, NONE, NONE, ASSERT);157E(RESOLVED, NONE, NONE, RESOLVED);158E(PASS_THROUGH, NONE, NONE, PASS_THROUGH);159E(AUX_INVALID, NONE, NONE, AUX_INVALID);160161E(CLEAR, MC, NONE, ASSERT);162E(PARTIAL_CLEAR, MC, NONE, ASSERT);163E(COMPRESSED_CLEAR, MC, NONE, ASSERT);164E(COMPRESSED_NO_CLEAR, MC, NONE, COMPRESSED_NO_CLEAR);165E(RESOLVED, MC, NONE, RESOLVED);166E(PASS_THROUGH, MC, NONE, PASS_THROUGH);167E(AUX_INVALID, MC, NONE, AUX_INVALID);168169E(CLEAR, HIZ, NONE, CLEAR);170E(PARTIAL_CLEAR, HIZ, NONE, PARTIAL_CLEAR);171E(COMPRESSED_CLEAR, HIZ, NONE, COMPRESSED_CLEAR);172E(COMPRESSED_NO_CLEAR, HIZ, NONE, COMPRESSED_NO_CLEAR);173E(RESOLVED, HIZ, NONE, RESOLVED);174E(PASS_THROUGH, HIZ, NONE, PASS_THROUGH);175E(AUX_INVALID, HIZ, NONE, AUX_INVALID);176177E(CLEAR, CCS_E, NONE, CLEAR);178E(PARTIAL_CLEAR, CCS_E, NONE, PARTIAL_CLEAR);179E(COMPRESSED_CLEAR, CCS_E, NONE, COMPRESSED_CLEAR);180E(COMPRESSED_NO_CLEAR, CCS_E, NONE, COMPRESSED_NO_CLEAR);181E(RESOLVED, CCS_E, NONE, RESOLVED);182E(PASS_THROUGH, CCS_E, NONE, PASS_THROUGH);183E(AUX_INVALID, CCS_E, NONE, AUX_INVALID);184}185186TEST(StateTransitionAuxOp, FastClear) {187E(CLEAR, NONE, FAST_CLEAR, ASSERT);188E(PARTIAL_CLEAR, NONE, FAST_CLEAR, ASSERT);189E(COMPRESSED_CLEAR, NONE, FAST_CLEAR, ASSERT);190E(COMPRESSED_NO_CLEAR, NONE, FAST_CLEAR, ASSERT);191E(RESOLVED, NONE, FAST_CLEAR, ASSERT);192E(PASS_THROUGH, NONE, FAST_CLEAR, ASSERT);193E(AUX_INVALID, NONE, FAST_CLEAR, ASSERT);194195E(CLEAR, MC, FAST_CLEAR, ASSERT);196E(PARTIAL_CLEAR, MC, FAST_CLEAR, ASSERT);197E(COMPRESSED_CLEAR, MC, FAST_CLEAR, ASSERT);198E(COMPRESSED_NO_CLEAR, MC, FAST_CLEAR, ASSERT);199E(RESOLVED, MC, FAST_CLEAR, ASSERT);200E(PASS_THROUGH, MC, FAST_CLEAR, ASSERT);201E(AUX_INVALID, MC, FAST_CLEAR, ASSERT);202203E(CLEAR, HIZ, FAST_CLEAR, CLEAR);204E(PARTIAL_CLEAR, HIZ, FAST_CLEAR, CLEAR);205E(COMPRESSED_CLEAR, HIZ, FAST_CLEAR, CLEAR);206E(COMPRESSED_NO_CLEAR, HIZ, FAST_CLEAR, CLEAR);207E(RESOLVED, HIZ, FAST_CLEAR, CLEAR);208E(PASS_THROUGH, HIZ, FAST_CLEAR, CLEAR);209E(AUX_INVALID, HIZ, FAST_CLEAR, CLEAR);210211E(CLEAR, CCS_E, FAST_CLEAR, CLEAR);212E(PARTIAL_CLEAR, CCS_E, FAST_CLEAR, CLEAR);213E(COMPRESSED_CLEAR, CCS_E, FAST_CLEAR, CLEAR);214E(COMPRESSED_NO_CLEAR, CCS_E, FAST_CLEAR, CLEAR);215E(RESOLVED, CCS_E, FAST_CLEAR, CLEAR);216E(PASS_THROUGH, CCS_E, FAST_CLEAR, CLEAR);217E(AUX_INVALID, CCS_E, FAST_CLEAR, CLEAR);218}219220TEST(StateTransitionAuxOp, PartialResolve) {221E(CLEAR, NONE, PARTIAL_RESOLVE, ASSERT);222E(PARTIAL_CLEAR, NONE, PARTIAL_RESOLVE, ASSERT);223E(COMPRESSED_CLEAR, NONE, PARTIAL_RESOLVE, ASSERT);224E(COMPRESSED_NO_CLEAR, NONE, PARTIAL_RESOLVE, ASSERT);225E(RESOLVED, NONE, PARTIAL_RESOLVE, ASSERT);226E(PASS_THROUGH, NONE, PARTIAL_RESOLVE, ASSERT);227E(AUX_INVALID, NONE, PARTIAL_RESOLVE, ASSERT);228229E(CLEAR, MC, PARTIAL_RESOLVE, ASSERT);230E(PARTIAL_CLEAR, MC, PARTIAL_RESOLVE, ASSERT);231E(COMPRESSED_CLEAR, MC, PARTIAL_RESOLVE, ASSERT);232E(COMPRESSED_NO_CLEAR, MC, PARTIAL_RESOLVE, ASSERT);233E(RESOLVED, MC, PARTIAL_RESOLVE, ASSERT);234E(PASS_THROUGH, MC, PARTIAL_RESOLVE, ASSERT);235E(AUX_INVALID, MC, PARTIAL_RESOLVE, ASSERT);236237E(CLEAR, HIZ, PARTIAL_RESOLVE, ASSERT);238E(PARTIAL_CLEAR, HIZ, PARTIAL_RESOLVE, ASSERT);239E(COMPRESSED_CLEAR, HIZ, PARTIAL_RESOLVE, ASSERT);240E(COMPRESSED_NO_CLEAR, HIZ, PARTIAL_RESOLVE, ASSERT);241E(RESOLVED, HIZ, PARTIAL_RESOLVE, ASSERT);242E(PASS_THROUGH, HIZ, PARTIAL_RESOLVE, ASSERT);243E(AUX_INVALID, HIZ, PARTIAL_RESOLVE, ASSERT);244245E(CLEAR, CCS_E, PARTIAL_RESOLVE, COMPRESSED_NO_CLEAR);246E(PARTIAL_CLEAR, CCS_E, PARTIAL_RESOLVE, COMPRESSED_NO_CLEAR);247E(COMPRESSED_CLEAR, CCS_E, PARTIAL_RESOLVE, COMPRESSED_NO_CLEAR);248E(COMPRESSED_NO_CLEAR, CCS_E, PARTIAL_RESOLVE, COMPRESSED_NO_CLEAR);249E(RESOLVED, CCS_E, PARTIAL_RESOLVE, RESOLVED);250E(PASS_THROUGH, CCS_E, PARTIAL_RESOLVE, PASS_THROUGH);251E(AUX_INVALID, CCS_E, PARTIAL_RESOLVE, ASSERT);252}253254TEST(StateTransitionAuxOp, FullResolve) {255E(CLEAR, NONE, FULL_RESOLVE, ASSERT);256E(PARTIAL_CLEAR, NONE, FULL_RESOLVE, ASSERT);257E(COMPRESSED_CLEAR, NONE, FULL_RESOLVE, ASSERT);258E(COMPRESSED_NO_CLEAR, NONE, FULL_RESOLVE, ASSERT);259E(RESOLVED, NONE, FULL_RESOLVE, ASSERT);260E(PASS_THROUGH, NONE, FULL_RESOLVE, ASSERT);261E(AUX_INVALID, NONE, FULL_RESOLVE, ASSERT);262263E(CLEAR, MC, FULL_RESOLVE, ASSERT);264E(PARTIAL_CLEAR, MC, FULL_RESOLVE, ASSERT);265E(COMPRESSED_CLEAR, MC, FULL_RESOLVE, ASSERT);266E(COMPRESSED_NO_CLEAR, MC, FULL_RESOLVE, PASS_THROUGH);267E(RESOLVED, MC, FULL_RESOLVE, PASS_THROUGH);268E(PASS_THROUGH, MC, FULL_RESOLVE, PASS_THROUGH);269E(AUX_INVALID, MC, FULL_RESOLVE, ASSERT);270271E(CLEAR, HIZ, FULL_RESOLVE, RESOLVED);272E(PARTIAL_CLEAR, HIZ, FULL_RESOLVE, RESOLVED);273E(COMPRESSED_CLEAR, HIZ, FULL_RESOLVE, RESOLVED);274E(COMPRESSED_NO_CLEAR, HIZ, FULL_RESOLVE, RESOLVED);275E(RESOLVED, HIZ, FULL_RESOLVE, RESOLVED);276E(PASS_THROUGH, HIZ, FULL_RESOLVE, PASS_THROUGH);277E(AUX_INVALID, HIZ, FULL_RESOLVE, ASSERT);278279E(CLEAR, CCS_E, FULL_RESOLVE, PASS_THROUGH);280E(PARTIAL_CLEAR, CCS_E, FULL_RESOLVE, PASS_THROUGH);281E(COMPRESSED_CLEAR, CCS_E, FULL_RESOLVE, PASS_THROUGH);282E(COMPRESSED_NO_CLEAR, CCS_E, FULL_RESOLVE, PASS_THROUGH);283E(RESOLVED, CCS_E, FULL_RESOLVE, PASS_THROUGH);284E(PASS_THROUGH, CCS_E, FULL_RESOLVE, PASS_THROUGH);285E(AUX_INVALID, CCS_E, FULL_RESOLVE, ASSERT);286}287288TEST(StateTransitionAuxOp, Ambiguate) {289E(CLEAR, NONE, AMBIGUATE, ASSERT);290E(PARTIAL_CLEAR, NONE, AMBIGUATE, ASSERT);291E(COMPRESSED_CLEAR, NONE, AMBIGUATE, ASSERT);292E(COMPRESSED_NO_CLEAR, NONE, AMBIGUATE, ASSERT);293E(RESOLVED, NONE, AMBIGUATE, ASSERT);294E(PASS_THROUGH, NONE, AMBIGUATE, ASSERT);295E(AUX_INVALID, NONE, AMBIGUATE, ASSERT);296297E(CLEAR, MC, AMBIGUATE, ASSERT);298E(PARTIAL_CLEAR, MC, AMBIGUATE, ASSERT);299E(COMPRESSED_CLEAR, MC, AMBIGUATE, ASSERT);300E(COMPRESSED_NO_CLEAR, MC, AMBIGUATE, PASS_THROUGH);301E(RESOLVED, MC, AMBIGUATE, PASS_THROUGH);302E(PASS_THROUGH, MC, AMBIGUATE, PASS_THROUGH);303E(AUX_INVALID, MC, AMBIGUATE, PASS_THROUGH);304305E(CLEAR, HIZ, AMBIGUATE, PASS_THROUGH);306E(PARTIAL_CLEAR, HIZ, AMBIGUATE, PASS_THROUGH);307E(COMPRESSED_CLEAR, HIZ, AMBIGUATE, PASS_THROUGH);308E(COMPRESSED_NO_CLEAR, HIZ, AMBIGUATE, PASS_THROUGH);309E(RESOLVED, HIZ, AMBIGUATE, PASS_THROUGH);310E(PASS_THROUGH, HIZ, AMBIGUATE, PASS_THROUGH);311E(AUX_INVALID, HIZ, AMBIGUATE, PASS_THROUGH);312313E(CLEAR, CCS_E, AMBIGUATE, PASS_THROUGH);314E(PARTIAL_CLEAR, CCS_E, AMBIGUATE, PASS_THROUGH);315E(COMPRESSED_CLEAR, CCS_E, AMBIGUATE, PASS_THROUGH);316E(COMPRESSED_NO_CLEAR, CCS_E, AMBIGUATE, PASS_THROUGH);317E(RESOLVED, CCS_E, AMBIGUATE, PASS_THROUGH);318E(PASS_THROUGH, CCS_E, AMBIGUATE, PASS_THROUGH);319E(AUX_INVALID, CCS_E, AMBIGUATE, PASS_THROUGH);320}321322#undef E323#define E(state1, usage, full_surface, state2) \324EXPECT_EQ(ISL_AUX_STATE_ ## state2, \325isl_aux_state_transition_write(ISL_AUX_STATE_ ## state1, \326ISL_AUX_USAGE_ ## usage, \327full_surface))328329TEST(StateTransitionWrite, WritesOnlyTouchMain) {330E(CLEAR, NONE, false, ASSERT);331E(CLEAR, NONE, true, AUX_INVALID);332E(PARTIAL_CLEAR, NONE, false, ASSERT);333E(PARTIAL_CLEAR, NONE, true, AUX_INVALID);334E(COMPRESSED_CLEAR, NONE, false, ASSERT);335E(COMPRESSED_CLEAR, NONE, true, AUX_INVALID);336E(COMPRESSED_NO_CLEAR, NONE, false, ASSERT);337E(COMPRESSED_NO_CLEAR, NONE, true, AUX_INVALID);338E(RESOLVED, NONE, false, AUX_INVALID);339E(RESOLVED, NONE, true, AUX_INVALID);340E(PASS_THROUGH, NONE, false, PASS_THROUGH);341E(PASS_THROUGH, NONE, true, PASS_THROUGH);342E(AUX_INVALID, NONE, false, AUX_INVALID);343E(AUX_INVALID, NONE, true, AUX_INVALID);344}345346TEST(StateTransitionWrite, WritesCompress) {347E(CLEAR, MCS, false, COMPRESSED_CLEAR);348E(CLEAR, MCS, true, COMPRESSED_NO_CLEAR);349E(PARTIAL_CLEAR, MCS, false, COMPRESSED_CLEAR);350E(PARTIAL_CLEAR, MCS, true, COMPRESSED_NO_CLEAR);351E(COMPRESSED_CLEAR, MCS, false, COMPRESSED_CLEAR);352E(COMPRESSED_CLEAR, MCS, true, COMPRESSED_NO_CLEAR);353E(COMPRESSED_NO_CLEAR, MCS, false, COMPRESSED_NO_CLEAR);354E(COMPRESSED_NO_CLEAR, MCS, true, COMPRESSED_NO_CLEAR);355E(RESOLVED, MCS, false, COMPRESSED_NO_CLEAR);356E(RESOLVED, MCS, true, COMPRESSED_NO_CLEAR);357E(PASS_THROUGH, MCS, false, COMPRESSED_NO_CLEAR);358E(PASS_THROUGH, MCS, true, COMPRESSED_NO_CLEAR);359E(AUX_INVALID, MCS, false, ASSERT);360E(AUX_INVALID, MCS, true, ASSERT);361362E(CLEAR, STC_CCS, false, ASSERT);363E(CLEAR, STC_CCS, true, ASSERT);364E(PARTIAL_CLEAR, STC_CCS, false, ASSERT);365E(PARTIAL_CLEAR, STC_CCS, true, ASSERT);366E(COMPRESSED_CLEAR, STC_CCS, false, ASSERT);367E(COMPRESSED_CLEAR, STC_CCS, true, ASSERT);368E(COMPRESSED_NO_CLEAR, STC_CCS, false, COMPRESSED_NO_CLEAR);369E(COMPRESSED_NO_CLEAR, STC_CCS, true, COMPRESSED_NO_CLEAR);370E(RESOLVED, STC_CCS, false, COMPRESSED_NO_CLEAR);371E(RESOLVED, STC_CCS, true, COMPRESSED_NO_CLEAR);372E(PASS_THROUGH, STC_CCS, false, COMPRESSED_NO_CLEAR);373E(PASS_THROUGH, STC_CCS, true, COMPRESSED_NO_CLEAR);374E(AUX_INVALID, STC_CCS, false, ASSERT);375E(AUX_INVALID, STC_CCS, true, ASSERT);376}377378TEST(StateTransitionWrite, WritesCompressClear) {379E(CLEAR, GFX12_CCS_E, false, COMPRESSED_CLEAR);380E(CLEAR, GFX12_CCS_E, true, COMPRESSED_CLEAR);381E(PARTIAL_CLEAR, GFX12_CCS_E, false, COMPRESSED_CLEAR);382E(PARTIAL_CLEAR, GFX12_CCS_E, true, COMPRESSED_CLEAR);383E(COMPRESSED_CLEAR, GFX12_CCS_E, false, COMPRESSED_CLEAR);384E(COMPRESSED_CLEAR, GFX12_CCS_E, true, COMPRESSED_CLEAR);385E(COMPRESSED_NO_CLEAR, GFX12_CCS_E, false, COMPRESSED_CLEAR);386E(COMPRESSED_NO_CLEAR, GFX12_CCS_E, true, COMPRESSED_CLEAR);387E(RESOLVED, GFX12_CCS_E, false, COMPRESSED_CLEAR);388E(RESOLVED, GFX12_CCS_E, true, COMPRESSED_CLEAR);389E(PASS_THROUGH, GFX12_CCS_E, false, COMPRESSED_CLEAR);390E(PASS_THROUGH, GFX12_CCS_E, true, COMPRESSED_CLEAR);391E(AUX_INVALID, GFX12_CCS_E, false, ASSERT);392E(AUX_INVALID, GFX12_CCS_E, true, ASSERT);393}394395TEST(StateTransitionWrite, WritesResolveAmbiguate) {396E(CLEAR, CCS_D, false, PARTIAL_CLEAR);397E(CLEAR, CCS_D, true, PASS_THROUGH);398E(PARTIAL_CLEAR, CCS_D, false, PARTIAL_CLEAR);399E(PARTIAL_CLEAR, CCS_D, true, PASS_THROUGH);400E(COMPRESSED_CLEAR, CCS_D, false, ASSERT);401E(COMPRESSED_CLEAR, CCS_D, true, ASSERT);402E(COMPRESSED_NO_CLEAR, CCS_D, false, ASSERT);403E(COMPRESSED_NO_CLEAR, CCS_D, true, ASSERT);404E(RESOLVED, CCS_D, false, RESOLVED);405E(RESOLVED, CCS_D, true, PASS_THROUGH);406E(PASS_THROUGH, CCS_D, false, PASS_THROUGH);407E(PASS_THROUGH, CCS_D, true, PASS_THROUGH);408E(AUX_INVALID, CCS_D, false, ASSERT);409E(AUX_INVALID, CCS_D, true, ASSERT);410411E(CLEAR, MC, false, ASSERT);412E(CLEAR, MC, true, ASSERT);413E(PARTIAL_CLEAR, MC, false, ASSERT);414E(PARTIAL_CLEAR, MC, true, ASSERT);415E(COMPRESSED_CLEAR, MC, false, ASSERT);416E(COMPRESSED_CLEAR, MC, true, ASSERT);417E(COMPRESSED_NO_CLEAR, MC, false, COMPRESSED_NO_CLEAR);418E(COMPRESSED_NO_CLEAR, MC, true, PASS_THROUGH);419E(RESOLVED, MC, false, RESOLVED);420E(RESOLVED, MC, true, PASS_THROUGH);421E(PASS_THROUGH, MC, false, PASS_THROUGH);422E(PASS_THROUGH, MC, true, PASS_THROUGH);423E(AUX_INVALID, MC, false, ASSERT);424E(AUX_INVALID, MC, true, ASSERT);425}426427#undef E428429430