{"type":"note","text":"edenprobe 0.16.1 (v0.16.1) starting"} {"type":"note","text":"folder: sdmc:/edenprobe/runs/23f4c7a"} {"type":"note","text":"mode: detailed, the mode file has no quick; pictures of failures only; families cpu graphics fs kernel display video audio; no timing passes; hooks: on the console, fs, time, pl, ngc, nsd, pctl, audio and codec asked through the SDK's functions; machine scarletnx, version 6e268ea"} {"type":"note","text":"bans: 2 of the 10 lines of source/bans.txt hold for scarletnx at 6e268ea: their cases are skipped as banned, and the mode word unban runs them"} {"type":"case","suite":"selfcheck","name":"integer arithmetic","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"ulp neighbours are one apart","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"ulp zero tolerance rejects a neighbour","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"the ulp measure counts one between neighbours","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"three units below a power of two is six representable values","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"and the seventh is outside it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"three units above a power of two is three representable values","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"signed zeroes compare equal","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"nan never compares equal","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"no budget is large enough to accept a nan","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"absolute tolerance accepts within","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"absolute tolerance rejects beyond","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"absolute tolerance never accepts a nan","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"absolute tolerance is symmetric","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"channel threshold accepts within","tier":"none","result":"pass","detail":""} {"type":"case","suite":"selfcheck","name":"channel threshold rejects beyond","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the services a machine may answer in a game's code are asked the way the mode file says","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case name becomes the file name it reads like","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"punctuation and case leave the file name alone","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a name with nothing usable in it still names a file","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"two names that agree for longer than a stem still get one each","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a name with no room for its number gives characters up instead","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case named after another's expected picture does not land on it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"and not the other way round either","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a hundred cases spelling one name never share a file","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a root too long to hold whole is refused and nothing is written","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a root that fits is taken","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"there is a corner of the memory card to write in and read back","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a picture is written where the line says it is","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a colour picture keeps no raw file beside it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the picture parses back as the image its header claims","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the picture holds the bytes the readback handed over","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the expected picture holds what the judge expected","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the diff picture is three colours deep and no more","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the diff carries the judge's verdict, not a comparison of two images","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a root as long as one can be still reads back what it wrote","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a pixel no judge looked at is not drawn as one it accepted","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a picture of bit patterns keeps the bytes beside it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the raw file is every byte the target held and nothing more","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"two case names that spell one file name get a file each","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a passing case leaves no picture unless one was asked for","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case with no picture reports the line it always did","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case with pictures names them at the end of its own line","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case that says where its expected value comes from says it after its tier","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a skip is its own result and the summary counts it apart","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a run under way says its report is still open","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a line too big for its buffer comes back whole or not at all","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the longest line a case can make still fits the buffer it is given","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the pad is waited for until it answers and then not at all","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the detailed screen leaves by itself when nothing is pressed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"holding the button asks for the detailed mode and never cancels it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the word stress, and nothing else, asks for the stress cases","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the word fatal changes nothing, and the mode line says so once","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the word listen asks for the listening sequence and the audio family","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the word noprogress turns the running screen off and nothing else","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the mode file is read a whole word at a time","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the report says what the mode file was and what was not understood","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a label in the mode file names the run's folder, and a bad one is refused","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the words game and frames= run the scene and set its frames, and a bad number says the one it keeps","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the word vram= says the machine's graphics memory, and a bad number says the one it keeps","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"machine= names the run's machine and its version, and a bad one says the machine in effect","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"skip= names the suites a run leaves out, and a bad one says the suites in effect","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"all runs every family but pad and nvn, which named beside it add theirs","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the word hooks asks the services through the SDK's functions, a word of the key","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the widest mode goes into the journal whole and a launch goes on in it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"libc, jni and framework are words, and each frontend runs its own families","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the runner names its files under a frontend's root, and refuses one too long","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the diff panel puts the judge's colours where the pixels were","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a scaled up pixel is one colour and not an average","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a failed case shouts its verdict on the heading and a passing one does not","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the three colours of a verdict are named under the pictures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"all four colours of a verdict are named under the pictures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the two panels show two pictures and not one twice","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the screens gather the cases into their suites, families in the order the run met them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"every case the run has reported is on record for the screens, or none is","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"every suite a run reports is shown under its own family","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a kept case holds what a reader of its line gets back, and no more","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the walk from the overview to a case and back lands where it should","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a frame is owed until one is drawn, and not again until something moves","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"stepping through a group's cases comes round to where it started","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the failure jumps skip every pass and skip and come round","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"left and right move between families on the overview and groups inside","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the view cycles only on a case that kept pictures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"quit leaves from every level, and a run that kept nothing can leave","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a press before the pad has settled is not a press","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"every button means one thing, and everything at once still quits","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a held direction repeats after a delay, and only after a press that counted","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"what repeats is the direction pressed, whatever else is held","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the listening screen names the part, the take and what to listen for, and its buttons are not the results screens'","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the listening screen shows its steps done in a bar, as the running screen","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the listening screen leaves the countdown its rows and names its buttons","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the pad screen shows the prompt large, what the controller sends and the prompt before in its colour","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the pad family runs only when named, and the start screen has its row","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a tap is one finger down after the screen settled, counted when lifted","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"on the start and resume screens a tapped row is the cursor's, then chosen","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"on the results a tapped row is the cursor's, then opened; the bar's boxes do what they say","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the pad screen's question takes yes or no on the bar, and only then","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the touch screen draws each target where its case aims and writes over none","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the overview marks failed groups red, skipped ones amber, and the cursor","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a group marks every case in its result's colour","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a long group scrolls to keep the selected case on screen","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a group shows the selected case's detail under its list, wrapped","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case with no pictures opens on its whole detail","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a drawing case opens on its pictures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"every screen leaves the countdown its rows and names its buttons","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a list longer than the overview says there is more, whole, where there is","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"cases the screens could not hold are counted and the overview says so","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a frame too small for the screens gets one line and nothing past its edge","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a group of hundreds of failures still draws its bar inside its row","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case with no detail is only said to have passed when it did","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the start screen asks only with something to choose, X for the crash list","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the start screen waits ten seconds for a person, and a press keeps it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"Y and X in one edge change nothing, and A in that edge still begins","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the start screen warns exactly while the crash list's choice is on","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the start screen says nvn's window case is skipped in a run begun there, when the mode file names nvn","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the start screen opens on begin the run, every row as the mode file says","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the start screen's menu turns the row under the cursor, listen with audio","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the start screen draws the cursor's row, each box and icon, and no warning for an empty crash list","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"what the start screen chooses is the run's mode, the label the file's","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the start screen keeps the video, kernel, display and service families the file names, which have no row","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the words the start screen saves and the journal keeps read back the same","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the resume screen goes on unless start over is chosen, and a mask chooses nothing","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the resume screen shows where it stopped and which choice the cursor is on","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the running screen draws twice a second and counts a step's cases by pass","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the running screen shows the step, the case and the steps done in proportion","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case the program ended inside is counted apart and in a colour of its own","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"every journal record reads back as it was written","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a journal record too long for its buffer is not written in part","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a line that is not a whole journal record is not read as one","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a journal's last line with no newline is left unread","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a start whose newline an abort took is the case the program ended inside","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the journal says which case the program ended inside, and no other","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a run's counts come back from the journal where it stopped","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a launch a runner stopped at its limit leaves a timeout, not a crash","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case a runner stopped the program inside is skipped as timeout, with the limit and how long it ran","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a launch goes on with a run only for the same build, the same words and its report","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a detailed launch asks before going on, and starting over keeps the crash","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a run the start screen chose goes on after a crash in the mode it chose","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the crash list reads the cases it names and nothing else","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the crash list writes back what it holds","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a line written to the card is whole in the file before the next starts","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the launch after an abort ends the open line before its own records","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"several lines written forward are the file, with nothing missing between","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case on the crash list is skipped as crashed until retry asks for it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case that ended this run is skipped even under retry","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a skip says why in one word of a few, beside the sentence","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case that ended without starting, or started over another, is counted","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the report tells its watcher each case's start and end, and no one else","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case that ends the program runs with no word, and only a crash skips it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case known to hang is skipped until hang asks, and retry does not run it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case banned on this machine is skipped as banned, its line said, until unban","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a ban comes after a crash in this run and before the crash list","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a suite skip= names is skipped as asked, after a crash in this run and before hang, unban and the crash list","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a ban's versions are every one, a list, or bounds on dotted numbers","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"source/bans.txt's lines are whole, and the two runs' lines are there","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a new run says how many ban lines hold for its machine, with the version","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the checks that record a crash for this run take it back","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the words retry and nojournal ask for what they say and nothing else","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the journal keeps the words that change a report, in one order","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the word hang asks for the cases that hang, and only beside retry for both","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: samples that agree get the threshold, around their median","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a case that runs at two speeds gets one and a half its spread","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: the slow speed is no move, past it is","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: of two middle samples the reference is the lower","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a move under the floor is none, whatever its percentage","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a case line reads back as written, quotes and all","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: the line that opens a sample reads back its number, build and cases","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a line cut short or not this program's is no line of a sample","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: the report's line for a case held to its samples","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: the report's line that sums a comparison up","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: the two names among the words, and the mode line","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a name a file cannot carry is refused and said","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: the names stay out of the key, and the start screen keeps them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a name cut by the file's limit is dropped","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a name's word cut just before its sign is dropped, not unknown","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a mode line too long for a note says where it was cut","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a missing file is made, and each run adds the next sample","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a run within its samples moves nothing","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a slower case, a faster one and one with no samples are told apart","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: every case compared gets its line, a same one too","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: this check takes its file away again","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a run with both words is held to the samples before it, then added","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a run that went on after the program ended is compared, not added","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a run with notime compares and adds nothing, and says both","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a run that timed no case adds no sample, and says so","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: the run checks take their file away again","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a name with a tab, quotes, a line end or past the cut is found","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a line cut short is no case, and hides no slower run","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a file cut short gets its line end before the next sample","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a sample short of the cases it opened with is left out, and said","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: samples of more than one build say how many and the first two","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a case with more than 64 samples is held to its newest, and said","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a case reported twice in a run is held by its last time","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: two names a file cannot tell apart are one case, and said","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a made-up timed suite's case that draws","tier":"none","result":"pass","detail":"","us":400} {"type":"case","suite":"support","name":"baseline: a made-up timed suite's case that draws nothing","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"baseline: a made-up timed suite's case that draws twice","tier":"none","result":"pass","detail":"","us":1999} {"type":"case","suite":"support","name":"baseline: a timed suite's verdict pass alone is kept, at its lines' times","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"this suite takes its own files away again","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the median is the middle value, or between the two middle ones","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case's number is the smallest of its samples","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a suite's summary counts, adds and orders its cases' times","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a suite that timed nothing sums up to nothing","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case reads the work it has done so far, outside the timed passes too","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"only the verdict pass hands a time to a line","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the time is the smallest sample, rounded to the microsecond","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case that put nothing on the graphics unit reports no time","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the perf line sums up the times the verdict pass reported","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a case inherits neither another case's samples nor a pass's leftovers","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"times round to the nearest microsecond, never below one","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"untimed suites report no time","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a timed line is the untimed line with its time last","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the time comes after the pictures a case names","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a time with no room on its line is left off, never cut","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a perf line says what the summary says, or nothing at all","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a rehearsal leaves no count and no picture behind","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a rehearsal knows each case's name from the pass before it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the log line before a rehearsed case names the suite, pass and case","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the word notime turns the timing passes off and says so","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a readback slot is filled with the preset and nothing past it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a slot has arrived once any of its bytes is not the preset","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a slot of no bytes has nothing to wait for","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the preset is not the zero a cleared pixel holds","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a run whose copies all landed by the idle says nothing","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a late copy is counted, with the longest wait rounded up","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"a copy that never arrived is counted apart","tier":"none","result":"pass","detail":""} {"type":"case","suite":"support","name":"the note is cut to its buffer, never past it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"clip space origin is the middle of the target","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"clip space plus y is the top of the target","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"clip space minus y is the bottom of the target","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an offset viewport moves the rectangle","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an interior point is covered","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an exterior point is not covered","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a point on the top edge is covered","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a point on the left edge is covered","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a point on an edge that is neither top nor left is not covered","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"winding does not change which pixels are covered","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a triangle with no area covers nothing","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the slanted triangle lands on whole pixel boundaries","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the offset viewport halves the triangle and moves it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the fill rule triangles are the two halves of a whole pixel square","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a shared edge is drawn exactly once","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the triangle whose left edge it is takes the shared centres","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"edge distance is the perpendicular one in pixels","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a margin holds back the pixels an edge runs through","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a centre exactly a margin away is still judged","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"with no margin every pixel is judged","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a pixel well outside is called outside","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the mixed value overflows and wraps","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the fragment coordinate reference carries the half pixel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the integer reference matches the arithmetic worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the division agrees with a long division done a bit at a time","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the bit count agrees with a table of nibbles","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the two right shifts differ exactly on the values with the top bit set","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the grown integer reference matches the values worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the integer to float conversions agree with the processor's own","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every packed component is at least a 256th of a code from a half","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the shifts clamp their count to 32 and the sweep reaches past it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the signed division's operands keep a float reciprocal exact","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the bit scans agree with counting leading and trailing noughts","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the bitfield modes agree with masks and shifts and see negative fields","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the minimum, maximum and clamps agree with 64 bit comparisons","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the half patterns raise exponent nought and quiet nothing else","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an snorm round trip returns every half but 0x8000, which becomes 0x8001","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the half precision patterns agree with the format reference both ways","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the wide multiplies agree with 64 bit products, and catch a lost high half","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every byte survives the trip through a normalised float","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"each blend case's sentence is the arithmetic the reference does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"no blend case asks for an alpha destination factor of its own","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a blend case catches the alpha equation taken from the colour one","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a blend case catches the alpha source factor taken from the colour one","tier":"none","result":"pass","detail":""} {"type":"note","text":"blend cases that separate the alpha state: 1 by the equation, first \"the source alpha weights both sides\"; 1 by the source factor, first \"adding with both factors one\""} {"type":"case","suite":"reference","name":"no blend case lands near the halfway point between two bytes","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"adding the source at full weight to nothing gives the source back","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the minimum is always one of its two operands","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"repeating folds every index onto a texel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"clamping to the edge folds every index onto a texel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"mirroring folds every index onto a texel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"one texture across the target puts sixteen pixels on each texel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"three copies across the target still miss every texel boundary","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the linear layout asks for exactly half of each of two texels","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an RGBA8 texel read as R32_Uint and rotated is its word least significant first","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the block linear rule puts hand worked bytes where a gob keeps them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the block linear rule gives each texel of the suite's texture its own four bytes","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a region's pixels sample the texel whose centre they sit on","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a moved rectangle lands at its offset and nothing else changes","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a rectangle moved over itself reads each source texel before it goes","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a rectangle moved down or up over itself keeps every source row","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an aliased move writes what the alias shader writes","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"painting cells covers exactly the cells in the mask","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sampling a region one texel per pixel moves the texture to its corner","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"four quadrants take their own green, and each lag the green that far back","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a rectangle not wholly inside is refused and changes nothing","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the coherence pattern is the four sums, modulo 256","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"no coherence pattern texel is the sentinel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"no two texels of one coherence pattern are the same","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"no two coherence patterns agree at any texel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference's multiply and add rounds once, not twice","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every float operand and argument is exactly representable","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the logarithm's operand stays where one budget covers it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the sine and cosine angles stay inside minus pi to pi","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference's addition is the one a float would have done","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference's multiplication is the one a float would have done","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"no ordinary float case produces an infinity or a nan","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every float mode has its budget written down here","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every float budget is the one the tables give","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every float budget's reason begins with the number it is","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every float budget's reason fits the note that carries it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the power of two's allowance grows with its argument","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the runtime's transcendentals give the answers written down here","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the rounding modes round where the first two never do, ties among them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the float edge reference matches the values worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the float judge takes the console's answer, noughts by their sign","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the answer the console never gives is refused and named at every pixel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the edge operands are where their budgets say","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the format table has the sixty renderable colour formats","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every format packs the pixels worked out from its name","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every format's fields fit its pixel and the mask is exactly them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every normalised value times its largest code is a code in single precision","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the clear and the drawn value differ in every stored channel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the format conversions invert over every code and round at the ends","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the format quad covers exactly its rectangle, no centre near its edges","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a wrong nsd expansion says whether the name came back as asked, with another environment, or with the placeholder left in","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the stream cases skip only when the machine refuses a stream socket and says its network is off","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the net file is read a line at a time","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the net file's report line, and whether it says the machine is online","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the account nobody knows is one no line names","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"account ids and dotted addresses are read whole or refused","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the placeholder is replaced everywhere, and a name that will not fit is refused","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an address length recvfrom left unset is not answered with","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a bearer token's alphabet, and two id lists compared as sets","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a result code reads as the platform prints it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a serialised hostent reads back as its name and addresses","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a serialised addrinfo list reads back entry by entry to its sentinel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a PEM certificate decodes to the DER openssl writes for it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a self-signed root names itself as issuer and the certificate it signed does not","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the certificate a handshake hands back is found in either form","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an HTTP response head says where its body is and when it is whole","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the status request is one GET that asks the server to close","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a status document says nothing is wrong only with both lists empty","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a friend profile is read at the offsets the guest reads it at","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"nsd is expected to answer a rewrite, then the placeholder, else the name","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sfdnsres is expected to answer loopback only for a session's own names","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the sign-in wait ends only on the answer a signed in session gives","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every {size} in a picture url becomes the size asked for","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a profile slot is judged by its id as well as its fields","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"clz of each 8-bit lane the cpu suite uses","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"clz of each 16-bit lane the cpu suite uses","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"clz of each 32-bit lane the cpu suite uses","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the 16-bit upper lanes hold answers a lost half cannot give","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"frintx and frinta's roundings the cpu suite uses","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sqshlu's lanes and saturation the cpu suite uses","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"fcvtzs and fcvtzu's lanes the cpu suite uses","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sm4's inputs are the standard's key, FK and CK","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sqrshl and uqrshl lanes worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sqdmlal, sqdmlsl and sqdmull lanes worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sqrshrn, uqrshrn and sqrshrun scalars worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sshl to uqshl lanes worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"crc32 and crc32c give the standard check values","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the header that writes the two index limit words is 0x200205f4","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the header of one instanced array draw word is 0x20010485","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an inline wait for idle is 0x80000044","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"six triangle list vertices from vertex 6 are the word 0x40060006","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"viewport 0's y scale of 32 is the words 0x20010281 0x42000000","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an index limit goes high word first","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a draw texture of 16 by 16 at (40, 24) is twelve words from 0x420","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a draw texture from texel -2 carries 0xffffe000 as its source x","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"alpha to coverage with alpha to one is the inline word 0x8011054f","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a render enable is 0x20030554, the address high word first, the mode","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the tight limit of six 16-bit indices at 0x1000 is 0x100b","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"each astc block and astcimage picture says its texels are astcenc's where a hash pins them, the specification's otherwise","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the void block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the q16 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the q32even block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the q32odd block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the tritw block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the quintw block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the trite block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the quinte block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the part2 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the part3 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the part4 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the dual block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the hdrfirst block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the error block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the infill8 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the infill12 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the grid6x10 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the grid10x6 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the lumdelta block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the contract13 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the part6x5 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the cutquints block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the cuttrits block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the reserved block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the weightbits block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the dual4 block as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a luminance base 0xe7 and offset 0xff run from 0xf9 to a clamped 0xff","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"RGBA base and offset endpoints with a negative sum swap, blue contracted, alpha with them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a group of quints cut after two values takes its missing bits as nought","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 4x4 blocks to FP16 as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 4x4 blocks to eight bits as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 6x6 blocks to FP16 as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 6x6 blocks to eight bits as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 8x8 blocks to FP16 as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 8x8 blocks to eight bits as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 12x12 blocks to FP16 as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 12x12 blocks to eight bits as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 4x4srgb blocks as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the picture's 8x8srgb blocks as ARM's decoder does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the 16-bit texel 0x8101 is 128 from FP16 and 129 the other two ways","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"4-bit weights 7, 8 and 13 unquantize to 29, 35 and 56","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"5-bit weights 3 and 21 unquantize to 6 and 44","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a 3-level weight is 0, 32 or 64","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the 16-bit texel 0x8000 is 128 either way to eight bits","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the 16-bit texel 0x7f80 is 127 either way to eight bits","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an EAC texel is base * 8 + 4 plus modifier * multiplier * 8, clamped","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an EAC multiplier of nought adds the bare modifier","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"EAC indices run down each column","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the 11-bit value 2047 is 255 either way","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the ETC2 builders make the blocks the etc2 suite samples","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 individual block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 differential block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 T block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 H-high block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 H-low block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 planar block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 pta-diff block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 pta-t block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 pta-planar block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 rgba block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 columns block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 H-equal block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 H-green block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 edge-high block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 edge-low block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 planar-bits block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 pta-h block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the reference decodes the ETC2 rgba-flat block as Mesa does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an ETC2 T mode paint colour is base 2 plus the distance, clamped","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an ETC2 H mode distance index takes its last bit from the base order","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an ETC2 planar block starts from its origin colour","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a see-through ETC2 punch-through block has no modifier at index 0","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"ETC2 RGBA alpha is base plus modifier times multiplier, clamped","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"ETC2 pixel indices run down the columns","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an ETC2 H mode base that is equal is not smaller, and red alone does not order two","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an ETC2 second base of 31 or 0 is still inside the range","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an ETC2 planar colour of six bits repeats its top two bits below","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a see-through ETC2 punch-through H block is transparent at index 2","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"ETC2 RGBA alpha with a multiplier of nought is its base","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an ETC2 block's own bytes sampled as RGBA8 read as an upload of the block","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"no ETC2 block's decoded colours read as an upload of its bytes","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a 4x4 BC4 array's levels are one gob each and a layer is three","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a BC4 block one down and one across sits 24 bytes into its gob","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a 64x64 BC4 array uses two-gob tiles on level 0 and one-gob tiles below","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a solid BC4 block is its value twice and sixteen nought indices","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: each probe tone fills a frame with whole periods","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: a sine is read back at its amplitude","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: a tone reads as nothing at another tone's frequency","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: two tones mixed read back each at its own level","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: frames split back into their channels","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: the limiter rule holds a steady input at its threshold","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: the limiter rule brings a sine to the threshold times pi over two","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: the listening signals stay inside their level and start at rest","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: the hiss is white noise with its low end taken off","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: the sweep starts and ends at its frequencies","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: the conversion tables' formula gives the renderer's values","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: a tone keeps the level the conversion's table gives it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: the two-step reciprocal's estimate and its steps","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"audio: mode 0's two answers are the rule's level and the two-step one","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: the BT.601 colours, truncated and rounded, are the table asked for","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: the shift before the constant gives 128s, after it 255, 26, 255","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: the soft clamp at 64..940 holds white at 235 and black at 16","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: the passthrough job's structure holds the words vic40.h's layout gives","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: every case packs the structures tools/vic-expect.py packs","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: a one-slot job's command words are tools/vic-expect.py's","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: two slots and an NV12 output add their methods as the script does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_passthrough expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_chroma_order expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_order_argb expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_order_x8 expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_matrix_601 expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_matrix_shift expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_soft_clamp expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_clamp_nomatrix expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_alpha_opaque expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_planar_alpha expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_target_clip expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_target_clip_matrix expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_target_odd expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_background expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_background_ring expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_source_crop expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_two_slots expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_pitch expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: vic_nv12_out expects what the script expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: the judge passes each case's own model under each of its answers","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: a pass says which answers fit, and either where both do","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: a failure names the first wrong byte, or that nothing was written","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vic: the run's note adds up the answers and names a disagreement","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: sixteen buttons are asked for, each once and by one bit","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: the controller answers first, the style case after every button","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: the bits are named low first, and a short buffer stays whole","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: the styles and the ids are named as the service names them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: a press is what goes down in its first tenth of a second","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: a button pressed again counts, and the window closes on time","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: a stick direction is not a press, and nothing for 10 s times out","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: up answers yes, down no, both or neither nothing","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: a stick's distance is the integer square root","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: sticks at rest pass only at nought","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: a stick's edge is full scale within 2%, and its shape is named","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: player 1 with the full key style passes, and nothing else does","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: every connected slot needs a style, and one must be connected","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"pad: each controller's press is the slots that went down together","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"touch: the screen answers, then four corners and the middle, two fingers, the drag and its lift","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"touch: a prompt waits out a finger already down, then takes the next tap","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"touch: the first prompt tells a touch from a docked console, a silent screen and nobody there","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"touch: a tap passes within 48 pixels of its target, judged where it lifted","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"touch: two fingers need two ids, and a drag one finger, one id, going right","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"touch: a lifted finger is followed by states with no touch for half a second","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"touch: the note gives every touch's diameter and angle range and the ids","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"md5: RFC 1321's \"\" whole and in pieces","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"md5: RFC 1321's \"a\" whole and in pieces","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"md5: RFC 1321's \"abc\" whole and in pieces","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"md5: RFC 1321's \"message digest\" whole and in pieces","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"md5: RFC 1321's \"abcdefghijklmnopqrstuvwx...\" whole and in pieces","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"md5: RFC 1321's \"ABCDEFGHIJKLMNOPQRSTUVWX...\" whole and in pieces","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"md5: RFC 1321's \"123456789012345678901234...\" whole and in pieces","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"md5: a million a's","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: every job fits the buffer and its surface is the setup's","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: the patches rebuild the tables tools/vp9-jobs.py wrote","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: surfaces are rows of 64 bytes, heights of 32, chroma after luma","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: two cases are built both ways, the others once","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: the B forms change only LastShowFrame, or the chroma deltas","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: a job's command words, word by word","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: the next job reads what the one before wrote","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: command words that do not fit are none","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: surfaces are read as nvtegra's copy walks them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: a picture written block linear reads back as its planes' MD5s","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: a case's line counts its images and names the first wrong one","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"vp9: two forms say which decodes, and the note adds the cases up","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sched: a step keeps its first place and time, and one not taken comes last","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sched: inheritance passes on the console's order and names what stalled","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sched: the chain passes when its end runs at 44, and fails one level deep","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sched: preemption gives the time the core changed hands, or that it never did","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sched: the owner's drop back is read from the order, and Q1 from its priority","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sched: migration passes on an idle core and fails behind the spinner","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sched: svcSleepThread(0) must keep the core, and the cores answer Q2 and Q3","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"sched: a case that could not run says why, and the note adds the cases up","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"binder: both of reden's layouts pass, and a history must be newest first","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"binder: a reply in no known layout fails with its bytes","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"binder: the cases run with no frame, 3 and 10, asking for nought, 8 and 8","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"blit2d: the source and the filled destination are the script's","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"blit2d: every case under every answer is the image the script works out","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"blit2d: the 2D engine's words are the script's, from NVIDIA's offsets","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"blit2d: a case passes on any answer's image and its line names the answers","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"blit2d: the copy kept in a cache fails on the raw read, with both named","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"blit2d: a write outside the window and a third rule fail with their texels","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"blit2d: the note says Q1 and Q2 from passing cases, else from the copies","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: every case is under a suite of the service family, once","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: hwopus passes 24 decoders and the 25th refused out of decoders","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: a closed decoder passes only when the next one opens","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am passes a save size that reads back as ExtendSaveData asked","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: fsp passes a temporary storage whose last marker is gone","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: account passes 52 answering what 51 answers","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ldn passes a monitor that comes and takes this process","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ldn passes each step's state, and None or Error outside them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ldn passes an event signaled when a network comes and goes","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ldn passes every command out of its state refused as BadState","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ldn passes the network asked, with this console as node 0","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ldn passes node 0's connection read once, into one to eight","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ldn passes the address in host order and the network's config","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ldn passes advertise data of 384 carried and 385 refused","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ldn passes a station with nothing near and nothing to join","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: set passes reden's language codes and fails what strays from them","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: csrng passes two buffers written whole and apart","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: nfp passes 25 answering what 3 answers","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: aoc passes an empty end and no record past it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: aoc passes none listed, lists that fit their room and the base id","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: aoc passes a prepare of a missing index answered with success","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: time passes a user clock its context's offset past steady","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: time passes a steady clock one or two seconds on","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: time passes the epoch and the known time dated under UTC","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: time passes ToPosixTime giving the known time back","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: time passes the device's rule dating as the service's own","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: pl passes six loaded fonts behind the decrypted magic","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: pl passes the six in order of priority, each as told","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: profile passes one base twice, of the user, by a name","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: profile passes a 256x256 JPEG of the size told","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: profile passes the user found and nobody made up","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-state passes a mode with its own resolution","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-state passes an application in focus","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-state passes message 95 after 130","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-state passes 3D VR mode on, then off","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-state passes the region Global","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-self passes a setting read back as set","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-functions passes a desired language set lists","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-functions passes every start event handed out","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-functions passes two empty channels refused as empty","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: auddev passes the active output among those listed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: auddev passes a volume read back as set","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: fsdir passes a directory renamed with what it holds","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: fsdir passes the one file listed once","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: fsdir passes a directory gone with what it held","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-audio passes volumes read back as set","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-channel passes a user channel that keeps what is unpopped","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-storage passes a storage that keeps its size and its end","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: mii passes the six default Miis","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-mode passes VR mode as turned and a normal boot","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: bsd-local passes the answers of a BSD stack","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: sm's refusal of a bad name passes 0xc15 alone","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ipc passes the controller's answers and a Close","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: hid passes npad entries doubled and one apart","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: time-snap passes a snapshot of the user clock and its span","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: vi passes the default display, the scaling table and the rounding","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: renderer passes its parameters and two settings kept","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ngc passes a clean name found clean and given back","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: ngc in hooks mode passes a clean name found clean and left as it was","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: apm passes a configuration kept per mode and the boost mode's","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: am-lock passes a lock taken, held and freed, and its event","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: set-sys passes settings read back as set and flags put back","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: time-zone passes names listed, the location and a date back","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: time-perm passes every write time:u asks refused","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: time-perm in hooks mode passes the SDK's clock setters refused","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: audout passes one output opened, buffers held and given back","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: hwopus through the SDK passes 24 decoders and the 25th OutOfResource","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: a silence packet passes only as 960 samples of nought a channel","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: audin passes none or each named, inside the room given","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: pctl passes only nothing restricted, communication free, level 0","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: fs-file passes files resized, renamed, cleaned, dated and space","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: acc-app passes every user qualified and a thumbnail checked","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: sdk passes a tail call that reaches what a call reaches","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"service: renderer passes a renderer stopped, started and stopped","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"game: the world steps and bounces as worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"game: each frame's fill leaves the nearest quad, which is not the last drawn","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"game: a frame's image has the texture, the fill and the cells where they belong","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"game: a quarter's hash is FNV-1a over its pixels, row by row","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"game: the file thread reads the whole file in 1024 frames, each chunk's hash the pattern's","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"game: frame times sum up to a mean, a 99th percentile, the longest and the hitches","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"game: the audio thread stops once its tone settled, or 5000 ms after the frames","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"game: the timed cases carry each measure past the warm-up, in order","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"game: the timing notes say the warm-up, each measure and the hitches by number","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's textures are tried with no vram word or 4096 MiB, and with less say what the machine has","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's BC7 mode 6 blocks are the bytes and texels Pillow decodes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's BC1 blocks are one colour, the bytes and texels Pillow decodes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's BC1 takes either way a five or six bit code becomes eight","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's RGBA8 texels are their place and salt, filled a word at a time","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's ASTC texels are the picture's, from the block their tile shifts in","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's BC7 bound a region is the worst texel measured there","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's ASTC tiles and frames take other blocks of the picture","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's regions, levels, samples and copy-out sit where its judge says","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's raw copies into the BC7 texture cover the blocks its judge expects","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"tex8k's percentile is numpy's and its distance the worst channel's","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"reference","name":"points of size 1, 3, 4 and 8 cover their squares of pixels","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the fixed suite's points put no pixel centre on an edge","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a rectangle lands where each viewport of the fixed suite puts it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a counter clockwise triangle's face under each viewport of the fixed suite","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"z of -1, -0.5, 0 and 0.5 are depths 0, 0.25, 0.5 and 0.75 from minus one","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"depth bounds keep a stored 0.5 at either end and reject it outside","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an alpha of 0.5 at three references tells the eight alpha tests apart","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the alpha tests' names read as the fixed suite's cases do","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the standard four samples sit at (6,2) (14,6) (2,10) (10,14) sixteenths","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a rectangle to a pixel's centre covers 0x5 of the standard four","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a rectangle to a pixel's centre covers 0x2 of the standard two","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a rectangle to a pixel's centre covers 0x3a of the standard eight","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a rectangle past a pixel covers every one of eight","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every sample at the centre leaves a pixel cut a quarter in uncovered","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the standard four put sample 2 inside a pixel cut a quarter in","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the coverage suite's own four split a pixel at its centre as 0x3","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the grid pattern splits even columns as 0x3 and odd ones as 0xc in both rows","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a quarter, a half, three quarters and all read table entries 3, 7, 11, 15","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every modulated channel is a whole byte with room under an eight bit factor","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"half of 0xa0 is 0x50 and half of 0x81 is refused","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the eight stencil compares pass the three bands in eight different ways","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"each stencil op leaves its own byte at 0xa5 and at 0x5a","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"incr stops at 0xff and incr_wrap goes to nought; decr stops at nought and decr_wrap goes to 0xff","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"inverting 0x0f through the write mask 0xf0 gives 0xff","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"0x3a equals 0x5a under the compare mask 0x1f and not without it","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"gradients of one, two, four and eight texels give lambdas 0 to 3 exactly","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"one texel along x and four along y give lambda 2","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"nearest mip filtering keeps level 0 up to lambda one half and stops at the last level","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"13/32 lands at least 3/16 of a texel from a boundary on every level","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an offset in a level's own texels reads another texel than one in level nought's on levels 1 to 3","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"lambda 1.25 blends level 1's 1019 and level 2's 2001 to 1264.5, a float exactly","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"lists, strips, fans, quads, quad strips and polygons make the triangles and provoking vertices OpenGL's table gives","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"line loops close, line strips do not, and quads and polygons drawn as lines show their outlines alone","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an index list splits at its restart index, and indexed triangles add the vertex offset","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the topology suite's quads, quad strip, polygon and fan cover exactly their rectangles","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"every edge where the topology suite's colour changes keeps a twentieth of a pixel from every pixel centre","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a line loop's closing side is judged drawn, a line strip's clear, and a quad's diagonal clear when drawn as lines","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a missed restart in the topology suite's strips and fans draws pixels the cases judge clear","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the copy suite's pictures give every texel a value of its own, and the full texels every combination of nought and full","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the copy suite's channels of nought and full become the bytes each format holds them in","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"a flipped, layered, scaled or padded copy puts each texel where worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the vertex suite's layouts give hand-worked floats and its vertices read where worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the svc suite's kernel results are the codes the console returns","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"an svc case's line names a kernel result and gives a code it does not know","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"frint's roundings of a single worked out by hand","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"the estimate tables and the unsigned estimates give hand-worked values","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"frecpe, frsqrte and frecpx give hand-worked singles and flags","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"half precision under AHP and DN gives hand-worked values and flags","tier":"none","result":"pass","detail":""} {"type":"case","suite":"reference","name":"fmax, fmin, fmaxnm and fminnm order hand-worked NaNs and noughts","tier":"none","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"clz counts each of sixteen 8-bit lanes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"clz counts each of eight 16-bit lanes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"clz counts each of four 32-bit lanes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"sdiv and udiv by zero give zero, 32 and 64 bits","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"frintx rounds to nearest even and raises inexact","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"frinta rounds halfway cases away from zero","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"sqshlu saturates 8, 16 and 64-bit lanes and sets QC","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"fcvtzs and fcvtzu with 64 fraction bits scale by 2^64","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"sm4ekey and sm4e give the SM4 standard's worked example","tier":"none","result":"skip","reason":"banned","detail":"banned on scarletnx at 6e268ea by source/bans.txt line 39 (versions *): ends the program with exit 1: the recompiler cannot run SM4EKEY (ce62c820); checked 2026-11-07 ends on 10ed344; the mode word unban runs it"} {"type":"case","suite":"cpu","name":"48 new straight-line blocks with 33 live registers leave the state worked out apart","tier":"exact","result":"pass","detail":""} {"type":"note","text":"cpu compile: 48 blocks of 160 operations, first calls 43 us, second calls 4 us, 814 ns a block to compile"} {"type":"case","suite":"cpu","name":"sqrshl and uqrshl round, shift and saturate lanes of every width","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"sqdmlal, sqdmlsl and sqdmull double, accumulate and saturate","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"sqrshrn, uqrshrn and sqrshrun round and narrow scalars","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"frecpe gives the Arm ARM's reciprocal estimate of singles of every class, flags too","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"frsqrte gives the reciprocal square root estimate of singles of every class, flags too","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"urecpe and ursqrte give the unsigned estimates, and all ones below their range","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"frecpx gives the reciprocal exponent, the largest for noughts and denormals","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"fcvtn and fcvtl with AHP take exponent 31 as a number and saturate past 131008","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"fcvtn keeps a NaN's payload's top bits, and gives the default NaN with DN set","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"fmax, fmin, fmaxnm and fminnm order NaNs, noughts and denormals as the Arm ARM does","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"sshl and ushl shift lanes of every width by a signed byte","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"srshl and urshl round lanes of every width shifted right","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"sqshl and uqshl by a register saturate every width and set QC","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"crc32b, h, w and x update four accumulators bit for bit","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"crc32cb, h, w and x update four accumulators with the Castagnoli polynomial","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"frintn, frintp, frintm, frintz and frinta round sixteen singles each their own way","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"frinti rounds by each of FPCR's four modes and raises nothing","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"frintx rounds by each of FPCR's four modes and raises inexact where it rounds","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"fmadd and fmsub round once, keep exact results exact and do not overflow midway","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"fmadd gives the default NaN for nought times infinity plus a quiet NaN","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"fcmeq, fcmge and fcmgt mask NaN lanes false and raise invalid as each compare must","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"fadd, fsub, fmul and fdiv keep NaN payloads and nought's sign lane by lane and raise their flags","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"a NaN stored from a b, h, s, d or q register keeps its bits and touches no other byte","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"ldxp and stxp swap a 128-bit pair","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"stxp after clrex fails and leaves the pair","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"cntfrq_el0 says 19.2 MHz and 100 ms asleep counts at that rate","tier":"position","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"mrs cntvct_el0 reads a virtual count that moves with the physical one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"cpu","name":"mrs daif reads nothing outside the four interrupt mask bits","tier":"none","result":"skip","reason":"banned","detail":"banned on scarletnx at 6e268ea by source/bans.txt line 40 (versions *): ends the program with exit 1: the recompiler cannot run MRS DAIF (d53b4223), which raises UNDEF as on the console; checked 2026-11-07 ends on 10ed344; the mode word unban runs it"} {"type":"case","suite":"clear","name":"graphics device opens","tier":"none","result":"pass","detail":""} {"type":"note","text":"clear target 64x64 RGBA8_Unorm, 4096 pixels checked per case"} {"type":"case","suite":"clear","name":"clear to opaque red","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"clear","name":"clear to transparent cyan","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"clear","name":"clear to a mid channel value","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"clear","name":"clear bounded by a rectangle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"clear","name":"with the clear flags' scissor bit off a clear covers the whole target","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"clear","name":"with scissor 0 turned off a clear covers the whole target","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"graphics device opens with room for every format","tier":"none","result":"pass","detail":""} {"type":"case","suite":"format","name":"every reference format is paired with the library's own","tier":"none","result":"pass","detail":""} {"type":"case","suite":"format","name":"the three output shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"format","name":"the uniform buffer has somewhere to live","tier":"none","result":"pass","detail":""} {"type":"note","text":"format target 32x32 per format, quad over x 4 to 20 and y 12 to 28, 60 formats"} {"type":"note","text":"format not drawn: RGB32_Float, RGB32_Uint, RGB32_Sint; twelve byte pixels, which the render target unit has no surface format for"} {"type":"note","text":"format not drawn: RGBA4_Unorm, RGB5_Unorm, RGB5A1_Unorm, RGB565_Unorm, A5BGR5_Unorm; sampling only: the library gives them no colour surface format; the blue first BGR565, BGR5 and BGR5A1 are the sixteen bit formats a target can have"} {"type":"note","text":"format not drawn: E5BGR9_Float; sampling only: a shared exponent has no colour surface format"} {"type":"note","text":"format not drawn: the BC, ETC2 and ASTC formats; compressed, sampling only"} {"type":"note","text":"format not drawn: S8, Z16, Z24X8, ZF32, Z24S8, ZF32_X24S8; depth and stencil, the depth suite's"} {"type":"case","suite":"format","name":"R8_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"R8_Snorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"R8_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"R8_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"R16_Float keeps a clear and a quad drawn over it","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"format","name":"R16_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"R16_Snorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"R16_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"R16_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"R32_Float keeps a clear and a quad drawn over it","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"format","name":"R32_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"R32_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG8_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG8_Snorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG8_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG8_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG16_Float keeps a clear and a quad drawn over it","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG16_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG16_Snorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG16_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG16_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG32_Float keeps a clear and a quad drawn over it","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG32_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG32_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA8_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA8_Snorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA8_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA8_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA16_Float keeps a clear and a quad drawn over it","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA16_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA16_Snorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA16_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA16_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA32_Float keeps a clear and a quad drawn over it","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA32_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA32_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX8_Unorm_sRGB keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBA8_Unorm_sRGB keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGB10A2_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGB10A2_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RG11B10_Float keeps a clear and a quad drawn over it","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX8_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX8_Snorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX8_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX8_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX16_Float keeps a clear and a quad drawn over it","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX16_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX16_Snorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX16_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX16_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX32_Float keeps a clear and a quad drawn over it","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX32_Uint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"RGBX32_Sint keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"BGR565_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"BGR5_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"BGR5A1_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"BGRX8_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"BGRA8_Unorm keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"BGRX8_Unorm_sRGB keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"format","name":"BGRA8_Unorm_sRGB keeps a clear and a quad drawn over it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"raster","name":"graphics device opens","tier":"none","result":"pass","detail":""} {"type":"case","suite":"raster","name":"the shaders load","tier":"none","result":"pass","detail":""} {"type":"note","text":"raster target 64x64 RGBA8_Unorm, clear 0000ff00, drawn ffff00ff"} {"type":"case","suite":"raster","name":"a full screen quad covers every pixel","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"raster","name":"clip space plus y is the top half","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"raster","name":"clip space minus x is the left half","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"raster","name":"a triangle's interior is exact and its edges land within a pixel","tier":"position","result":"pass","detail":""} {"type":"case","suite":"raster","name":"a shared edge belongs to the triangle it is the left edge of","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"raster","name":"the same edge does not also belong to the other triangle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"raster","name":"a viewport offset moves the triangle","tier":"position","result":"pass","detail":""} {"type":"case","suite":"raster","name":"a scissor leaves everything outside it untouched","tier":"position","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"graphics device opens with an integer target","tier":"none","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"the integer shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"the uniform buffer has somewhere to live","tier":"none","result":"pass","detail":""} {"type":"note","text":"intmath target 64x64 R32_Uint, 4096 pixels per case, sentinel 0xdeadbeef"} {"type":"case","suite":"intmath","name":"the fragment coordinate's x is the pixel centre, bit for bit","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"the fragment coordinate's y is the pixel centre, bit for bit","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"the uniform buffer delivers its value unaltered","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a multiply and an add that both overflow 32 bits","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a left shift discards the bits it pushes out","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"an unsigned right shift brings in noughts","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a signed right shift extends the sign bit","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"bitwise and","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"bitwise or","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"bitwise exclusive or","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"counting the set bits","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"finding the lowest and the highest set bit","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"unsigned division by a prime","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"unsigned remainder by a prime","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a signed integer converts to the nearest float, ties to even","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"an unsigned integer converts to the nearest float, ties to even","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a float converts to a signed integer towards nought","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a float above two to the 31 converts to an unsigned integer","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"packUnorm4x8 clamps and rounds each component","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"unpackUnorm4x8 then packUnorm4x8 gives the word back","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"packSnorm2x16 clamps and rounds each component","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"unpackSnorm2x16 then packSnorm2x16 gives the word back, 0x8000 as 0x8001","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"packHalf2x16 of floats that are exactly half precision","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"unpackHalf2x16 of normal halves and infinities","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a left shift by 31, 32 and 33 in a register clamps the count to 32","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"an unsigned right shift by 31, 32 and 33 clamps the count to 32","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a signed right shift by 31, 32 and 33 clamps the count to 32","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a left shift by every count from nought to 63","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"an unsigned right shift by every count from nought to 63","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a signed right shift by every count from nought to 63","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"signed division with negative operands truncates towards nought","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"signed remainder with negative operands takes the dividend's sign","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"findMSB of an unsigned value, nought included","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"findMSB of a signed value, minus one and nought included","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"findLSB, nought included","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"bitfieldExtract of an unsigned value at every offset and width","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"bitfieldExtract of a signed value extends the field's sign","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"bitfieldInsert at every offset and width","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"bitfieldReverse","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"the signed minimum","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"the unsigned maximum","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a signed clamp","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"an unsigned clamp","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"a multiply of two full words keeps the low word","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"umulExtended's high word of two full words","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"intmath","name":"imulExtended's high word of two full words, both signs","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"graphics device opens","tier":"none","result":"pass","detail":""} {"type":"case","suite":"blend","name":"the shaders load","tier":"none","result":"pass","detail":""} {"type":"note","text":"blend target 64x64 RGBA8_Unorm, 4096 pixels per case, 11 cases"} {"type":"note","text":"blend: the alpha channel has an equation of its own, adding leaving 96 and the maximum 64, so the cases that tell the alpha state apart from the colour state mean what they say"} {"type":"note","text":"blend: the alpha destination factor does not reach the blend unit, so no case gives it one of its own. Nought and one both left 64, and with the colour destination factor at nought in both draws, one that arrived would have added the destination alpha 32"} {"type":"case","suite":"blend","name":"blending off replaces the destination","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"adding with both factors one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"adding clamps at the top of the range","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"subtracting the destination from the source","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"subtracting clamps at the bottom of the range","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"subtracting the source from the destination","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"the minimum ignores the factors","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"the maximum ignores the factors","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"the source alpha weights both sides","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"the blend constant is a factor of its own","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blend","name":"a source factor of zero leaves the destination","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"graphics device opens with a depth target","tier":"none","result":"pass","detail":""} {"type":"case","suite":"depth","name":"the shaders load","tier":"none","result":"pass","detail":""} {"type":"note","text":"depth target 64x64 ZF32, first quad at 0.500, near 0.250, far 0.750"} {"type":"case","suite":"depth","name":"these three depths tell all eight comparisons apart","tier":"none","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a depth clear writes the value it was given","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment nearer than the buffer fails a never test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment at the buffer's own depth fails a never test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment farther than the buffer fails a never test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment nearer than the buffer passes a less than test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment at the buffer's own depth fails a less than test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment farther than the buffer fails a less than test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment nearer than the buffer fails an equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment at the buffer's own depth passes an equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment farther than the buffer fails an equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment nearer than the buffer passes a less than or equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment at the buffer's own depth passes a less than or equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment farther than the buffer fails a less than or equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment nearer than the buffer fails a greater than test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment at the buffer's own depth fails a greater than test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment farther than the buffer passes a greater than test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment nearer than the buffer passes a not equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment at the buffer's own depth fails a not equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment farther than the buffer passes a not equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment nearer than the buffer fails a greater than or equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment at the buffer's own depth passes a greater than or equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment farther than the buffer passes a greater than or equal test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment nearer than the buffer passes an always test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment at the buffer's own depth passes an always test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment farther than the buffer passes an always test","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment that passes with the write open replaces the depth","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"a fragment that passes with the write closed leaves the depth","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"depth","name":"closing the depth write does not stop the colour","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"graphics device opens with a depth target and the shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"a point of size 1 covers the 1 by 1 pixels around its centre","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"a point of size 3 covers the 3 by 3 pixels around its centre","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"a point of size 4 covers the 4 by 4 pixels around its centre","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"a point of size 8 covers the 8 by 8 pixels around its centre","tier":"exact","result":"pass","detail":""} {"type":"note","text":"fixed point coordinate: a point of size 8 drew 64 of its 64 pixels and reads gl_PointCoord (16, 239) at its first row and column and (239, 16) at its last, of 255; 16 at the first row is the coordinate's origin at the top of memory, 239 at the bottom"} {"type":"case","suite":"fixed","name":"an alpha test never passes an alpha of 0.5 against no reference","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"an alpha test less than passes an alpha of 0.5 against 0.75","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"an alpha test equal passes an alpha of 0.5 against 0.50","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"an alpha test less than or equal passes an alpha of 0.5 against 0.50, 0.75","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"an alpha test greater than passes an alpha of 0.5 against 0.25","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"an alpha test not equal passes an alpha of 0.5 against 0.25, 0.75","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"an alpha test greater than or equal passes an alpha of 0.5 against 0.25, 0.50","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"an alpha test always passes an alpha of 0.5 against 0.25, 0.50, 0.75","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"depth bounds 0.125 to 0.375 reject a pixel whose buffer holds 0.5, its fragment at 0.25","tier":"exact","result":"fail","detail":"a quad over the target at 0.25 over a buffer of 0.5, the bounds test against the buffer: 4096 wrong pixels, 4096 drawn where the target should keep its clear, 0 left clear where something should be drawn; the first at (0, 0) is ff 00 00 ff, expected 00 00 ff ff","image":"images/fixed/depth-bounds-0-125-to-0-375-reject-a-pixel-whose-buffer-holds-0-5-its-fragment-at-0-25.pam","expected":"images/fixed/depth-bounds-0-125-to-0-375-reject-a-pixel-whose-buffer-holds-0-5-its-fragment-at-0-25-expected.pam","diff":"images/fixed/depth-bounds-0-125-to-0-375-reject-a-pixel-whose-buffer-holds-0-5-its-fragment-at-0-25-diff.pam"} {"type":"case","suite":"fixed","name":"depth bounds 0.375 to 0.625 keep a pixel whose buffer holds 0.5, its fragment at 0.25","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"depth bounds 0.500 to 0.750 keep a pixel whose buffer holds 0.5, its fragment at 0.25","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"depth bounds 0.250 to 0.500 keep a pixel whose buffer holds 0.5, its fragment at 0.25","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"depth bounds 0.625 to 0.875 reject a pixel whose buffer holds 0.5, its fragment at 0.25","tier":"exact","result":"fail","detail":"a quad over the target at 0.25 over a buffer of 0.5, the bounds test against the buffer: 4096 wrong pixels, 4096 drawn where the target should keep its clear, 0 left clear where something should be drawn; the first at (0, 0) is ff 00 00 ff, expected 00 00 ff ff","image":"images/fixed/depth-bounds-0-625-to-0-875-reject-a-pixel-whose-buffer-holds-0-5-its-fragment-at-0-25.pam","expected":"images/fixed/depth-bounds-0-625-to-0-875-reject-a-pixel-whose-buffer-holds-0-5-its-fragment-at-0-25-expected.pam","diff":"images/fixed/depth-bounds-0-625-to-0-875-reject-a-pixel-whose-buffer-holds-0-5-its-fragment-at-0-25-diff.pam"} {"type":"case","suite":"fixed","name":"depth bounds switched off keep every pixel","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"with the rasteriser off a draw writes nothing","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"a counter clockwise triangle is front and a clockwise one is culled","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"with the front face clockwise the clockwise triangle is the one drawn","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"a positive y scale mirrors the picture and culls the counter clockwise triangle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"the NegativeY swizzle mirrors the picture and culls the counter clockwise triangle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"a positive y scale and the NegativeY swizzle cancel","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"the swizzle that swaps x and y transposes the picture","tier":"exact","result":"pass","detail":""} {"type":"note","text":"fixed depth outside the range, clamp off, depth from nought to one, buffer at 0.75: a quad at z -0.5 left the clear and depth 0.750000, one at z 1.5 left the clear and depth 0.750000 (drawn and 0 or 1 is clamped, the clear and 0.75 is clipped)"} {"type":"note","text":"fixed depth outside the range, clamp on, depth from nought to one, buffer at 0.75: a quad at z -0.5 left its colour and depth 0.000000, one at z 1.5 left its colour and depth 1.000000 (drawn and 0 or 1 is clamped, the clear and 0.75 is clipped)"} {"type":"case","suite":"fixed","name":"a device with the lower left origin opens","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"with the origin lower left, clip space y of one is the last row","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"with the origin lower left, a counter clockwise triangle is still front","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"a device with depth from minus one to one opens","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fixed","name":"with depth from minus one to one, z of -1, -0.5, 0 and 0.5 store 0, 0.25, 0.5 and 0.75","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"graphics device opens with two depth and stencil targets","tier":"none","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"the drawing shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: never against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: less against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: equal against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: lequal against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: greater against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: notequal against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: gequal against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: always against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a failing stencil takes incr, a failing depth invert, a pass keep","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a failing stencil takes decr, a failing depth incr_wrap, a pass zero","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a failing stencil takes invert, a failing depth decr_wrap, a pass replace","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a failing stencil takes incr_wrap, a failing depth keep, a pass incr","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a failing stencil takes decr_wrap, a failing depth zero, a pass decr","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a failing stencil takes keep, a failing depth replace, a pass invert","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a failing stencil takes zero, a failing depth incr, a pass incr_wrap","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a failing stencil takes replace, a failing depth decr, a pass decr_wrap","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: incr and incr_wrap at 0xff","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: decr and decr_wrap at 0x00","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: the write mask keeps the bits it closes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: the compare mask applies to the reference and the stored value","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: each winding takes its own face's reference","tier":"exact","result":"pass","detail":""} {"type":"note","text":"stencil z24s8: the quad wound counter-clockwise in clip space (rows 0-15) took the front face's state"} {"type":"case","suite":"stencil","name":"z24s8: the depth the fragment shader writes is the one tested","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: the depth fail op follows the depth the fragment shader wrote","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a shader that writes depth runs where the depth test then fails","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: with early fragment tests the shader runs only where the depth test passes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: a shader that writes depth runs where the stencil test then fails","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"z24s8: with early fragment tests the shader runs only where the stencil test passes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: never against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: less against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: equal against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: lequal against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: greater against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: notequal against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: gequal against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: always against 0x80 passes the bands it should","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a failing stencil takes incr, a failing depth invert, a pass keep","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a failing stencil takes decr, a failing depth incr_wrap, a pass zero","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a failing stencil takes invert, a failing depth decr_wrap, a pass replace","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a failing stencil takes incr_wrap, a failing depth keep, a pass incr","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a failing stencil takes decr_wrap, a failing depth zero, a pass decr","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a failing stencil takes keep, a failing depth replace, a pass invert","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a failing stencil takes zero, a failing depth incr, a pass incr_wrap","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a failing stencil takes replace, a failing depth decr, a pass decr_wrap","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: incr and incr_wrap at 0xff","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: decr and decr_wrap at 0x00","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: the write mask keeps the bits it closes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: the compare mask applies to the reference and the stored value","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: each winding takes its own face's reference","tier":"exact","result":"pass","detail":""} {"type":"note","text":"stencil zf32_x24s8: the quad wound counter-clockwise in clip space (rows 0-15) took the front face's state"} {"type":"case","suite":"stencil","name":"zf32_x24s8: the depth the fragment shader writes is the one tested","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: the depth fail op follows the depth the fragment shader wrote","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a shader that writes depth runs where the depth test then fails","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: with early fragment tests the shader runs only where the depth test passes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: a shader that writes depth runs where the stencil test then fails","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stencil","name":"zf32_x24s8: with early fragment tests the shader runs only where the stencil test passes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texture","name":"graphics device opens with room for textures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"texture","name":"the sampling shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"texture","name":"every neighbouring pair of texels averages to a whole byte","tier":"none","result":"pass","detail":""} {"type":"case","suite":"texture","name":"no pair of texels is far enough apart for a filter weight to matter","tier":"none","result":"pass","detail":""} {"type":"case","suite":"texture","name":"the textures have somewhere to live","tier":"none","result":"pass","detail":""} {"type":"case","suite":"texture","name":"the texels reach the textures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"texture","name":"the descriptor sets have somewhere to live","tier":"none","result":"pass","detail":""} {"type":"note","text":"texture 4x4 RGBA8_Unorm onto 64x64, 256 pixels per texel"} {"type":"case","suite":"texture","name":"nearest sampling inside the texture picks the texel under the pixel","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texture","name":"repeating tiles the texture","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texture","name":"clamping to the edge stretches the border texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texture","name":"mirroring tiles the texture with no seam","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texture","name":"linear sampling halfway between two texels is their average","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"graphics device opens with a float target","tier":"none","result":"pass","detail":""} {"type":"case","suite":"lod","name":"the shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"lod","name":"the texture's five levels and the samplers are in place","tier":"none","result":"pass","detail":""} {"type":"case","suite":"lod","name":"textureGrad along x picks levels 0 to 3","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"textureGrad along y counts the height's texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"the y derivative picks the level as the x derivative does","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"the longer of the two derivatives decides","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"textureGradOffset counts its offset in the picked level's texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"textureLod picks the level it names","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"textureLodOffset counts its offset in that level's texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"the sampler's minimum level of detail lifts a gradient's level","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"the sampler's maximum level of detail caps gradients and explicit levels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"the sampler's bias adds to a gradient's level","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"lod","name":"a minimum of 1.25 with linear mip filtering blends levels 1 and 2","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"coverage","name":"graphics device opens with its targets","tier":"none","result":"pass","detail":""} {"type":"case","suite":"coverage","name":"the shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"coverage","name":"four raster samples write 0xf where a pixel is covered","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"the standard four samples split a pixel at its centre as 0x5","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"two raster samples write 0x3, and 0x2 where a pixel's centre cuts them","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"eight raster samples write 0xff, and 0x3a where a pixel's centre cuts them","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"the sample mask is in the mask written","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"positions the list sets split a pixel as 0x3 where the standard give 0x5","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"every sample at the centre leaves a pixel cut a quarter in unwritten","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"odd columns of the 2 by 2 grid take their own positions","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"alpha to coverage at nought covers no sample","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"alpha to coverage at one covers every sample","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"alpha to coverage at one keeps to the sample mask","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"alpha to one keeps the coverage the shader's alpha gave","tier":"exact","result":"fail","detail":""} {"type":"note","text":"coverage alpha 1/8 dither off: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 2/8 dither off: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 3/8 dither off: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 4/8 dither off: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 5/8 dither off: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 6/8 dither off: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 7/8 dither off: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 1/8 dither on: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 2/8 dither on: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 3/8 dither on: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 4/8 dither on: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 5/8 dither on: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 6/8 dither on: 0xdead0000 (no coverage written) x256"} {"type":"note","text":"coverage alpha 7/8 dither on: 0xdead0000 (no coverage written) x256"} {"type":"case","suite":"coverage","name":"rgba modulation scales every channel by the share of samples covered","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"rgb modulation leaves alpha whole","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"alpha modulation leaves the colour whole","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"a second target is modulated and keeps its own write mask","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"the modulation table takes the place of the share","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"a pixel cut at its centre is modulated by the two samples it covers","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"over a four sample depth image a one sample target receives the coverage the depth test left","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"a four sample texture fetches the sample it names","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"coverage","name":"coverage to color writes each sample the coverage left after the depth test","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"msaa","name":"graphics device opens with room for the targets","tier":"none","result":"pass","detail":""} {"type":"case","suite":"msaa","name":"the shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"msaa","name":"a 4x target's samples lie in memory two by two, sample i at (2x + i % 2, 2y + i / 2)","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"msaa","name":"a resolve of a 4x target averages each pixel's four samples","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"msaa","name":"a 4x ZF32 target cleared to 0.75 holds the float at every sample","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"msaa","name":"each sample of a 4x texture the processor wrote is fetched from its place in the 2x2 layout","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"msaa","name":"a conservative triangle covers every sample of each pixel it crosses","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"sampling","name":"graphics device opens with a target of floats","tier":"none","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"the sampling shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"R8 0xff samples as 1 0 0 1","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"RG8 00 ff samples as 0 1 0 1","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"RGBX8 ff 00 ff 00 samples its alpha as 1","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"BGRA8 ff 00 00 ff samples blue from its first byte","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"R8 snorm 0x80 samples as -1","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"RGB565 0x07ff samples red from its low five bits","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"BGR565 0x07ff samples blue from its low five bits","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"RGB5A1 0x801f samples red low and alpha from the top bit","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"RGBA4 0x0f0f samples red from the low nibble","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"RGB10A2 0x3ff003ff samples as 1 0 1 0","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"R16F 0xb555 samples as its half","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"RG11B10F 0x801c03c0 samples as 1 0.5 2 1","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"E5BGR9 0x7807ff00 samples its shared exponent","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"a linear lookup halfway between 0 and 1 averages them","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"the minimum reduction takes the lesser texel","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"the maximum reduction takes the greater texel","tier":"exact","result":"pass","detail":""} {"type":"note","text":"sampling a reduction of 3, which names no mode: the lookup halfway between 0 and 1 gave 0.5 (the average is 0.5, the minimum 0, the maximum 1)"} {"type":"case","suite":"sampling","name":"a rectangle view reads texel (3, 0) at (3.5, 0.5)","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"a normalised view reads texel (3, 0) at (0.875, 0.125)","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sampling","name":"a normalised view repeats (3.5, 0.5) to texel (2, 2)","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"graphics device opens with room for the images","tier":"none","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"the shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"the images have somewhere to live","tier":"none","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"the block linear texture is eight gobs of one gob blocks","tier":"none","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"the starting texels reach the textures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"the processor finds the copy engine's texels where the block linear rule puts them","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a texture rendered in the same list is sampled as drawn","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a partial redraw reaches the sampler and the rest keeps its texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"texels the processor rewrites in a pitch linear texture reach the next sample","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"texels the processor rewrites in part of a block linear texture reach the next sample","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"one row the processor rewrites through a cached mapping reaches the next sample once flushed","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a uniform buffer the processor rewrites between submits reaches the next draw","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"four submits each see the one word of a uniform buffer rewritten before them","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a uniform buffer pushed between two draws of one list reaches the second only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a render target sampled as R32_Uint gives the little endian word of its bytes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"redrawing a render target reaches its R32_Uint alias in one list","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a buffer the copy engine writes into a texture reaches the next sample in one list","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"part of an image the copy engine copies into a texture reaches the next sample","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"an image read back before the copies holds what was uploaded","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a render target copied to an image reads back as drawn","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"part of a render target copied to an image reads back as drawn","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a device opens for the rewritten programs and vertices","tier":"none","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a fragment program the processor rewrote between two lists draws as the new one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"a fragment program the copy engine rewrote in the middle of a list draws as the new one after it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"coherence","name":"vertices the copy engine wrote between two draws of a list reach the second","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"graphics device opens with a float target","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the float shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the uniform buffer has somewhere to live","tier":"none","result":"pass","detail":""} {"type":"note","text":"fmath target 64x64 R32_Float, operands 0.015625 to 1"} {"type":"note","text":"fmath budget for \"a float travels through the uniform buffer unaltered\": 0 units in the last place: nothing is computed, the value is copied through a uniform buffer and written out again"} {"type":"note","text":"fmath budget for \"addition is correctly rounded\": 0 units in the last place: the core table requires addition and multiplication to be correctly rounded, so there is one right answer, and the reference reaches it exactly because the sum and the product of two single precision numbers are exact in double precision"} {"type":"note","text":"fmath budget for \"multiplication is correctly rounded\": 0 units in the last place: the core table requires addition and multiplication to be correctly rounded, so there is one right answer, and the reference reaches it exactly because the sum and the product of two single precision numbers are exact in double precision"} {"type":"note","text":"fmath budget for \"a multiply and an add in one call\": 0 units in the last place: the console's binary is one fused FFMA, which rounds once, and the reference is the processor's fused multiply and add, the same single rounding. The table would let an unfused pair round twice, up to 1.5 units off; a machine that splits it differs from the console, and the case says so"} {"type":"note","text":"fmath budget for \"division within two and a half units in the last place\": 3 units in the last place: 2.5 for division in the core table, plus the half the reference carries for being a double precision answer rounded to single"} {"type":"note","text":"fmath budget for \"the square root\": 5 units in the last place: the table gives the square root no figure of its own and inherits it from one over the inverse square root, which is 2 for the inverse square root and 2.5 for the division, plus the half the reference carries. Three would be a number from somewhere else"} {"type":"note","text":"fmath budget for \"two to the power of\": 3.5 plus 2 per unit of the argument: the table allows three plus twice the magnitude of the argument, and the half the reference carries goes on the constant. Over the range this case sweeps that is three and a half at the smallest argument and eleven and a half at the largest, and a flat three would fail a machine that was inside its allowance everywhere but the middle"} {"type":"note","text":"fmath budget for \"the logarithm to base two\": 3.5 units in the last place: 3 from the table, which is the figure that applies outside the range from a half to two, where this operand is kept, plus the half the reference carries"} {"type":"note","text":"fmath budget for \"the sine, within two to the minus eleven\": 0.000488281 absolute, which is two to the minus eleven: the table bounds these two by an absolute error inside minus pi to pi and not by units in the last place at all. The shading language's own specification leaves them undefined, which is the clearest reason this suite holds itself to the other one"} {"type":"note","text":"fmath budget for \"the cosine, within two to the minus eleven\": 0.000488281 absolute, which is two to the minus eleven: the table bounds these two by an absolute error inside minus pi to pi and not by units in the last place at all. The shading language's own specification leaves them undefined, which is the clearest reason this suite holds itself to the other one"} {"type":"note","text":"fmath budget for \"fma keeps the product's rounding error, as the console's FFMA does\": 0 units in the last place: the console's FFMA is fused, and the exact product less a nearby float is exact itself, so there is one answer. Done apart the product rounds first and the answer loses its low bits, which is a difference from the console"} {"type":"note","text":"fmath budget for \"min and max against infinities\": 0 units in the last place: a minimum or a maximum only picks one of its operands, and against an infinity which one is defined"} {"type":"note","text":"fmath budget for \"min and max hand back the operand that is not a NaN\": 0 units in the last place: the console's minimum and maximum hand back the operand that is not a NaN, as GLSL.std.450's NMin and NMax define it. The plain FMin a translator may reach for leaves this undefined, so a NaN here is a difference from the console, which is the machine an emulator answers to"} {"type":"note","text":"fmath budget for \"mix carries infinities and NaNs through\": 0 units in the last place: each answer is the infinity or the NaN that x times one less a plus y times a gives in IEEE arithmetic, and x plus a times y less x gives the same one. Vulkan lets a machine assume no infinity or NaN arrives, so a failure is a difference from the console rather than from the table"} {"type":"note","text":"fmath budget for \"denormal products, sums and operands flush, as the console's do\": 0 units in the last place: every instruction in the console's binary flushes denormals, operands and results, so each answer is exact and one. The table allows keeping them; a machine that does differs from the console, and the case says so"} {"type":"note","text":"fmath budget for \"two to the power of -128 to nearly 128\": 3.5 plus 2 per unit of the argument: the power of two's own figure, over -128 to nearly 128, which reaches 259.375 at the top. Below two to the -126 the console's MUFU flushes the answer, so nought is the answer there"} {"type":"note","text":"fmath budget for \"the logarithm from the smallest normal to nearly the largest float\": 3.5 units in the last place: the logarithm's 3 and the half the reference carries, on operands from the smallest normal to nearly the largest float with a full mantissa, none inside a half to two where the table switches to an absolute figure"} {"type":"note","text":"fmath budget for \"the square root of denormals and tiny normals\": 5 units in the last place: the square root's figure, on operands from the denormals to two to the -96. The console's MUFU flushes a denormal operand, so nought is the answer for those"} {"type":"note","text":"fmath budget for \"the inverse square root of denormals and tiny normals\": 2.5 units in the last place: 2 from the table and the half the reference carries. The console's MUFU flushes a denormal operand, so infinity is the answer for those"} {"type":"note","text":"fmath budget for \"floor of negatives and fractions\": 0 units in the last place: the answer is a whole number or the exact difference between the operand and one, so there is one right answer and the table's are exact"} {"type":"note","text":"fmath budget for \"fract of negatives\": 0 units in the last place: the answer is a whole number or the exact difference between the operand and one, so there is one right answer and the table's are exact"} {"type":"note","text":"fmath budget for \"round of negatives and halves, halves to even as the console's\": 0 units in the last place, and a half to even: the language lets round go either way there, and the console's binary compiles it to the same rounding as roundEven, so a machine that rounds a half away from nought differs from the console. So does one that rounds -0.25 to plus nought, where the console's F2F keeps the sign"} {"type":"note","text":"fmath budget for \"roundEven of halves goes to the even neighbour\": 0 units in the last place: the answer is a whole number, so the table's is exact. The sign of a nought is the console's rule: its F2F rounds -0.25 and -0.5 to minus nought, and a machine that gives plus nought differs from the console"} {"type":"note","text":"fmath budget for \"addition that has to round, rounds to nearest even\": 0 units in the last place: the core table requires addition and multiplication to be correctly rounded, and these need rounding at every pixel (the product where the multiplier is not one), ties to even among them, so a machine that truncates or rounds a tie away from nought differs. The reference is exact in double precision before its one rounding"} {"type":"note","text":"fmath budget for \"multiplication that has to round, rounds to nearest even\": 0 units in the last place: the core table requires addition and multiplication to be correctly rounded, and these need rounding at every pixel (the product where the multiplier is not one), ties to even among them, so a machine that truncates or rounds a tie away from nought differs. The reference is exact in double precision before its one rounding"} {"type":"case","suite":"fmath","name":"a float travels through the uniform buffer unaltered","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"addition is correctly rounded","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"multiplication is correctly rounded","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"a multiply and an add in one call","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"division within two and a half units in the last place","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the square root","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"two to the power of","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the logarithm to base two","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the sine, within two to the minus eleven","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the cosine, within two to the minus eleven","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"fma keeps the product's rounding error, as the console's FFMA does","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"min and max against infinities","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"min and max hand back the operand that is not a NaN","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"mix carries infinities and NaNs through","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"denormal products, sums and operands flush, as the console's do","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"two to the power of -128 to nearly 128","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the logarithm from the smallest normal to nearly the largest float","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the square root of denormals and tiny normals","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the inverse square root of denormals and tiny normals","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"floor of negatives and fractions","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"fract of negatives","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"round of negatives and halves, halves to even as the console's","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"roundEven of halves goes to the even neighbour","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"addition that has to round, rounds to nearest even","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"multiplication that has to round, rounds to nearest even","tier":"ulp","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"the saturating shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"a saturate gives +0 for quiet and signalling NaNs of either sign","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fmath","name":"a saturate clamps to 0 and 1 and keeps what lies between","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"graphics device opens with a compute queue","tier":"none","result":"pass","detail":""} {"type":"case","suite":"order","name":"the compute and drawing shaders load","tier":"none","result":"pass","detail":""} {"type":"note","text":"order: 256 groups of 64 spin 20000 times before the last invocations copy, each storing fragment 2000 times; marker 0x7f3c19e5"} {"type":"case","suite":"order","name":"vertices a dispatch wrote before a wait for idle reach the draw","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"indices a dispatch wrote before a wait for idle reach the draw","tier":"exact","result":"fail","detail":"4096 of 4096 pixels wrong (4096 still hold the clear, what a read of the buffer before the dispatch finished draws); first is 00000000, expected e5193c7f","image":"images/order/indices-a-dispatch-wrote-before-a-wait-for-idle-reach-the-draw.pam","expected":"images/order/indices-a-dispatch-wrote-before-a-wait-for-idle-reach-the-draw-expected.pam","diff":"images/order/indices-a-dispatch-wrote-before-a-wait-for-idle-reach-the-draw-diff.pam"} {"type":"case","suite":"order","name":"draw arguments a dispatch wrote before a wait for idle reach the indirect draw","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"a uniform buffer a dispatch wrote before a wait for idle reaches the fragments","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"a storage buffer a dispatch wrote before a wait for idle reaches the fragments","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"a grid a dispatch wrote before a wait for idle sizes the indirect dispatch","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"words a dispatch wrote before a wait for idle reach the next dispatch","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"words the fragments stored before a wait for idle reach the next dispatch","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"vertices a dispatch wrote before a full barrier reach the draw","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"draw arguments a dispatch wrote before a full barrier reach the indirect draw","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"a storage buffer a dispatch wrote before a full barrier reaches the fragments","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"words the fragments stored before a fragments barrier reach the next draw's fragments","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"words the fragments stored before a tiles barrier reach the next draw's fragments at the same pixel","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"128 dispatch and draw pairs, each ordered by a wait for idle, all draw","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"128 dispatch and draw pairs with no wait for idle between them are recorded","tier":"none","result":"pass","detail":""} {"type":"case","suite":"order","name":"256 draws into one target, each followed by a wait for idle, all land","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"256 draws into one target with no wait for idle between them are recorded","tier":"none","result":"pass","detail":""} {"type":"case","suite":"order","name":"an indirect dispatch of a grid of nought groups runs none","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"a draw with no target bound still runs its fragments' stores","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"a block of 64 uses all 48 KiB of its shared memory","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"order","name":"a barrier hands each of 64 invocations the shared words another wrote","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"queue","name":"graphics device opens with a second queue and a word to wait on","tier":"none","result":"pass","detail":""} {"type":"case","suite":"queue","name":"a wait for the word to reach 1 holds the list until the processor writes 1","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"queue","name":"a wait for the word to equal 2 holds the list at 1 and goes on at 2","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"queue","name":"another queue's signal releases the wait after that queue's own copy","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"queue","name":"a wait the word already satisfies passes at once","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"graphics device opens with a compute queue and room for the images","tier":"none","result":"pass","detail":""} {"type":"case","suite":"storage","name":"the storage shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of -0.25 1 0.2 2 into RGBA8 writes 00 ff 33 ff","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of -1 1 -2 0 into RGBA8 snorm writes 81 7f 81 00","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of 1 1/3 0 2/3 into RGB10A2 writes 0x800557ff","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of 1 0.5 2 into RG11B10F writes 0x801c03c0","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of -0.25 0.5 -0.75 1 into RGBA16F writes its halves","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of -0.25 into R32F writes 0xbe800000","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of -0.25 0.5 -0.75 1 into RGBA32F writes its floats","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of 0x89abcdef into R32 uint writes it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of 17 34 51 68 into RGBA8 uint writes 11 22 33 44","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store of -17 34 -51 68 into RGBA16 sint writes ffef 0022 ffcd 0044","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store to level 1 of three writes that texel and no other","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store to layer 1 of a three layer array writes that texel and no other","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a store to slice 1 of a volume writes that texel and no other","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a formatted load of RGBA8 00 80 ff 40 gives 0, 128/255, 1 and 64/255 to the bit","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a load and a store of layer 1 at level 1 of an R32F array keep the float's bits","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"storage","name":"a load and a store of slice 1 of an RGBA8 sint volume keep its four bytes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"index","name":"graphics device opens with room for index buffers","tier":"none","result":"pass","detail":""} {"type":"case","suite":"index","name":"the drawing shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"index","name":"an indexed draw with the library's open limit uses every index","tier":"exact","result":"fail","detail":"4096 of 4096 pixels not drawn, 2016 of them in the triangle the last index closes","image":"images/index/an-indexed-draw-with-the-library-s-open-limit-uses-every-index.pam","expected":"images/index/an-indexed-draw-with-the-library-s-open-limit-uses-every-index-expected.pam","diff":"images/index/an-indexed-draw-with-the-library-s-open-limit-uses-every-index-diff.pam"} {"type":"case","suite":"index","name":"a limit on the last byte of 16-bit indices keeps the last index","tier":"exact","result":"fail","detail":"4096 of 4096 pixels not drawn, 2016 of them in the triangle the last index closes","image":"images/index/a-limit-on-the-last-byte-of-16-bit-indices-keeps-the-last-index.pam","expected":"images/index/a-limit-on-the-last-byte-of-16-bit-indices-keeps-the-last-index-expected.pam","diff":"images/index/a-limit-on-the-last-byte-of-16-bit-indices-keeps-the-last-index-diff.pam"} {"type":"case","suite":"index","name":"a limit on the last byte of 8-bit indices keeps the last index","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"index","name":"a limit on the last byte of 32-bit indices keeps the last index","tier":"exact","result":"fail","detail":"4096 of 4096 pixels not drawn, 2016 of them in the triangle the last index closes","image":"images/index/a-limit-on-the-last-byte-of-32-bit-indices-keeps-the-last-index.pam","expected":"images/index/a-limit-on-the-last-byte-of-32-bit-indices-keeps-the-last-index-expected.pam","diff":"images/index/a-limit-on-the-last-byte-of-32-bit-indices-keeps-the-last-index-diff.pam"} {"type":"case","suite":"index","name":"a limit on the last byte of 3006 16-bit indices keeps the last index","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"index","name":"a limit on the last byte keeps the last index when the draw starts at 4","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"graphics device opens and the shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"topology","name":"two quads in one draw cover their two rectangles","tier":"exact","result":"fail","detail":"","image":"images/topology/two-quads-in-one-draw-cover-their-two-rectangles.pam","expected":"images/topology/two-quads-in-one-draw-cover-their-two-rectangles-expected.pam","diff":"images/topology/two-quads-in-one-draw-cover-their-two-rectangles-diff.pam"} {"type":"case","suite":"topology","name":"a quad takes its flat colour from its fourth vertex","tier":"exact","result":"fail","detail":"","image":"images/topology/a-quad-takes-its-flat-colour-from-its-fourth-vertex.pam","expected":"images/topology/a-quad-takes-its-flat-colour-from-its-fourth-vertex-expected.pam","diff":"images/topology/a-quad-takes-its-flat-colour-from-its-fourth-vertex-diff.pam"} {"type":"case","suite":"topology","name":"quads drawn from 8-bit indices cover their rectangles","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"quads drawn from 16-bit indices cover their rectangles","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"quads drawn from 32-bit indices cover their rectangles","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"indexed quads begin at the first index and add the vertex offset","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a quad draw of six vertices draws one quad and leaves two over","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a quad strip of eight vertices covers its three quads","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a quad strip's quads each take their last vertex's colour","tier":"exact","result":"fail","detail":"","image":"images/topology/a-quad-strip-s-quads-each-take-their-last-vertex-s-colour.pam","expected":"images/topology/a-quad-strip-s-quads-each-take-their-last-vertex-s-colour-expected.pam","diff":"images/topology/a-quad-strip-s-quads-each-take-their-last-vertex-s-colour-diff.pam"} {"type":"case","suite":"topology","name":"a polygon of six corners covers the rectangle they bound","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a triangle fan covers the rectangle around its hub","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a fan's triangles each take their last vertex's colour","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a strip's triangles each take their last vertex's colour","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"with the first vertex provoking, a strip's triangles take their first vertex's colour","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"with the first vertex provoking, a fan's triangles take their first rim vertex's colour","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a triangle strip restarts at index 8 of 16-bit indices","tier":"exact","result":"fail","detail":"","image":"images/topology/a-triangle-strip-restarts-at-index-8-of-16-bit-indices.pam","expected":"images/topology/a-triangle-strip-restarts-at-index-8-of-16-bit-indices-expected.pam","diff":"images/topology/a-triangle-strip-restarts-at-index-8-of-16-bit-indices-diff.pam"} {"type":"case","suite":"topology","name":"a triangle strip restarts at index 8 of 8-bit indices","tier":"exact","result":"fail","detail":"","image":"images/topology/a-triangle-strip-restarts-at-index-8-of-8-bit-indices.pam","expected":"images/topology/a-triangle-strip-restarts-at-index-8-of-8-bit-indices-expected.pam","diff":"images/topology/a-triangle-strip-restarts-at-index-8-of-8-bit-indices-diff.pam"} {"type":"case","suite":"topology","name":"a triangle strip restarts at index 8 of 32-bit indices","tier":"exact","result":"fail","detail":"","image":"images/topology/a-triangle-strip-restarts-at-index-8-of-32-bit-indices.pam","expected":"images/topology/a-triangle-strip-restarts-at-index-8-of-32-bit-indices-expected.pam","diff":"images/topology/a-triangle-strip-restarts-at-index-8-of-32-bit-indices-diff.pam"} {"type":"case","suite":"topology","name":"a triangle strip restarts at 0xff of 8-bit indices","tier":"exact","result":"fail","detail":"","image":"images/topology/a-triangle-strip-restarts-at-0xff-of-8-bit-indices.pam","expected":"images/topology/a-triangle-strip-restarts-at-0xff-of-8-bit-indices-expected.pam","diff":"images/topology/a-triangle-strip-restarts-at-0xff-of-8-bit-indices-diff.pam"} {"type":"case","suite":"topology","name":"with restart off, index 8 is a vertex like any other","tier":"exact","result":"fail","detail":"","image":"images/topology/with-restart-off-index-8-is-a-vertex-like-any-other.pam","expected":"images/topology/with-restart-off-index-8-is-a-vertex-like-any-other-expected.pam","diff":"images/topology/with-restart-off-index-8-is-a-vertex-like-any-other-diff.pam"} {"type":"case","suite":"topology","name":"a triangle fan restarts at index 8 with a hub of its own","tier":"exact","result":"fail","detail":"","image":"images/topology/a-triangle-fan-restarts-at-index-8-with-a-hub-of-its-own.pam","expected":"images/topology/a-triangle-fan-restarts-at-index-8-with-a-hub-of-its-own-expected.pam","diff":"images/topology/a-triangle-fan-restarts-at-index-8-with-a-hub-of-its-own-diff.pam"} {"type":"case","suite":"topology","name":"indexed quads restart at index 8","tier":"exact","result":"fail","detail":"","image":"images/topology/indexed-quads-restart-at-index-8.pam","expected":"images/topology/indexed-quads-restart-at-index-8-expected.pam","diff":"images/topology/indexed-quads-restart-at-index-8-diff.pam"} {"type":"case","suite":"topology","name":"a line loop closes from its last vertex to its first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a line strip of the same four vertices leaves that side open","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a quad drawn as lines shows its four sides and no diagonal","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"a polygon drawn as lines shows its outline and no diagonal","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"topology","name":"two triangles drawn as lines show the diagonal they share","tier":"exact","result":"pass","detail":""} {"type":"note","text":"topology polygon, the last vertex provoking, six corners: vertex 3's 640, vertex 4's 640"} {"type":"note","text":"topology quads, the first vertex provoking, vertices 0 to 3 and 4 to 7: the first vertex 0's 320; the second vertex 4's 480"} {"type":"case","suite":"vertex","name":"graphics device opens with an RGBA32F target and the shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"a stride of 69 bytes, no multiple of four, reads each RGBA32F vertex from its own place","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"a stride of 48 reads 16 bytes at offset 8 of each vertex and none of the poison around them","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"an attribute at offset 40 of a 32 byte stride reads into the next vertex's bytes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"an RGB32F attribute reads one in the w it lacks","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"an RG32F attribute reads nought and one in the z and w it lacks","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"an R32F attribute reads nought, nought and one in the y, z and w it lacks","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"an RGBA8 attribute in BGRA order takes red from the third byte","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"16-bit signed scaled attributes read whole numbers of both signs","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"8-bit unsigned scaled attributes read whole numbers to 255","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"a 10_10_10_2 unsigned normalised attribute reads nought and one in each field","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"vertex","name":"a per instance attribute with divisor 3 steps every third instance","tier":"exact","result":"pass","detail":""} {"type":"note","text":"vertex fixed attribute: an unbound attribute reads 00000000 00000000 00000000 3f800000 (0 0 0 3f800000 is OpenGL's default, all nought is a constant of nought)"} {"type":"case","suite":"instance","name":"graphics device opens","tier":"none","result":"pass","detail":""} {"type":"case","suite":"instance","name":"the drawing shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"instance","name":"an instanced array draw uses the uniform value set before it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"instance","name":"a draw after an instanced array draw adds no instances of its own","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"instance","name":"each subsequent instanced array draw lands as the next instance","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"geometry","name":"graphics device opens","tier":"none","result":"pass","detail":""} {"type":"case","suite":"geometry","name":"the geometry and tessellation shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"geometry","name":"a geometry shader turns each of four points into its 8 by 8 square","tier":"exact","result":"fail","detail":"256 pixels wrong where something is drawn, 0 where nothing is; first at (12,12) is 00000000","image":"images/geometry/a-geometry-shader-turns-each-of-four-points-into-its-8-by-8-square.pam","expected":"images/geometry/a-geometry-shader-turns-each-of-four-points-into-its-8-by-8-square-expected.pam","diff":"images/geometry/a-geometry-shader-turns-each-of-four-points-into-its-8-by-8-square-diff.pam"} {"type":"case","suite":"geometry","name":"a point the geometry shader emits nothing for draws nothing","tier":"exact","result":"fail","detail":"128 pixels wrong where something is drawn, 0 where nothing is; first at (12,12) is 00000000","image":"images/geometry/a-point-the-geometry-shader-emits-nothing-for-draws-nothing.pam","expected":"images/geometry/a-point-the-geometry-shader-emits-nothing-for-draws-nothing-expected.pam","diff":"images/geometry/a-point-the-geometry-shader-emits-nothing-for-draws-nothing-diff.pam"} {"type":"case","suite":"geometry","name":"a patch tessellated at level 4 covers its rectangle, and says 4","tier":"exact","result":"fail","detail":"2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000","image":"images/geometry/a-patch-tessellated-at-level-4-covers-its-rectangle-and-says-4.pam","expected":"images/geometry/a-patch-tessellated-at-level-4-covers-its-rectangle-and-says-4-expected.pam","diff":"images/geometry/a-patch-tessellated-at-level-4-covers-its-rectangle-and-says-4-diff.pam"} {"type":"case","suite":"geometry","name":"the same patch at level 7 covers the same rectangle, and says 7","tier":"exact","result":"fail","detail":"2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000","image":"images/geometry/the-same-patch-at-level-7-covers-the-same-rectangle-and-says-7.pam","expected":"images/geometry/the-same-patch-at-level-7-covers-the-same-rectangle-and-says-7-expected.pam","diff":"images/geometry/the-same-patch-at-level-7-covers-the-same-rectangle-and-says-7-diff.pam"} {"type":"case","suite":"geometry","name":"a geometry shader with no early return squares the shown points only","tier":"exact","result":"fail","detail":"128 pixels wrong where something is drawn, 0 where nothing is; first at (12,12) is 00000000","image":"images/geometry/a-geometry-shader-with-no-early-return-squares-the-shown-points-only.pam","expected":"images/geometry/a-geometry-shader-with-no-early-return-squares-the-shown-points-only-expected.pam","diff":"images/geometry/a-geometry-shader-with-no-early-return-squares-the-shown-points-only-diff.pam"} {"type":"case","suite":"geometry","name":"a patch whose evaluation stage reads no level covers its rectangle at 4","tier":"exact","result":"fail","detail":"2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000","image":"images/geometry/a-patch-whose-evaluation-stage-reads-no-level-covers-its-rectangle-at-4.pam","expected":"images/geometry/a-patch-whose-evaluation-stage-reads-no-level-covers-its-rectangle-at-4-expected.pam","diff":"images/geometry/a-patch-whose-evaluation-stage-reads-no-level-covers-its-rectangle-at-4-diff.pam"} {"type":"case","suite":"geometry","name":"a patch with no control stage covers its rectangle at the list's level 5","tier":"exact","result":"fail","detail":"2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000","image":"images/geometry/a-patch-with-no-control-stage-covers-its-rectangle-at-the-list-s-level-5.pam","expected":"images/geometry/a-patch-with-no-control-stage-covers-its-rectangle-at-the-list-s-level-5-expected.pam","diff":"images/geometry/a-patch-with-no-control-stage-covers-its-rectangle-at-the-list-s-level-5-diff.pam"} {"type":"case","suite":"geometry","name":"an evaluation stage with no control stage reads the list's level 5","tier":"exact","result":"fail","detail":"2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000","image":"images/geometry/an-evaluation-stage-with-no-control-stage-reads-the-list-s-level-5.pam","expected":"images/geometry/an-evaluation-stage-with-no-control-stage-reads-the-list-s-level-5-expected.pam","diff":"images/geometry/an-evaluation-stage-with-no-control-stage-reads-the-list-s-level-5-diff.pam"} {"type":"case","suite":"geometry","name":"a positive first clip distance passed on by the evaluation stage clips nothing","tier":"exact","result":"fail","detail":"2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000","image":"images/geometry/a-positive-first-clip-distance-passed-on-by-the-evaluation-stage-clips-nothing.pam","expected":"images/geometry/a-positive-first-clip-distance-passed-on-by-the-evaluation-stage-clips-nothing-expected.pam","diff":"images/geometry/a-positive-first-clip-distance-passed-on-by-the-evaluation-stage-clips-nothing-diff.pam"} {"type":"case","suite":"geometry","name":"a negative eighth clip distance passed on by the evaluation stage clips the patch","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"geometry","name":"a geometry stage's stores land beside the word the vertex stage reads in one buffer","tier":"exact","result":"fail","detail":"4096 of 4096 pixels wrong, the first 0x00000000 where the colour is 0xff2a6b19; 16 of 64 words wrong, the first, word 0, 0x5a000000 where 0xc0de0000 belongs"} {"type":"case","suite":"geometry","name":"the stage image and its descriptors are in place","tier":"none","result":"pass","detail":""} {"type":"case","suite":"geometry","name":"the fragment stage samples the texel an evaluation stage storing into its image left alone","tier":"exact","result":"fail","detail":"2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000","image":"images/geometry/the-fragment-stage-samples-the-texel-an-evaluation-stage-storing-into-its-image-left-alone.pam","expected":"images/geometry/the-fragment-stage-samples-the-texel-an-evaluation-stage-storing-into-its-image-left-alone-expected.pam","diff":"images/geometry/the-fragment-stage-samples-the-texel-an-evaluation-stage-storing-into-its-image-left-alone-diff.pam"} {"type":"case","suite":"geometry","name":"an evaluation stage's stores land in its image","tier":"exact","result":"fail","detail":"the texels hold 11 22 33 44, wanted a0 a1 a2 44"} {"type":"case","suite":"geometry","name":"a draw after a barrier fetches what the evaluation stage stored","tier":"exact","result":"fail","detail":"2448 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000","image":"images/geometry/a-draw-after-a-barrier-fetches-what-the-evaluation-stage-stored.pam","expected":"images/geometry/a-draw-after-a-barrier-fetches-what-the-evaluation-stage-stored-expected.pam","diff":"images/geometry/a-draw-after-a-barrier-fetches-what-the-evaluation-stage-stored-diff.pam"} {"type":"case","suite":"geometry","name":"the vertex stage's stores land in its image","tier":"exact","result":"fail","detail":"the texels hold 11 22 33 44, wanted b0 b1 b2 b3"} {"type":"case","suite":"xfb","name":"graphics device opens","tier":"none","result":"pass","detail":""} {"type":"case","suite":"xfb","name":"the shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"xfb","name":"a capture of one triangle writes its three positions, 48 bytes","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"xfb","name":"the primitives written counter counts the captured triangle","tier":"exact","result":"fail","detail":""} {"type":"case","suite":"bindless","name":"graphics device opens with room for 256 textures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"bindless","name":"the bindless sampling shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"bindless","name":"256 one-texel textures, their descriptors and handles are in place","tier":"none","result":"pass","detail":""} {"type":"case","suite":"bindless","name":"a handle index below 128 samples its own texture","tier":"exact","result":"fail","detail":"512 of 512 pixels wrong; column 0 holds 00000000, texture -1's texel (-1: none of the 256)"} {"type":"case","suite":"bindless","name":"a handle index from 128 to 255 samples its own texture","tier":"exact","result":"fail","detail":"512 of 512 pixels wrong; column 128 holds 00000000, texture -1's texel (-1: none of the 256)"} {"type":"case","suite":"bindless","name":"a handle at a dynamic index to a four sample texture fetches the sample it names","tier":"exact","result":"fail","detail":"16 of 16 fetches wrong; handle 0, sample 0 read 0x0, wanted 0x100 (0x1nn is the first image, 0x2nn the second, nn the sample)"} {"type":"case","suite":"astc","name":"graphics device opens with room for the blocks","tier":"none","result":"pass","detail":""} {"type":"case","suite":"astc","name":"the fetching shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a void extent block is its constant colour on every texel","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"4-bit weights 0 to 15 unquantize by bit replication","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"even 5-bit weights unquantize by bit replication","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"odd 5-bit weights unquantize by bit replication","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"weights coded with trits decode and unquantize","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"weights coded with quints decode and unquantize","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"endpoints coded with trits decode and unquantize","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"endpoints coded with quints decode and unquantize","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a two partition block puts each texel in its partition","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a three partition 6x6 block puts each texel in its partition","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a four partition block puts each texel in its partition","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a dual plane block weights one channel with the second plane","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"an HDR partition is the error colour and the LDR one after it decodes","tier":"exact","expected_from":"astcenc","result":"fail","detail":"hdrfirst 4x4: 11 of 16 texels wrong, worst channel 255 away; texel 0 is 00000000, the specification's ff00ffff","image":"images/astc/an-hdr-partition-is-the-error-colour-and-the-ldr-one-after-it-decodes.pam","expected":"images/astc/an-hdr-partition-is-the-error-colour-and-the-ldr-one-after-it-decodes-expected.pam","diff":"images/astc/an-hdr-partition-is-the-error-colour-and-the-ldr-one-after-it-decodes-diff.pam"} {"type":"case","suite":"astc","name":"an illegal block is the error colour","tier":"exact","expected_from":"astcenc","result":"fail","detail":"error 4x4: 16 of 16 texels wrong, worst channel 255 away; texel 0 is 00000000, the specification's ff00ffff","image":"images/astc/an-illegal-block-is-the-error-colour.pam","expected":"images/astc/an-illegal-block-is-the-error-colour-expected.pam","diff":"images/astc/an-illegal-block-is-the-error-colour-diff.pam"} {"type":"case","suite":"astc","name":"an 8x8 block infills a 2x4 weight grid","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a 12x12 block infills a 6x6 weight grid","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a 10x10 block infills a 6x10 weight grid, 114 of 1024 a texel","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a 10x10 block infills a 10x6 weight grid, the other way up","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a luminance base and offset clamp the second endpoint at 255","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"an RGBA base and negative offsets swap and blue contract the endpoints, alpha too","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a two partition 6x5 block is a small one, its coordinates doubled for the hash","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a last group of quints cut short reads its missing bits as nought","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a last group of trits cut short reads its missing bit as nought","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astc","name":"a block of a reserved mode is the error colour","tier":"exact","expected_from":"astcenc","result":"fail","detail":"reserved 10x10: 100 of 100 texels wrong, worst channel 255 away; texel 0 is 00000000, the specification's ff00ffff","image":"images/astc/a-block-of-a-reserved-mode-is-the-error-colour.pam","expected":"images/astc/a-block-of-a-reserved-mode-is-the-error-colour-expected.pam","diff":"images/astc/a-block-of-a-reserved-mode-is-the-error-colour-diff.pam"} {"type":"case","suite":"astc","name":"a block with over 96 bits of weights is the error colour","tier":"exact","expected_from":"astcenc","result":"fail","detail":"weightbits 4x4: 16 of 16 texels wrong, worst channel 255 away; texel 0 is 00000000, the specification's ff00ffff","image":"images/astc/a-block-with-over-96-bits-of-weights-is-the-error-colour.pam","expected":"images/astc/a-block-with-over-96-bits-of-weights-is-the-error-colour-expected.pam","diff":"images/astc/a-block-with-over-96-bits-of-weights-is-the-error-colour-diff.pam"} {"type":"case","suite":"astc","name":"a dual plane block of four partitions is the error colour","tier":"exact","expected_from":"astcenc","result":"fail","detail":"dual4 4x4: 16 of 16 texels wrong, worst channel 255 away; texel 0 is 00000000, the specification's ff00ffff","image":"images/astc/a-dual-plane-block-of-four-partitions-is-the-error-colour.pam","expected":"images/astc/a-dual-plane-block-of-four-partitions-is-the-error-colour-expected.pam","diff":"images/astc/a-dual-plane-block-of-four-partitions-is-the-error-colour-diff.pam"} {"type":"case","suite":"astcimage","name":"graphics device opens with room for the textures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"the fetching shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"a picture in 4x4 blocks decodes as the specification says, every texel","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"a picture in 6x6 blocks decodes as the specification says, every texel","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"a picture in 8x8 blocks decodes as the specification says, every texel","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"a picture in 12x12 blocks decodes as the specification says, every texel","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"a picture in 4x4 sRGB blocks decodes as the specification says, every texel","tier":"exact","expected_from":"spec","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"a picture in 8x8 sRGB blocks decodes as the specification says, every texel","tier":"exact","expected_from":"spec","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"a 2048x2048 texture of 4x4 blocks decodes all over, every 16th texel","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"a 2048x2048 texture of 8x8 blocks decodes all over, every 16th texel","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"astcimage","name":"the 2048x2048 texture of 4x4 blocks fetched 256 times over, each texel once","tier":"exact","expected_from":"astcenc","result":"pass","detail":""} {"type":"case","suite":"eac","name":"graphics device opens with room for the blocks","tier":"none","result":"pass","detail":""} {"type":"case","suite":"eac","name":"the fetching shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"eac","name":"a one-channel EAC block decodes every index and both clamps","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"eac","name":"a two-channel EAC texture decodes each channel from its own block","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"graphics device opens with room for the blocks","tier":"none","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"the fetching shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"an individual mode block reaches both clamps in its left subblock","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a flipped differential block takes its second base from the delta","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a T mode block paints its four colours, the distance clamped at both ends","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"an H mode block whose first base is the larger adds 1 to the distance index","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"an H mode block whose first base is the smaller keeps the distance index even","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a planar block interpolates three colours and clamps them","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a see-through punch-through block is transparent at index 2 and unmodified at index 0","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a see-through punch-through T block is transparent at index 2","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a punch-through planar block is opaque whatever its opaque bit says","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"an RGBA block takes its alpha from an 8-bit EAC block, clamped at both ends","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a block's pixel indices run down its columns, not along its rows","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"an H mode block whose two bases are the same adds 1 to the distance index","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"an H mode block orders its bases by red, then green, then blue","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a differential block whose second base is 31 0 0 stays differential","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a differential block whose second base is 0 31 31 stays differential","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a planar block's six bit colours repeat their top bits, 44 for 11 and not 45","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"a see-through punch-through H block is transparent at index 2","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"etc2","name":"an RGBA block whose alpha multiplier is 0 is its base alpha throughout","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"graphics device opens with room for the arrays","tier":"none","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"the array fetching shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"every layer of a six-layer BC4 array keeps its own 2x2 and 1x1 levels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"both layers of a BC4 array six texels tall keep their own blocks","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"the 2x8 second level of a 4x16 BC4 texture reads both of its blocks","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"graphics device opens with a target of floats","tier":"none","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"the fetching shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"a BC1 block of four colours decodes 255 0 0, 0 0 255, 170 0 85 and 85 0 170","tier":"exact","result":"fail","detail":"3 of 4 texels wrong; the first, (1, 0) is 0.200000003 0 0.866666675 1, expected 0 0 255 255 of 255"} {"type":"case","suite":"bcn","name":"a BC1 block of three colours decodes its midpoint as 127 and index 3 transparent","tier":"exact","result":"fail","detail":"1 of 2 texels wrong; the first, (2, 0) is 0.749019623 0 0 1, expected 127 0 127 255 of 255"} {"type":"case","suite":"bcn","name":"a BC1 block of four colours decodes its thirds as 176 25 96 and 96 11 176","tier":"exact","result":"fail","detail":"4 of 4 texels wrong; the first, (0, 0) is 1 0.13333334 0.0666666701 1, expected 255 36 16 255 of 255"} {"type":"case","suite":"bcn","name":"a BC1 block of three colours decodes the midpoint of 16 and 255 as 136","tier":"exact","result":"fail","detail":"1 of 2 texels wrong; the first, (2, 0) is 1 0.223529413 0.156862751 1, expected 136 18 136 255 of 255"} {"type":"case","suite":"bcn","name":"a BC2 block decodes alphas 15 and 8 as 255 and 136 and its colours as four","tier":"exact","result":"fail","detail":"3 of 3 texels wrong; the first, (0, 0) is 0 0 1 0.937011719, expected 0 0 255 255 of 255"} {"type":"case","suite":"bcn","name":"a BC3 block of eight alphas decodes 219 and 36","tier":"exact","result":"fail","detail":"2 of 2 texels wrong; the first, (0, 0) is -nan -nan -nan -nan, expected 255 0 0 219 of 255"} {"type":"case","suite":"bcn","name":"a BC3 block of six alphas decodes 48, 0 and 255","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"a BC3 block of eight alphas between 255 and 4 decodes 220 184 146 113 75 39","tier":"exact","result":"fail","detail":"5 of 6 texels wrong; the first, (0, 0) is 1 0 0 0.840332031, expected 255 0 0 220 of 255"} {"type":"case","suite":"bcn","name":"a BC3 block of six alphas between 4 and 255 decodes 51 98 161 208","tier":"exact","result":"fail","detail":"4 of 4 texels wrong; the first, (0, 0) is 1 0 0 0.17175293, expected 255 0 0 51 of 255"} {"type":"case","suite":"bcn","name":"a BC4 block decodes index 2 between 255 and 0 as 56355 of 65535","tier":"exact","result":"fail","detail":"1 of 2 texels wrong; the first, (0, 0) is 0.861753285 0 0 1, expected 56355 0 0 65535 of 65535"} {"type":"case","suite":"bcn","name":"a BC4 block of eight values between 255 and 4 decodes each in 257ths","tier":"exact","result":"fail","detail":"6 of 6 texels wrong; the first, (0, 0) is 0.846128047 0 0 1, expected 56499 0 0 65535 of 65535"} {"type":"case","suite":"bcn","name":"a BC4 block of six values between 4 and 255 decodes each in 257ths, then 0 and 1","tier":"exact","result":"fail","detail":"6 of 6 texels wrong; the first, (0, 0) is 0.197360188 0 0 1, expected 13076 0 0 65535 of 65535"} {"type":"case","suite":"bcn","name":"a signed BC4 block decodes index 2 as 23623 of 32767 and -128 as -1","tier":"exact","result":"fail","detail":"1 of 2 texels wrong; the first, (0, 0) is 0.719473839 0 0 1, expected 23623 0 0 32767 of 32767"} {"type":"case","suite":"bcn","name":"a BC5 block decodes red and green each from its own half","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"a BC6H mode 11 block decodes 0, 65504 and 2.935546875 as halves","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"a signed BC6H block decodes -65504 and 65504","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"a BC6H block of a reserved mode decodes black","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"a BC7 mode 6 block decodes 255 1 1, 1 255 1 and 120 136 1","tier":"exact","result":"fail","detail":"1 of 3 texels wrong; the first, (2, 0) is 0.455078125 0.548339844 0.00392150879 1, expected 120 136 1 255 of 255"} {"type":"case","suite":"bcn","name":"a BC7 mode 5 block with rotation 1 swaps alpha and red","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"bcn","name":"a BC7 mode 1 block reads its two subsets around an anchor at texel 2","tier":"exact","result":"fail","detail":"8 of 8 texels wrong; the first, (0, 0) is 1 0 0 1, expected 255 2 2 255 of 255"} {"type":"case","suite":"bcn","name":"a BC7 block with no mode decodes transparent black","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"graphics device opens with room for the depth textures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"the fetching shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a Z16 texture the processor wrote samples to its depth","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a ZF32 texture the processor wrote samples to its depth","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a Z24S8 texture the processor wrote samples to its depth","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a Z24S8 texture the processor wrote takes its depth from the top 24 bits","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a Z24S8 texture the processor wrote samples its stencil from the low byte","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a ZF32_X24S8 texture the processor wrote samples its depth from the float","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a ZF32_X24S8 texture the processor wrote samples its stencil from the next word","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a Z24S8 target cleared to 0.75 over 0x5a holds 0xbfffff5a in memory","tier":"exact","result":"pass","detail":""} {"type":"note","text":"zeta a Z24X8 target cleared to 0.75 holds 0xbfffff above its low byte: the bits outside 0xffffff00 hold 0x00000000"} {"type":"case","suite":"zeta","name":"a Z24X8 target cleared to 0.75 holds 0xbfffff above its low byte","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a Z16 target cleared to 0.75 holds 0xbfff in memory","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a ZF32 target cleared to 0.75 holds its float in memory","tier":"exact","result":"pass","detail":""} {"type":"note","text":"zeta a ZF32_X24S8 target cleared to 0.75 over 0x5a holds the float, then 0x5a: the bits of the second word outside 0x000000ff hold 0x00000000"} {"type":"case","suite":"zeta","name":"a ZF32_X24S8 target cleared to 0.75 over 0x5a holds the float, then 0x5a","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"an S8 target cleared to 0x5a holds 0x5a in memory","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"each layer of a three layer ZF32 target keeps its own clear","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"zeta","name":"a three layer Z24S8 target cleared a layer at a time samples each layer's depth","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"graphics device opens with room for the textures","tier":"none","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"the folding shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"a block linear R8 texture the processor wrote samples as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"a block linear RG8 texture the processor wrote samples as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"a block linear RGBA8 texture the processor wrote samples as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"a block linear RGBA16 texture the processor wrote samples as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"a block linear RGBA32 texture the processor wrote samples as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"one gob tall blocks sample as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"two gob tall blocks sample as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"four gob tall blocks sample as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"eight gob tall blocks sample as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"thirty two gob tall blocks sample as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"a 37 by 23 texture that ends inside a gob samples as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"swizzle","name":"a 4 MiB texture the processor wrote uploads and samples as written","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texel","name":"graphics device opens","tier":"none","result":"pass","detail":""} {"type":"case","suite":"texel","name":"the buffer texture shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"texel","name":"a buffer texture 0 bytes into an aligned region fetches its own texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texel","name":"a buffer texture 4 bytes into an aligned region fetches its own texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texel","name":"a buffer texture 20 bytes into an aligned region fetches its own texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texel","name":"a buffer texture 36 bytes into an aligned region fetches its own texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"texel","name":"a buffer texture 68 bytes into an aligned region fetches its own texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stream","name":"graphics device opens with room for the uniform buffers","tier":"none","result":"pass","detail":""} {"type":"case","suite":"stream","name":"the drawing shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"stream","name":"4096 draws each see their own 4 KiB uniform buffer","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"stream","name":"1024 draws each see their own 64 KiB uniform buffer","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fill","name":"graphics device opens with a 512 by 512 depth target","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fill","name":"the flat shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fill","name":"one depth tested quad lands first, paying for the first use","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fill","name":"128 full target quads with colour alone land in order","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fill","name":"128 full target quads, each depth tested and written, land in order","tier":"exact","result":"pass","detail":""} {"type":"note","text":"journal: launch 2 resumes the run; the program ended inside ring case \"4096 indexed draws that each take new descriptors all land\": that case is skipped as crashed and goes on the crash list, and step ring runs again from its start"} {"type":"case","suite":"ring","name":"graphics device opens with room for 4096 uniform buffers","tier":"none","result":"pass","detail":""} {"type":"case","suite":"ring","name":"the shaders that read 32 textures each load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"ring","name":"the texture, the vertices, the indices and the buffers are in place","tier":"none","result":"pass","detail":""} {"type":"case","suite":"ring","name":"4096 indexed draws that each take new descriptors all land","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"occlusion","name":"graphics device opens with room for 320 reports","tier":"none","result":"pass","detail":""} {"type":"case","suite":"occlusion","name":"the drawing shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"occlusion","name":"the reports have somewhere to live","tier":"none","result":"pass","detail":""} {"type":"case","suite":"occlusion","name":"320 quads counted one by one are all drawn","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"occlusion","name":"320 quads counted one by one pass 64 samples each","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"occlusion","name":"320 cells cleared one by one between reports are cleared","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"graphics device opens with room for a texture","tier":"none","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"the drawing shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"the texture, its descriptors and the uniform colour are in place","tier":"none","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"a draw texture copies its texture onto its rectangle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"a draw after a draw texture binds the pipeline the draw before it bound","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"a draw with another pipeline after a draw texture sets its own viewport","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"a draw texture blends with the blend state bound","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"a draw texture writes only the channels the write mask opens","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"the alpha test rejects a draw texture's texels, and passes them flipped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"a draw texture from left of its texture clamps through a clamping sampler","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"drawtex","name":"a draw texture from left of its texture wraps through a repeating sampler","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"graphics device opens with a 64 by 320 target","tier":"none","result":"pass","detail":""} {"type":"case","suite":"query","name":"the flat shaders load","tier":"none","result":"pass","detail":""} {"type":"case","suite":"query","name":"a 32 by 300 pixel quad passes 9600 samples","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"a second quad of 1600 pixels adds to the count, 11200","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"a reset after a draw leaves a count of nought","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"render enable FALSE skips the draw","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"render enable TRUE draws","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_EQUAL draws over two equal values whose timestamps differ","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_NOT_EQUAL skips the same two values","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_EQUAL skips values that differ in the low word","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_NOT_EQUAL draws over values that differ in the low word","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_EQUAL skips values that differ only in the high word","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_NOT_EQUAL draws over values that differ only in the high word","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_EQUAL draws after two reports of the same count in the same list","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_NOT_EQUAL skips after two reports of the same count","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_EQUAL skips after a report of 9600 and one of nought","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_NOT_EQUAL draws after a report of 9600 and one of nought","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_EQUAL draws after two equal reports from a list that finished before","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_NOT_EQUAL skips after two equal reports from a list before","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_EQUAL skips after 9600 and nought reported in a list before","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"IF_NOT_EQUAL draws after 9600 and nought reported in a list before","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"a full target clear under IF_EQUAL after 9600 and nought is skipped too","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"a full target clear under IF_NOT_EQUAL after 9600 and nought happens","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"a full target clear under IF_EQUAL over two values that differ is skipped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"query","name":"a full target clear under IF_EQUAL over two equal values happens","tier":"exact","result":"pass","detail":""} {"type":"note","text":"query: render enable CONDITIONAL over the value one, high word nought: not drawn"} {"type":"note","text":"query: render enable CONDITIONAL over the value 2^32, low word nought: not drawn"} {"type":"note","text":"query: render enable CONDITIONAL over a report of 9600 in the same list: not drawn"} {"type":"case","suite":"dma","name":"graphics device opens with a compute queue and room for 32 copies","tier":"none","result":"pass","detail":""} {"type":"case","suite":"dma","name":"the copy shader loads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"dma","name":"one copy lands first, paying for the first use","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"dma","name":"32 copies of words the processor wrote land whole","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"dma","name":"32 copies of words a dispatch wrote just before land whole","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"blit2d","name":"graphics device opens with both surfaces laid out block linear","tier":"none","result":"pass","detail":"a 128x32 source and 4 destinations of 64x16, blocks two gobs tall"} {"type":"case","suite":"blit2d","name":"blit2d_corner_half: half size from the corner origin, into a window cut mid-run","tier":"exact","result":"pass","detail":"fits Q1 A: raw MD5 84fd46bdbeba5e70f758996dd896cf84, all 189 right and nothing outside the window changed in both reads"} {"type":"case","suite":"blit2d","name":"blit2d_center_half: half size from the centre origin, into the same window","tier":"exact","result":"pass","detail":"fits Q1 A: raw MD5 1654028909d43464ff4556fbf1802371, all 189 right and nothing outside the window changed in both reads"} {"type":"case","suite":"blit2d","name":"blit2d_corner_2_3: two thirds size from the corner origin, 1.5 texels a pixel","tier":"exact","result":"pass","detail":"fits Q1 A, Q2 A: raw MD5 3ee33409edbf6bf600caa6435dccd6ea, all 189 right and nothing outside the window changed in both reads"} {"type":"case","suite":"blit2d","name":"blit2d_center_2_3: two thirds size from the centre origin, 1.5 texels a pixel","tier":"exact","result":"pass","detail":"fits Q1 A, Q2 A: raw MD5 6560d24df99ce3fb20477313332d5d18, all 189 right and nothing outside the window changed in both reads"} {"type":"note","text":"blit2d: the passing cases answer Q1 A, Q2 A"} {"type":"case","suite":"copy","name":"graphics device opens with room for the copies","tier":"none","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a picture copied to an image and back keeps every texel","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a copy from a buffer with FlipY writes the rows bottom up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a copy to a buffer with FlipY writes the rows bottom up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a copy from a buffer with FlipX writes each row right to left","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a copy to a buffer with FlipX writes each row right to left","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a copy from a buffer with FlipX and FlipY turns the picture around","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a copy to a buffer with rows 96 bytes apart leaves the 32 bytes between them as they were","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a copy from a buffer with rows 96 bytes apart reads each row from its own place","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"an 8 by 8 copy from (3, 5) to (6, 2) between two images writes that rectangle alone","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a copy from an R32 float image to an RGBA8 one keeps every byte, NaNs and denormals too","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a copy of four layers with FlipZ puts the last layer first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a blit from RGBA8 to BGRA8 swaps red and blue","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a blit from RGBA8 to RGB565 keeps nought and full in every channel","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a blit from RGBA8 to RGBA16F makes full channels one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a blit from RGBA16F to RGBA8 makes channels of one full","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a blit with FlipX and FlipY turns the picture around","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a blit to twice the size, nearest, repeats each texel over two by two pixels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"copy","name":"a blit between two sRGB images keeps the bytes","tier":"exact","result":"pass","detail":""} {"type":"note","text":"copy sRGB 80 80 80 ff blitted into RGBA8 (37 37 37 ff decoded, 80 80 80 ff kept): the first texel reads 37 37 37 ff"} {"type":"note","text":"copy RGBA16F of a quarter blitted into RGBA8 (3f truncated, 40 rounded): the first texel reads 40 40 40 ff"} {"type":"note","text":"copy the 2D engine's blend of ff 00 00 80 over 00 00 ff ff: the first texel reads ff 00 00 80"} {"type":"note","text":"journal: launch 3 resumes the run; the program ended inside tex8k case \"the copy engine uploads the 8192x8192 BC1 texture's 8 levels, and a draw fetches level 7 alone\": that case is skipped as crashed and goes on the crash list, and step tex8k runs again from its start"} {"type":"note","text":"journal: launch 4 resumes the run; the program ended inside tex8k case \"the copy engine uploads the 8192x8192 BC7 texture's 14 levels, and a draw fetches level 7 alone\": that case is skipped as crashed and goes on the crash list, and step tex8k runs again from its start"} {"type":"note","text":"journal: launch 5 resumes the run; the program ended inside tex8k case \"the copy engine uploads the 16384x16384 BC1 texture, and a draw fetches 4096 texels across it\": that case is skipped as crashed and goes on the crash list, and step tex8k runs again from its start"} {"type":"note","text":"journal: launch 6 resumes the run; the program ended inside tex8k case \"an 8192x8192 RGBA16F target cleared and drawn reads right through memory at ten texels either side of its 256 MiB mark\": that case is skipped as crashed and goes on the crash list, and step tex8k runs again from its start"} {"type":"note","text":"journal: launch 7 resumes the run; the program ended inside tex8k case \"a BC1 volume of 1024x1024x513, past 512 Mi texels, samples its first block\": that case is skipped as crashed and goes on the crash list, and step tex8k runs again from its start"} {"type":"case","suite":"tex8k","name":"graphics device opens with room for the 8192x8192 RGBA8 texture","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the copy engine uploads the 8192x8192 RGBA8 texture's 8 levels, and a draw fetches level 7 alone","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"a draw fetches 4096 texels across level 0 of the 8192x8192 RGBA8 texture","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the same draw again over the 8192x8192 RGBA8 texture","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"64 frames each copy a 256x256 region of the 8192x8192 RGBA8 texture and fetch it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"after the frames the 8192x8192 RGBA8 texture holds each frame's region and the upload elsewhere","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"a 256x256 region of the 8192x8192 RGBA8 texture copied out to a buffer holds its bytes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"graphics device opens with room for the 8192x8192 RGBA8 pitch linear texture","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the processor writes the 8192x8192 RGBA8 pitch linear texture, and a draw fetches 4096 texels across it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the same draw again over the 8192x8192 RGBA8 pitch linear texture","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"64 frames each write a 256x256 region of the 8192x8192 RGBA8 pitch linear texture and fetch it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"after the frames the 8192x8192 RGBA8 pitch linear texture holds each frame's region and the upload elsewhere","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"a 256x256 region of the 8192x8192 RGBA8 pitch linear texture copied out to a buffer holds its bytes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the processor writes a 48x48 square of the 8192x8192 RGBA8 pitch linear texture whose rows cross a page edge, and a draw fetch","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"graphics device opens with room for the 8192x8192 BC1 texture","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the copy engine uploads the 8192x8192 BC1 texture's 8 levels, and a draw fetches level 7 alone","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"tex8k","name":"a draw fetches 4096 texels across level 0 of the 8192x8192 BC1 texture","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"the same draw again over the 8192x8192 BC1 texture","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"64 frames each copy a 256x256 region of the 8192x8192 BC1 texture and fetch it","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"after the frames the 8192x8192 BC1 texture holds each frame's region and the upload elsewhere","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"a 256x256 region of the 8192x8192 BC1 texture copied out to a buffer holds its bytes","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"graphics device opens with room for the 8192x8192 BC7 texture","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the copy engine uploads the 8192x8192 BC7 texture's 14 levels, and a draw fetches level 7 alone","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"tex8k","name":"a draw fetches 4096 texels across level 0 of the 8192x8192 BC7 texture","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"the same draw again over the 8192x8192 BC7 texture","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"64 frames each copy a 256x256 region of the 8192x8192 BC7 texture and fetch it","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"after the frames the 8192x8192 BC7 texture holds each frame's region and the upload elsewhere","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"a 256x256 region of the 8192x8192 BC7 texture copied out to a buffer holds its bytes","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"the copy engine copies raw blocks across the end of level 3 and the start of level 4 of the 8192x8192 BC7 texture","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"the copy engine copies raw blocks into the 8192x8192 BC7 texture's mip tail, levels 8 to 13","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"graphics device opens with room for the 8192x8192 ASTC 4x4 texture","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the copy engine uploads the 8192x8192 ASTC 4x4 texture's 8 levels, and a draw fetches level 7 alone","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"a draw fetches 4096 texels across level 0 of the 8192x8192 ASTC 4x4 texture","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the same draw again over the 8192x8192 ASTC 4x4 texture","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"64 frames each copy a 256x256 region of the 8192x8192 ASTC 4x4 texture and fetch it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"after the frames the 8192x8192 ASTC 4x4 texture holds each frame's region and the upload elsewhere","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"a 256x256 region of the 8192x8192 ASTC 4x4 texture copied out to a buffer holds its bytes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"graphics device opens with room for the 8192x8192 ASTC 8x8 texture","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the copy engine uploads the 8192x8192 ASTC 8x8 texture's 8 levels, and a draw fetches level 7 alone","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"a draw fetches 4096 texels across level 0 of the 8192x8192 ASTC 8x8 texture","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the same draw again over the 8192x8192 ASTC 8x8 texture","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"64 frames each copy a 256x256 region of the 8192x8192 ASTC 8x8 texture and fetch it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"after the frames the 8192x8192 ASTC 8x8 texture holds each frame's region and the upload elsewhere","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"a 256x256 region of the 8192x8192 ASTC 8x8 texture copied out to a buffer holds its bytes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"graphics device opens with room for the 16384x16384 BC1 texture","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"the copy engine uploads the 16384x16384 BC1 texture, and a draw fetches 4096 texels across it","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"tex8k","name":"the same draw again over the 16384x16384 BC1 texture","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"a 256x256 region of the 16384x16384 BC1 texture copied out to a buffer holds its bytes","tier":"none","result":"skip","reason":"depends","detail":"the texture was not uploaded: the case that uploads it did not run or failed before its draw"} {"type":"case","suite":"tex8k","name":"graphics device opens with room for an 8192x8192 RGBA8 pitch linear texture written cold","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"after 32 frames with no upload the processor rewrites the 8192x8192 RGBA8 pitch linear texture, and a draw fetches it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"graphics device opens with room for an 8192x4096 RGBA16F target the processor reads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"an 8192x4096 RGBA16F target cleared and drawn reads right through memory at eight texels","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"graphics device opens with room for an 8192x8192 RGBA16F target the processor reads","tier":"none","result":"pass","detail":""} {"type":"case","suite":"tex8k","name":"an 8192x8192 RGBA16F target cleared and drawn reads right through memory at ten texels either side of its 256 MiB mark","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"tex8k","name":"a BC1 volume of 1024x1024x513, past 512 Mi texels, samples its first block","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"fs","name":"the memory card opens as a file system","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fs","name":"the card holds a 64 MiB file and 256 small ones to read","tier":"none","result":"pass","detail":""} {"type":"case","suite":"fs","name":"sequential reads of 512 bytes cover 4 MiB","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"sequential reads of 4 KiB cover 16 MiB","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"sequential reads of 64 KiB cover 64 MiB","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"sequential reads of 1 MiB cover 64 MiB","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"sequential reads of 16 MiB cover 64 MiB","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"4096 random 4 KiB reads at aligned offsets","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"4096 random 4 KiB reads at odd offsets","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"64 KiB reads walk the file backwards","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"4096 reads of the same 4 KiB","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"256 small files are opened, read and closed","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"a read that runs past the end returns only the bytes that are there","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"a read that starts at the end returns no bytes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"fs","name":"a read of no bytes returns no bytes","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 47.6 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 1.7, asked 2.7, woke 50.1, got 50.3, flag set 50.3, flag seen 50.3, unlocked 50.3"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 46.2 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 0.8, asks the tail 0.8, spinning 3.7, asked 4.5, woke 50.1, got 50.7, flag set 50.7, flag seen 50.7, unlocked 50.7"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.5, woke 10.8, flag set 10.8, flag seen 10.8"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 0.7, asked 1.2, woke 50.1, got 50.2, flag set 50.2, flag seen 50.2, unlocked 50.2"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 0.5, flag set 0.5, flag seen 0.5"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.0, other ran 0.4"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 8 resumes the run; the program ended inside vic case \"vic_passthrough: without the matrix, Y, U and V reach R, G and B as they are\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 44.6 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 2.9, asked 6.2, woke 50.2, got 50.7, flag set 50.7, flag seen 50.9, unlocked 50.9"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 46.3 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.9, asks the tail 1.9, spinning 5.2, asked 7.0, woke 50.3, got 53.1, flag set 53.1, flag seen 53.3, unlocked 53.6"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 11.1 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.7, woke 11.7, flag set 11.7, flag seen 11.8"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 0.7, asked 1.5, woke 50.2, got 51.1, flag set 51.1, flag seen 51.2, unlocked 51.3"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.2, flag seen 1.2, flag set 1.2"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.8, other ran 1.3"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 9 resumes the run; the program ended inside vic case \"vic_chroma_order: format 67 reads its chroma pair against format 68\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 48.3 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 2.0, asked 2.9, woke 50.2, got 51.1, flag set 51.1, flag seen 51.2, unlocked 51.4"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 47.7 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.1, asks the tail 1.1, spinning 4.2, asked 5.1, woke 50.3, got 52.7, flag set 52.7, flag seen 52.8, unlocked 52.9"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 3.2, woke 13.4, flag set 13.4, flag seen 13.4"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.6, asked 3.1, woke 50.1, got 51.5, flag set 51.5, flag seen 51.7, unlocked 51.7"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.3, flag set 1.3, flag seen 1.3"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.8, other ran 1.2"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 10 resumes the run; the program ended inside vic case \"vic_order_argb: A8R8G8B8 puts blue in the first byte\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 47.5 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 1.0, asked 3.1, woke 50.2, got 50.6, flag set 50.6, flag seen 50.7, unlocked 50.8"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 48.2 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.3, asks the tail 1.3, spinning 4.2, asked 5.1, woke 50.2, got 53.3, flag set 53.3, flag seen 53.4, unlocked 53.4"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.3 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 1.1, woke 11.3, flag set 11.3, flag seen 11.4"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.4, asked 2.6, woke 50.3, got 51.3, flag set 51.3, flag seen 51.4, unlocked 51.4"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.1, flag seen 1.1, flag set 1.1"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.9, other ran 1.3"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 11 resumes the run; the program ended inside vic case \"vic_order_x8: X8B8G8R8 fills its fourth byte\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 50.3 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 0.8, asked 1.7, woke 50.2, got 51.9, flag set 51.9, flag seen 52.0, unlocked 52.0"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 47.2 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.0, asks the tail 1.0, spinning 4.3, asked 5.3, woke 50.3, got 52.5, flag set 52.5, flag seen 52.6, unlocked 52.7"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.9, woke 11.0, flag set 11.0, flag seen 11.1"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.1, asked 2.5, woke 50.2, got 51.9, flag set 51.9, flag seen 52.0, unlocked 52.1"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.4, flag set 1.4, flag seen 1.4"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.8, other ran 1.3"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 12 resumes the run; the program ended inside vic case \"vic_matrix_601: the BT.601 matrix turns six colours into RGB\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 48.9 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 0.8, asked 1.8, woke 50.3, got 50.6, flag set 50.6, flag seen 50.7, unlocked 50.8"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 47.7 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 0.8, asks the tail 0.8, spinning 4.1, asked 4.9, woke 50.2, got 52.6, flag set 52.6, flag seen 52.6, unlocked 52.7"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.6, woke 10.8, flag set 10.8, flag seen 10.9"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 0.6, asked 1.3, woke 50.2, got 51.1, flag set 51.1, flag seen 51.2, unlocked 51.2"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 0.8, flag seen 0.8, flag set 0.8"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.6, other ran 1.1"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 13 resumes the run; the program ended inside vic case \"vic_matrix_shift: the matrix shift and the constant column, in their order\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 48.0 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 2.0, asked 3.6, woke 50.2, got 51.4, flag set 51.4, flag seen 51.6, unlocked 51.7"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 48.7 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.4, asks the tail 1.4, spinning 4.2, asked 5.5, woke 50.2, got 54.2, flag set 54.2, flag seen 54.3, unlocked 54.4"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.6, woke 10.8, flag set 10.8, flag seen 10.8"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.0, asked 2.1, woke 50.1, got 51.2, flag set 51.2, flag seen 51.3, unlocked 51.3"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.1, flag set 1.1, flag seen 1.1"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.8, other ran 1.2"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 14 resumes the run; the program ended inside vic case \"vic_soft_clamp: the soft clamp holds the matrix output to 64..940\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 46.5 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 1.3, asked 4.5, woke 50.2, got 51.0, flag set 51.0, flag seen 51.0, unlocked 51.1"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 43.0 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.2, asks the tail 1.2, spinning 5.1, asked 7.5, woke 50.2, got 50.6, flag set 50.6, flag seen 50.6, unlocked 50.6"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 1.1, woke 11.3, flag set 11.3, flag seen 11.3"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.0, asked 2.0, woke 50.2, got 52.3, flag set 52.3, flag seen 52.3, unlocked 52.4"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.1, flag set 1.1, flag seen 1.1"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.4, other ran 1.2"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 15 resumes the run; the program ended inside vic case \"vic_clamp_nomatrix: the soft clamp without the matrix\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 49.0 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 0.7, asked 1.7, woke 50.2, got 50.7, flag set 50.7, flag seen 50.7, unlocked 50.8"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 44.0 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.5, asks the tail 1.5, spinning 5.3, asked 6.6, woke 50.1, got 50.5, flag set 50.5, flag seen 50.6, unlocked 50.7"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 1.0, woke 11.2, flag set 11.2, flag seen 11.3"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.1, asked 2.3, woke 50.2, got 51.4, flag set 51.4, flag seen 51.6, unlocked 51.6"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.1, flag set 1.1, flag seen 1.1"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.7, other ran 1.2"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 16 resumes the run; the program ended inside vic case \"vic_planar_alpha: the source stream alpha fill takes the planar alpha\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 48.8 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 0.7, asked 2.2, woke 50.2, got 50.9, flag set 50.9, flag seen 51.0, unlocked 51.0"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 45.5 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.3, asks the tail 1.3, spinning 4.4, asked 6.1, woke 50.2, got 51.5, flag set 51.5, flag seen 51.6, unlocked 51.8"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.9, woke 11.1, flag set 11.1, flag seen 11.1"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.0, asked 1.8, woke 50.1, got 51.2, flag set 51.2, flag seen 51.4, unlocked 51.4"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 0.9, flag set 0.9, flag seen 0.9"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.7, other ran 1.3"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 17 resumes the run; the program ended inside vic case \"vic_alpha_opaque: the opaque alpha fill over a planar alpha below the top\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 46.7 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 2.3, asked 4.0, woke 50.3, got 50.5, flag set 50.5, flag seen 50.7, unlocked 50.9"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 47.0 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.3, asks the tail 1.3, spinning 5.2, asked 7.2, woke 50.2, got 54.1, flag set 54.1, flag seen 54.3, unlocked 54.3"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.3 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.5, woke 10.8, flag set 10.8, flag seen 10.9"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 0.6, asked 1.4, woke 50.2, got 52.3, flag set 52.3, flag seen 52.4, unlocked 52.4"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 0.9, flag set 0.9, flag seen 0.9"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.6, other ran 1.1"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 18 resumes the run; the program ended inside vic case \"vic_target_clip: a target rect inside the surface clips the output\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 48.4 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 0.8, asked 2.2, woke 50.2, got 50.5, flag set 50.5, flag seen 50.6, unlocked 50.6"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 49.3 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 0.9, asks the tail 0.9, spinning 4.2, asked 5.0, woke 50.3, got 54.3, flag set 54.3, flag seen 54.4, unlocked 54.5"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.8, woke 11.0, flag set 11.0, flag seen 11.1"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.0, asked 1.9, woke 50.3, got 51.9, flag set 51.9, flag seen 52.1, unlocked 52.2"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.0, flag set 1.0, flag seen 1.0"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.4, other ran 0.8"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 19 resumes the run; the program ended inside vic case \"vic_target_clip_matrix: the target rect clips the matrix's output too\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 48.0 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 2.1, asked 3.7, woke 50.2, got 51.5, flag set 51.6, flag seen 51.7, unlocked 51.8"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 47.7 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 0.7, asks the tail 0.7, spinning 3.8, asked 4.8, woke 50.3, got 52.5, flag set 52.5, flag seen 52.5, unlocked 52.6"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 1.2, woke 11.4, flag set 11.4, flag seen 11.5"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.3, asked 2.5, woke 50.2, got 50.9, flag set 50.9, flag seen 51.0, unlocked 51.1"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.3, flag set 1.3, flag seen 1.3"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.8, other ran 1.3"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 20 resumes the run; the program ended inside vic case \"vic_target_odd: a target rect that starts at column 5\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 48.0 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 1.2, asked 2.9, woke 50.2, got 50.8, flag set 50.8, flag seen 50.9, unlocked 51.0"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 48.0 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.5, asks the tail 1.5, spinning 5.3, asked 6.3, woke 50.2, got 54.3, flag set 54.3, flag seen 54.4, unlocked 54.4"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.6, woke 10.8, flag set 10.8, flag seen 10.8"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 0.8, asked 2.0, woke 50.2, got 52.3, flag set 52.3, flag seen 52.4, unlocked 52.5"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.1, flag set 1.1, flag seen 1.1"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.6, other ran 1.0"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 21 resumes the run; the program ended inside vic case \"vic_background: with no slot the target rect takes the background colour\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 49.3 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 1.5, asked 2.7, woke 50.1, got 51.9, flag set 51.9, flag seen 52.1, unlocked 52.2"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 45.7 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.5, asks the tail 1.5, spinning 5.6, asked 7.3, woke 50.2, got 53.0, flag set 53.0, flag seen 53.0, unlocked 53.1"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.2 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 0.8, woke 11.0, flag set 11.0, flag seen 11.0"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.4, asked 2.2, woke 50.3, got 51.2, flag set 51.2, flag seen 51.3, unlocked 51.3"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 0.8, flag set 0.8, flag seen 0.8"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 1.0, other ran 1.4"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 22 resumes the run; the program ended inside vic case \"vic_background_ring: the background colour around a smaller destination rect\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 48.2 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 1.6, asked 3.2, woke 50.2, got 51.2, flag set 51.2, flag seen 51.4, unlocked 51.5"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 48.5 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 0.9, asks the tail 0.9, spinning 4.6, asked 6.1, woke 50.5, got 54.5, flag set 54.5, flag seen 54.6, unlocked 54.7"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.3 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 1.0, woke 11.3, flag set 11.3, flag seen 11.4"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.2, asked 2.2, woke 50.2, got 52.3, flag set 52.3, flag seen 52.3, unlocked 52.4"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.3, flag set 1.3, flag seen 1.3"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 0.8, other ran 1.3"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 23 resumes the run; the program ended inside vic case \"vic_source_crop: a source rect that starts at column 8\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 48.5 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 1.3, asked 2.3, woke 50.5, got 50.8, flag set 50.8, flag seen 50.9, unlocked 51.0"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 44.9 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 1.0, asks the tail 1.0, spinning 4.8, asked 5.7, woke 50.2, got 50.6, flag set 50.6, flag seen 50.7, unlocked 50.7"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.3 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 2.8, woke 13.0, flag set 13.0, flag seen 13.1"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 2.3, asked 3.7, woke 50.2, got 52.5, flag set 52.5, flag seen 52.5, unlocked 52.6"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.4, flag set 1.4, flag seen 1.4"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 1.1, other ran 1.7"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"note","text":"journal: launch 24 resumes the run; the program ended inside vic case \"vic_two_slots: two slots over each other with blending off\": that case is skipped as crashed and goes on the crash list, and step vic runs again from its start"} {"type":"case","suite":"sched","name":"threads start on the core and at the priority asked","tier":"none","result":"pass","detail":"the main thread on core 0 at 44; threads of 50, 43 and 40 read cores 0, 1, 2 and priorities 50, 43, 40"} {"type":"case","suite":"sched","name":"the owner of a mutex runs at the priority of the thread waiting for it","tier":"position","result":"pass","detail":"the flag 49.7 ms after the thread of 44 asked, while the thread of 45 spun: the owner ran at 44; held 0.0, spinning 1.5, asked 2.5, woke 50.4, got 52.1, flag set 52.1, flag seen 52.3, unlocked 52.4"} {"type":"case","suite":"sched","name":"the inherited priority passes down a chain of owners","tier":"position","result":"pass","detail":"the flag 45.4 ms after the thread of 44 asked, while the thread of 45 spun: the end of the chain ran at 44; tail held 0.0, held 0.8, asks the tail 0.9, spinning 4.0, asked 5.8, woke 50.1, got 51.2, flag set 51.2, flag seen 51.3, unlocked 51.4"} {"type":"case","suite":"sched","name":"a thread that becomes ready at a better priority takes the core from one spinning","tier":"position","result":"pass","detail":"the thread of 45 saw the flag 10.3 ms after the thread of 43 went to sleep for 10 ms; spinning 0.0, sleeps 1.6, woke 11.8, flag set 11.8, flag seen 11.9"} {"type":"case","suite":"sched","name":"the owner goes back to its own priority when it hands the mutex over","tier":"position","result":"pass","detail":"after the handover the thread of 45 ran before the owner, which reads 46; while the thread of 44 waited it read 44 (Q1 A, the priority it runs at); held 0.0, spinning 1.2, asked 2.4, woke 50.3, got 50.7, flag set 50.7, flag seen 50.9, unlocked 51.0"} {"type":"case","suite":"sched","name":"a thread behind a spinning one moves to an idle core of its mask","tier":"position","result":"pass","detail":"the thread of 46 ran on core 0 while the thread of 45 spun on core 1; spinning 0.0, ran 1.2, flag seen 1.2, flag set 1.2"} {"type":"case","suite":"sched","name":"svcSleepThread(0) leaves the thread on its core","tier":"position","result":"pass","detail":"with a thread of 50 waiting behind it on core 1 it was on core 1 (Q3 A), on core 1 after svcSleepThread(0), on 1 after svcSleepThread(-1); alone, svcSleepThread(-1) took it from core 1 to 1 (Q2 B); ran 0.0, done 1.0, other ran 1.4"} {"type":"note","text":"sched: the passing cases answer Q1 A, Q2 B, Q3 A"} {"type":"case","suite":"svc","name":"two events open and a handle is closed","tier":"none","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles sleeps out its timeout and answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization with no handles and a timeout of 0 answers TimedOut","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcWaitSynchronization of 65 handles answers OutOfRange","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a closed handle among two fails svcWaitSynchronization with InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the writable end of an event is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the current thread's pseudo-handle is no handle to wait on: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"of two signaled events, svcWaitSynchronization names the first","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"with only the second of two events signaled, svcWaitSynchronization names it","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a pending cancel meets a timeout of 0 with TimedOut and stays pending","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the pending cancel ends the next wait at once with Cancelled and is used up","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcResetSignal clears a signaled event and is InvalidState on a clear one","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcClearEvent of the writable end clears the event","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSignalEvent of the readable end answers InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"a handle closed once answers InvalidHandle when closed again","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"the process's pseudo-handle cannot be closed: InvalidHandle","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the heap is heap memory to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's code is to read and execute","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcQueryMemory says the program's read-only data is to read only","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcSetHeapSize of a size off the 2 MiB step answers InvalidSize","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"svcMapMemory locks its source with no permission and maps a stack view to read and write","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"svc","name":"what is written through svcMapMemory's view is in its source once unmapped","tier":"exact","result":"pass","detail":""} {"type":"case","suite":"binder","name":"a layer of its own opens and takes a window","tier":"none","result":"pass","detail":"layer 2, binder 2 (the program's window is binder 1)"} {"type":"case","suite":"binder","name":"a request for nought, before any frame","tier":"exact","result":"pass","detail":"the status alone (Q1 A); reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after three frames, eight asked for","tier":"exact","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"case","suite":"binder","name":"the history after ten frames comes newest first, eight at most","tier":"position","result":"pass","detail":"the status alone (Q1 A), no frames to count or order; reply: payload 4 bytes at 16, objects 0 at 20: 00000000"} {"type":"note","text":"binder: the passing cases answer Q1 A"} {"type":"case","suite":"vic","name":"the video compositor opens and maps its buffers","tier":"none","result":"pass","detail":"syncpoint 20, buffer at 0x10000000"} {"type":"case","suite":"vic","name":"vic_passthrough: without the matrix, Y, U and V reach R, G and B as they are","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_chroma_order: format 67 reads its chroma pair against format 68","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_order_argb: A8R8G8B8 puts blue in the first byte","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_order_x8: X8B8G8R8 fills its fourth byte","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_matrix_601: the BT.601 matrix turns six colours into RGB","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_matrix_shift: the matrix shift and the constant column, in their order","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_soft_clamp: the soft clamp holds the matrix output to 64..940","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_clamp_nomatrix: the soft clamp without the matrix","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_alpha_opaque: the opaque alpha fill over a planar alpha below the top","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_planar_alpha: the source stream alpha fill takes the planar alpha","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_target_clip: a target rect inside the surface clips the output","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_target_clip_matrix: the target rect clips the matrix's output too","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_target_odd: a target rect that starts at column 5","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_background: with no slot the target rect takes the background colour","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_background_ring: the background colour around a smaller destination rect","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_source_crop: a source rect that starts at column 8","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"} {"type":"case","suite":"vic","name":"vic_two_slots: two slots over each other with blending off","tier":"none","result":"skip","reason":"crashed","detail":"the program ended inside it earlier in this run; it is on the crash list (sdmc:/edenprobe/crashes), and the mode word retry runs it in a later run"}