Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
4122094
feat(shader): resolve S# reads through nested descriptor tables
EagleBearerYS Oct 18, 2026
9200c3a
feat(shader): look up a Phi-merged record pointer to an S# or T#
EagleBearerYS Oct 18, 2026
f6fb8b6
fix(shader): accept a lane-mask word in a pointer-keyed record pointer
EagleBearerYS Oct 18, 2026
64b16cd
fix(shader): take lane-mask ANDs and a high-word Phi in a pointer-key…
EagleBearerYS Oct 18, 2026
2788b8f
fix(shader): skip lane-mask arms built from a waterfall's lane bit in…
EagleBearerYS Oct 21, 2026
f877d5e
docs(shader): list lane-mask arms and a merged high word for pointer-…
EagleBearerYS Oct 21, 2026
92200f9
Merge #7223's 87168157a2 into feat/shader-nested-sampler-tables
EagleBearerYS Oct 21, 2026
6c1371b
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Oct 21, 2026
e9d4626
Merge feat/shader-nested-sampler-tables into fix/shader-pointer-key-l…
EagleBearerYS Oct 21, 2026
92cede3
fix(shader): pair a pointer-keyed record pointer's two words by Phi edge
EagleBearerYS Oct 21, 2026
a7d1e62
docs(shader): note the edge-paired walk of a pointer-keyed record poi…
EagleBearerYS Oct 21, 2026
bd4d801
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Oct 21, 2026
8704f73
Merge feat/shader-nested-sampler-tables into fix/shader-pointer-key-l…
EagleBearerYS Oct 21, 2026
6681187
fix(shader): follow pointer hops after a pointer-keyed record pointer
EagleBearerYS Oct 21, 2026
0843cca
fix(shader): read a T# at a fixed offset of a pointer-loaded V# as a …
hugodearaujo Oct 21, 2026
c00cb0f
test(shader): read a T# at a fixed offset of a pointer-loaded V#
EagleBearerYS Oct 21, 2026
2228a7c
Merge #7223's carry into feat/shader-nested-sampler-tables
oneandonlydean Oct 22, 2026
6a72841
fix(shader): follow a conditional pointer chase through a V# behind a…
EagleBearerYS Oct 22, 2026
2a5db7a
Merge main into fix/shader-table-family-6191
EagleBearerYS Oct 22, 2026
2c1a650
fix(shader): keep one chase site per V# word pair
EagleBearerYS Oct 22, 2026
7ab0765
fix(shader): read a chased pointer's high word at its own offset
EagleBearerYS Oct 22, 2026
31db606
Merge #9457's head into fix/shader-pointer-chase-closure
EagleBearerYS Oct 22, 2026
7928543
Merge main into fix/shader-pointer-chase-closure
EagleBearerYS Oct 22, 2026
820dc40
Merge #9633's head into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 22, 2026
6db7b36
Merge main into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 22, 2026
b2d4afc
Merge main into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 22, 2026
4661f4b
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Oct 23, 2026
9162d9d
Merge #7395's 4661f4bab5 into fix/shader-pointer-key-lane-masks
EagleBearerYS Oct 23, 2026
7f3a25e
Merge #8939's 9162d9df8f into fix/shader-table-family-6191
EagleBearerYS Oct 23, 2026
6b64604
Merge #9457's 7f3a25e0cb into fix/shader-pointer-chase-closure
EagleBearerYS Oct 23, 2026
8abb8a4
Merge #9633's 6b64604048 into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 23, 2026
9e50a74
fix(shader): refuse a pointer-keyed record arm whose two words are bo…
EagleBearerYS Oct 24, 2026
319fa1f
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Oct 24, 2026
0858667
Merge #7395's main merge into fix/shader-pointer-key-lane-masks
EagleBearerYS Oct 24, 2026
dc18bf7
Merge #8939's main merge into fix/shader-table-family-6191
EagleBearerYS Oct 24, 2026
5b6c96f
Merge #9457's main merge into fix/shader-pointer-chase-closure
EagleBearerYS Oct 24, 2026
a36e95b
Merge #9633's main merge into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 24, 2026
2525821
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Oct 24, 2026
72f48b7
Merge #7395's main merge into fix/shader-pointer-chase-closure
EagleBearerYS Oct 24, 2026
7bcb8f4
Merge #9633's main merge into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 24, 2026
960abd8
Merge #7395's main merge into fix/shader-table-family-6191
EagleBearerYS Oct 24, 2026
232a8e4
Merge #7395's main merge into fix/shader-pointer-key-lane-masks
EagleBearerYS Oct 24, 2026
71741a7
Merge #7223's merge of main into feat/shader-nested-sampler-tables
EagleBearerYS Oct 24, 2026
e2af03b
Merge #7395's merge of #7223 into fix/shader-pointer-key-lane-masks
EagleBearerYS Oct 24, 2026
0d4dab1
Merge #7395's merge of #7223 into fix/shader-table-family-6191
EagleBearerYS Oct 24, 2026
839cad8
Merge #7395's merge of #7223 into fix/shader-pointer-chase-closure
EagleBearerYS Oct 24, 2026
67053a3
Merge #9633's merge of #7223 into fix/shader-pointer-chase-split-word…
EagleBearerYS Oct 24, 2026
52ae654
fix(shader): give up a pointer chase whose chased V# has an unaligned…
EagleBearerYS Oct 24, 2026
7808540
Merge #7223's main merge into feat/shader-nested-sampler-tables
EagleBearerYS Oct 28, 2026
9343a17
test(agc): stop asserting that a shared nested-sampler V# is refused
EagleBearerYS Oct 28, 2026
29365ff
Merge #7395's merge into fix/shader-pointer-key-lane-masks
EagleBearerYS Oct 28, 2026
cfb72cb
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 28, 2026
4750c85
test(agc): stop asserting that two pointer-table shapes are refused
EagleBearerYS Oct 28, 2026
7c5094b
Merge #8939's merge into fix/shader-table-family-6191
EagleBearerYS Oct 28, 2026
62992d7
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 28, 2026
3731111
Merge #9457's merge into fix/shader-pointer-chase-closure
EagleBearerYS Oct 28, 2026
68d0464
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 28, 2026
5e0d923
Merge #9633's merge into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 28, 2026
fc0c03d
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 28, 2026
752620e
Merge main into fix/shader-pointer-key-lane-masks
EagleBearerYS Oct 28, 2026
822cb22
Merge #8939's main merge into fix/shader-table-family-6191
EagleBearerYS Oct 28, 2026
a0308d1
Merge #9457's main merge into fix/shader-pointer-chase-closure
EagleBearerYS Oct 28, 2026
7d6ab8a
Merge #9633's main merge into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 28, 2026
ca14648
test(agc): stop asserting that an S# with another consumer is refused
EagleBearerYS Oct 28, 2026
24d5cbb
Merge #7395's test-only commit into fix/shader-pointer-key-lane-masks
EagleBearerYS Oct 28, 2026
8862055
Merge #8939's merge into fix/shader-table-family-6191
EagleBearerYS Oct 28, 2026
b5a199b
Merge #9457's merge into fix/shader-pointer-chase-closure
EagleBearerYS Oct 28, 2026
ac64b90
Merge #9633's merge into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 28, 2026
ca5ba62
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Oct 28, 2026
408401b
Merge #7395's main merge into fix/shader-pointer-key-lane-masks
EagleBearerYS Oct 28, 2026
9a44f18
Merge #8939's merge into fix/shader-table-family-6191
EagleBearerYS Oct 28, 2026
037f579
Merge #9457's merge into fix/shader-pointer-chase-closure
EagleBearerYS Oct 28, 2026
32ba4ec
Merge #9633's merge into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Oct 28, 2026
6c13924
fix(shader): follow a pointer chase through a V# whose words the shad…
EagleBearerYS Oct 28, 2026
f469f4d
Merge #9633's edited V# chase into fix/shader-pointer-chase-split-wor…
EagleBearerYS Oct 28, 2026
d908758
test(shader): stop requiring nested tables with shared words to be re…
EagleBearerYS Oct 29, 2026
86d97d9
Merge feature/nested-resource-tables into feat/shader-nested-sampler-…
EagleBearerYS Oct 29, 2026
e04a705
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 29, 2026
238806d
Merge feat/shader-nested-sampler-tables into fix/shader-pointer-key-l…
EagleBearerYS Oct 29, 2026
3e2ebbb
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 29, 2026
4830d6e
Merge fix/shader-pointer-key-lane-masks into fix/shader-table-family-…
EagleBearerYS Oct 29, 2026
19bed84
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 29, 2026
185c62a
Merge fix/shader-table-family-6191 into fix/shader-pointer-chase-closure
EagleBearerYS Oct 29, 2026
b6c1149
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 29, 2026
ee8767f
test(shader): stop requiring a looped or five-step pointer chase to b…
EagleBearerYS Oct 29, 2026
85d0352
Merge fix/shader-pointer-chase-closure into fix/shader-pointer-chase-…
EagleBearerYS Oct 29, 2026
f6b5d58
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 29, 2026
c4f25ba
test(shader): stop requiring split high-word pointer chases to be ref…
EagleBearerYS Oct 29, 2026
4769d5a
test(shader): drop the refusal wording from the nested table summary …
EagleBearerYS Oct 29, 2026
ffa34ec
Merge feat/shader-nested-sampler-tables into fix/shader-pointer-key-l…
EagleBearerYS Oct 29, 2026
31bd0de
Merge fix/shader-pointer-key-lane-masks into fix/shader-table-family-…
EagleBearerYS Oct 29, 2026
a727b76
Merge fix/shader-table-family-6191 into fix/shader-pointer-chase-closure
EagleBearerYS Oct 29, 2026
42a4f38
Merge fix/shader-pointer-chase-closure into fix/shader-pointer-chase-…
EagleBearerYS Oct 29, 2026
eac5dce
docs(debt): name the pointer-chase refusals for an unaligned base and…
EagleBearerYS Oct 29, 2026
babbb0e
test(shader): round-trip a pointer chase whose high word has its own …
EagleBearerYS Oct 29, 2026
13c1955
Merge main into fix/shader-pointer-key-lane-masks
EagleBearerYS Oct 30, 2026
480c25a
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Oct 30, 2026
7a36893
Merge fix/shader-pointer-key-lane-masks into fix/shader-table-family-…
EagleBearerYS Oct 30, 2026
217e3d7
Merge fix/shader-table-family-6191 into fix/shader-pointer-chase-closure
EagleBearerYS Oct 30, 2026
da431b6
Merge fix/shader-pointer-chase-closure into fix/shader-pointer-chase-…
EagleBearerYS Oct 30, 2026
94a16af
Merge feature/nested-resource-tables into feat/shader-nested-sampler-…
EagleBearerYS Oct 30, 2026
f4781de
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Oct 30, 2026
967f0db
fix(shader): check the descriptor epoch for a lone nested sampler table
EagleBearerYS Oct 30, 2026
1f158eb
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Oct 31, 2026
4eaf19b
Merge main into fix/shader-table-family-6191
oneandonlydean Oct 31, 2026
43036c3
Merge main into fix/shader-pointer-chase-closure
oneandonlydean Nov 1, 2026
99d77ab
Merge main into fix/shader-pointer-chase-split-words-on-c2
oneandonlydean Nov 1, 2026
3d14230
Merge #7395's merge of main into fix/shader-pointer-key-lane-masks
EagleBearerYS Nov 1, 2026
5fdf20f
test(agc): put libc on PATH for both nested snapshot retry tests on W…
EagleBearerYS Nov 1, 2026
df80d9b
Merge #7395's 5fdf20fc3d into fix/shader-pointer-key-lane-masks
EagleBearerYS Nov 1, 2026
9c765e7
Merge fix/shader-pointer-key-lane-masks into fix/shader-table-family-…
EagleBearerYS Nov 1, 2026
49f6939
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Nov 1, 2026
3283b23
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Nov 2, 2026
87984fe
Merge #7395's main merge into fix/shader-pointer-key-lane-masks
EagleBearerYS Nov 2, 2026
04d09ee
Merge #8939's main merge into fix/shader-table-family-6191
EagleBearerYS Nov 2, 2026
bc6733b
Merge #9457's main merge into fix/shader-pointer-chase-closure
EagleBearerYS Nov 2, 2026
280d6d6
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Nov 2, 2026
d4ef08d
Merge #9633's main merge into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Nov 2, 2026
4699b25
fix(shader): give this PR's recompiler change its own disk cache form…
EagleBearerYS Nov 2, 2026
6cb37cc
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Nov 2, 2026
afb123a
Merge #7395's main merge into fix/shader-pointer-key-lane-masks
EagleBearerYS Nov 2, 2026
0a4f7cd
Merge #8939's main merge into fix/shader-table-family-6191
EagleBearerYS Nov 2, 2026
b9fab3f
Merge #9457's main merge into fix/shader-pointer-chase-closure
EagleBearerYS Nov 2, 2026
8fa3da8
Merge #9633's main merge into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Nov 2, 2026
58ebe4b
Merge main into fix/shader-pointer-key-lane-masks
EagleBearerYS Nov 3, 2026
63b5c09
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Nov 3, 2026
7aa70b1
Merge main into fix/shader-table-family-6191
EagleBearerYS Nov 3, 2026
ce7a09f
Merge main into fix/shader-pointer-chase-closure
EagleBearerYS Nov 3, 2026
13e0df8
Merge main into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Nov 3, 2026
4d820bd
Merge main into feat/shader-nested-sampler-tables
EagleBearerYS Nov 4, 2026
014d1e3
docs(shader): note that a nested child's T# skips registered views
EagleBearerYS Nov 4, 2026
9eab037
Merge #7395's e94fb3f29d into fix/shader-pointer-key-lane-masks
EagleBearerYS Nov 4, 2026
20cc916
Merge #8939's 4769d4a4b3 into fix/shader-table-family-6191
EagleBearerYS Nov 4, 2026
6089e58
Merge #9457's 6e403b4ad2 into fix/shader-pointer-chase-closure
EagleBearerYS Nov 4, 2026
18bc368
Merge #9633's f498717e9f into fix/shader-pointer-chase-split-words-on-c2
EagleBearerYS Nov 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions core/libs/prx/libSceAgcDriver/tests/ShaderDiskCache.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1899,6 +1899,35 @@ std::vector<PlanFixture> planFixtures() {
nestedCode.insert(nestedCode.begin() + 15u, 0x87148114u);
add("nested pointer image table", 64u, std::move(nestedCode), srtPointer, {{PlanSrtAddress, nestedSrt}, {PlanTableAddress, parents}, {PlanPointerAddress, nestedBuffers}, {PlanPayloadAddress, nestedImages}, {PlanMaterialAddress, {0u, 0u, 0u, 1u, 1u, 0u, 1u, 1u}}});
fixtures.back().groupId = true;
std::vector<std::uint32_t> samplerSrt(20u, 0u);
std::copy(nestedSrt.begin(), nestedSrt.end(), samplerSrt.begin());
place(samplerSrt, 12u, imageWords(PlanTextureAddress));
const std::vector<std::uint32_t> pointClamp{0x92u, 0x400000u, 0u, 0u};
const std::vector<std::uint32_t> pointWrap{0u, 0x400000u, 1u << 24u, 0u};
std::vector<std::uint32_t> nestedSamplers(32u, 0u);
place(nestedSamplers, 0u, pointWrap);
place(nestedSamplers, 4u, pointClamp);
place(nestedSamplers, 16u, pointClamp);
place(nestedSamplers, 20u, pointWrap);
std::vector<std::uint32_t> samplerCode{0xf4080100u, 0xfa000000u, 0xf4080200u, 0xfa000010u, 0xf4080700u, 0xfa000020u, 0xf40c0900u, 0xfa000030u,
0x8f108302u, 0xf4200444u, 0x20000000u, 0xf4200504u, 0x20000004u, 0x8f128411u, 0x8f148414u,
0xf4240b02u, 0x24000008u, 0xf4080616u, 0xfa0000a0u, 0xf428080cu, 0x28000000u,
0x360200bfu, 0x7e020d01u, 0x060202f0u, 0x100202ffu, 0x3c800000u, 0x060202f2u, 0x7e0402ffu, 0x3e000000u, 0xf09c0f08u,
0x01090401u, 0x7e120202u, 0x34101286u, 0x4a101100u, 0x34101084u, 0xe0781000u, 0x80070408u, 0xbf810000u,};
samplerCode.insert(samplerCode.begin() + 13u, 0x87118311u);
samplerCode.insert(samplerCode.begin() + 15u, 0x87148114u);
add("nested pointer sampler table", 64u, std::move(samplerCode), srtPointer, {{PlanSrtAddress, samplerSrt}, {PlanTableAddress, parents}, {PlanPointerAddress, nestedBuffers}, {PlanPayloadAddress, nestedSamplers}, {PlanMaterialAddress, {0u, 0u, 0u, 1u, 1u, 0u, 1u, 1u}}});
fixtures.back().groupId = true;
std::vector<std::uint32_t> pointees(128u, 0u);
place(pointees, 8u, pointWrap);
place(pointees, 72u, pointClamp);
std::vector<std::uint32_t> pointerCode{0xf4080100u, 0xfa000000u, 0xf4080200u, 0xfa000010u, 0xf4080700u, 0xfa000020u, 0xf40c0900u, 0xfa000030u,
0x8f108302u, 0xf4200444u, 0x20000000u, 0x8f128411u, 0xf4240b02u, 0x24000008u, 0xf4080816u, 0xfa000020u,
0x360200bfu, 0x7e020d01u, 0x060202f0u, 0x100202ffu, 0x3c800000u, 0x060202f2u, 0x7e0402ffu, 0x3e000000u, 0xf09c0f08u,
0x01090401u, 0x7e120202u, 0x34101286u, 0x4a101100u, 0x34101084u, 0xe0781000u, 0x80070408u, 0xbf810000u,};
pointerCode.insert(pointerCode.begin() + 14u, {0xbf068011u, 0xbf840002u, 0xbeac03ffu, 0x000000eau});
add("pointer phi sampler table", 64u, std::move(pointerCode), srtPointer, {{PlanSrtAddress, samplerSrt}, {PlanTableAddress, parents}, {PlanPointerAddress, pointees}, {PlanMaterialAddress, {1u, 0u, 0u, 0u, 1u, 0u, 0u, 0u}}});
fixtures.back().groupId = true;

PlanFixture fragment;
fragment.name = "fragment parameters";
Expand Down Expand Up @@ -2291,6 +2320,7 @@ void verifyMalformedPlans() {
rejects("an image table cycle", [](IrResourcePlan& plan) { plan.descriptorSources[1].tableColumn->heapSource = 1u; });
rejects("an image table parent that is not a buffer", [](IrResourcePlan& plan) { plan.descriptorSources[2].tableColumn = *plan.descriptorSources[1].tableColumn; });
rejects("an image table selection past the sources", [](IrResourcePlan& plan) { plan.descriptorSources[1].tableColumn->selection = 4u; });
rejects("a pointer-keyed table that is not indirect", [](IrResourcePlan& plan) { plan.descriptorSources[1].tableColumn->pointerKeyed = true; });
auto foreign = handBuiltPlan();
IrValue stray(IrOpcode::Void, IrType::U32, 99u);
foreign.srtReads[0].value = &stray;
Expand Down Expand Up @@ -2350,6 +2380,21 @@ void verifyPlanRoundTrip() {
const auto bufferBytes = encodedPlan(bufferTable);
IrResourcePlan bufferDecoded;
require(bufferBytes != handBytes && ShaderDiskCache::DecodePlan(bufferBytes, bufferDecoded) && samePlan(bufferTable, bufferDecoded), "the nested buffer column changed in a disk-cache round trip");
auto pointerTable = handBuiltPlan();
pointerTable.descriptorSources[1].tableColumn->indirect = true;
pointerTable.descriptorSources[1].tableColumn->pointerKeyed = true;
const auto pointerBytes = encodedPlan(pointerTable);
IrResourcePlan pointerDecoded;
require(pointerBytes != handBytes && ShaderDiskCache::DecodePlan(pointerBytes, pointerDecoded) && samePlan(pointerTable, pointerDecoded) && pointerDecoded.descriptorSources[1].tableColumn->pointerKeyed, "the pointer-keyed column changed in a disk-cache round trip");
auto chaseTable = handBuiltPlan();
auto& chaseColumn = *chaseTable.descriptorSources[1].tableColumn;
chaseColumn.indirect = true;
chaseColumn.pointerKeyed = true;
chaseColumn.pointerChaseDepth = 1u;
chaseColumn.pointerChases = {PointerChase{8u, 16u, 4u, 24u, 40u, {}}};
const auto chaseBytes = encodedPlan(chaseTable);
IrResourcePlan chaseDecoded;
require(chaseBytes != pointerBytes && ShaderDiskCache::DecodePlan(chaseBytes, chaseDecoded) && samePlan(chaseTable, chaseDecoded) && chaseDecoded.descriptorSources[1].tableColumn->pointerChases == chaseColumn.pointerChases, "a pointer chase whose high word has its own immediate changed in a disk-cache round trip");
PlanFixture handFixture;
handFixture.userData = {static_cast<std::uint32_t>(PlanSrtAddress), static_cast<std::uint32_t>(PlanSrtAddress >> 32u), 0u, 0u};
std::vector<std::uint32_t> handSrt(16, 0u);
Expand Down
48 changes: 34 additions & 14 deletions core/libs/prx/libSceAgcDriver/tests/ShaderMemory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3828,12 +3828,19 @@ void verifyRegionMerge(bool strided = false, bool benchmark = false) {
}


void verifyNestedSnapshotRetry() {
void verifyNestedSnapshotRetry(bool sampler) {
using namespace ShaderRecompiler;
constexpr std::uint32_t Parents = ImageTableAbi::MaxParentKeys / 2u + 1u;
constexpr std::uint32_t Children = ImageTableAbi::MaxNestedKeys / 2u + 1u;
std::vector<std::array<std::uint32_t, 8>> leaves(Children, TableT(reinterpret_cast<const void*>(0x100000000ull), TableFormat8888UNorm, TableType2D, 1u));
const auto child = TableV(leaves.data(), 32u, Children);
const std::uint32_t leafDwords = sampler ? 4u : 8u;
const auto texture = TableT(reinterpret_cast<const void*>(0x100000000ull), TableFormat8888UNorm, TableType2D, 1u);
const std::array<std::uint32_t, 4> pointClamp{0x92u, (4u * 256u) << 12u, 0u, 0u};
std::vector<std::uint32_t> leaves;
for (std::uint32_t leaf = 0; leaf < Children; ++leaf) {
if (sampler) leaves.insert(leaves.end(), pointClamp.begin(), pointClamp.end());
else leaves.insert(leaves.end(), texture.begin(), texture.end());
}
const auto child = TableV(leaves.data(), leafDwords * 4u, Children);
std::vector<std::uint64_t> parents(Parents, reinterpret_cast<std::uintptr_t>(child.data()));
const auto root = TableV(parents.data(), 8u, Parents);
std::vector<std::unique_ptr<IrValue>> values;
Expand All @@ -3859,17 +3866,25 @@ void verifyNestedSnapshotRetry() {
plan.descriptorSources[1].tableColumn = parent;
TableColumn nested;
nested.heapSource = 1u;
nested.stride = 32u;
nested.dwordCount = 8u;
nested.stride = leafDwords * 4u;
nested.dwordCount = leafDwords;
nested.sampler = sampler;
plan.descriptorSources[2].tableColumn = nested;
ImageResource image;
image.source = 2u;
image.table = 0u;
image.resourceClass = ImageResourceClass::Sampled;
image.dimension = RdnaImageDimension::Dim2D;
image.read = true;
plan.info.images.push_back(image);
plan.info.runtimeImageModes.push_back(ResourceMaterializer::RuntimeImageModes(image));
if (sampler) {
SamplerResource resource;
resource.source = 2u;
resource.table = 0u;
plan.info.samplers.push_back(resource);
} else {
ImageResource image;
image.source = 2u;
image.table = 0u;
image.resourceClass = ImageResourceClass::Sampled;
image.dimension = RdnaImageDimension::Dim2D;
image.read = true;
plan.info.images.push_back(image);
plan.info.runtimeImageModes.push_back(ResourceMaterializer::RuntimeImageModes(image));
}
struct Memory {
std::array<std::pair<std::uint64_t, std::size_t>, 3> ranges;
std::uint64_t epoch = 0;
Expand Down Expand Up @@ -11523,10 +11538,15 @@ int main(int argc, char** argv) {
return 0;
}
if (argc == 2 && std::string_view(argv[1]) == "--nested-snapshot-retry") {
verifyNestedSnapshotRetry();
verifyNestedSnapshotRetry(false);
std::cout << "Nested snapshot retry preserves parent and child coverage\n";
return 0;
}
if (argc == 2 && std::string_view(argv[1]) == "--nested-sampler-snapshot-retry") {
verifyNestedSnapshotRetry(true);
std::cout << "Nested sampler snapshot retry checks the descriptor epoch and preserves parent and child coverage\n";
return 0;
}
if (argc == 2 && std::string_view(argv[1]) == "--table-snapshot-reuse") {
verifyTableSnapshotReuse();
verifyTableStampRace();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,24 @@ if(BUILD_TESTING)
add_test(NAME agc_driver_nested_image_table COMMAND agc_driver_image_table_tests --nested)
add_test(NAME agc_driver_nested_image_table_large COMMAND agc_driver_image_table_tests --nested-large)
add_test(NAME agc_driver_nested_image_table_budget COMMAND agc_driver_image_table_tests --nested-budget)
set_tests_properties(agc_driver_nested_image_table agc_driver_nested_image_table_large agc_driver_nested_image_table_budget PROPERTIES ENVIRONMENT "ANYPS5_NO_SHADER_CACHE=1;APS5_NO_PIPELINE_JOURNAL=1" SKIP_RETURN_CODE 77 TIMEOUT 30 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
add_test(NAME agc_driver_nested_sampler_table COMMAND agc_driver_image_table_tests --nested-sampler)
add_test(NAME agc_driver_pointer_phi_sampler_table COMMAND agc_driver_image_table_tests --pointer-phi-sampler)
add_test(NAME agc_driver_pointer_phi_ballot_table COMMAND agc_driver_image_table_tests --pointer-phi-ballot)
add_test(NAME agc_driver_pointer_phi_copies_table COMMAND agc_driver_image_table_tests --pointer-phi-copies)
add_test(NAME agc_driver_pointer_phi_lane_and_table COMMAND agc_driver_image_table_tests --pointer-phi-lane-and)
add_test(NAME agc_driver_pointer_phi_high_table COMMAND agc_driver_image_table_tests --pointer-phi-high)
add_test(NAME agc_driver_pointer_phi_high_second_lane_table COMMAND agc_driver_image_table_tests --pointer-phi-high-second-lane)
add_test(NAME agc_driver_pointer_phi_lane_not_table COMMAND agc_driver_image_table_tests --pointer-phi-lane-not)
add_test(NAME agc_driver_pointer_vsharp_select_table COMMAND agc_driver_image_table_tests --pointer-vsharp-select)
add_test(NAME agc_driver_pointer_hop_table COMMAND agc_driver_image_table_tests --pointer-hop)
add_test(NAME agc_driver_pointer_chase_table COMMAND agc_driver_image_table_tests --pointer-chase)
add_test(NAME agc_driver_pointer_chase_split_table COMMAND agc_driver_image_table_tests --pointer-chase-split)
add_test(NAME agc_driver_pointer_chase_words_table COMMAND agc_driver_image_table_tests --pointer-chase-words)
add_test(NAME agc_driver_pointer_chase_edited_table COMMAND agc_driver_image_table_tests --pointer-chase-edited)
add_test(NAME agc_driver_pointer_vsharp_fixed_table COMMAND agc_driver_image_table_tests --pointer-vsharp-fixed)
add_test(NAME agc_driver_pointer_vsharp_fixed_offset_table COMMAND agc_driver_image_table_tests --pointer-vsharp-fixed-offset)
set_tests_properties(agc_driver_nested_image_table agc_driver_nested_image_table_large agc_driver_nested_image_table_budget agc_driver_nested_sampler_table agc_driver_pointer_phi_sampler_table agc_driver_pointer_phi_ballot_table agc_driver_pointer_phi_copies_table agc_driver_pointer_phi_lane_and_table agc_driver_pointer_phi_high_table agc_driver_pointer_phi_high_second_lane_table agc_driver_pointer_phi_lane_not_table agc_driver_pointer_vsharp_select_table agc_driver_pointer_hop_table agc_driver_pointer_chase_table agc_driver_pointer_chase_split_table agc_driver_pointer_chase_edited_table agc_driver_pointer_chase_words_table agc_driver_pointer_vsharp_fixed_table agc_driver_pointer_vsharp_fixed_offset_table PROPERTIES ENVIRONMENT "ANYPS5_NO_SHADER_CACHE=1;APS5_NO_PIPELINE_JOURNAL=1" SKIP_RETURN_CODE 77 TIMEOUT 30 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
if(WIN32)
set_tests_properties(agc_driver_nested_image_table agc_driver_nested_image_table_large agc_driver_nested_image_table_budget PROPERTIES ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$<TARGET_FILE_DIR:libc>")
set_tests_properties(agc_driver_nested_image_table agc_driver_nested_image_table_large agc_driver_nested_image_table_budget agc_driver_nested_sampler_table agc_driver_pointer_phi_sampler_table agc_driver_pointer_phi_ballot_table agc_driver_pointer_phi_copies_table agc_driver_pointer_phi_lane_and_table agc_driver_pointer_phi_high_table agc_driver_pointer_phi_high_second_lane_table agc_driver_pointer_phi_lane_not_table agc_driver_pointer_vsharp_select_table agc_driver_pointer_hop_table agc_driver_pointer_chase_table agc_driver_pointer_chase_split_table agc_driver_pointer_chase_edited_table agc_driver_pointer_chase_words_table agc_driver_pointer_vsharp_fixed_table agc_driver_pointer_vsharp_fixed_offset_table PROPERTIES ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$<TARGET_FILE_DIR:libc>")
endif()
endif()
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ if(BUILD_TESTING)
endif()
add_test(NAME agc_shader_nested_snapshot_retry COMMAND agc_shader_memory_tests --nested-snapshot-retry)
set_tests_properties(agc_shader_nested_snapshot_retry PROPERTIES TIMEOUT 20)
add_test(NAME agc_shader_nested_sampler_snapshot_retry COMMAND agc_shader_memory_tests --nested-sampler-snapshot-retry)
set_tests_properties(agc_shader_nested_sampler_snapshot_retry PROPERTIES TIMEOUT 20)
if(WIN32)
set_tests_properties(agc_shader_nested_snapshot_retry PROPERTIES ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$<TARGET_FILE_DIR:libc>")
set_tests_properties(agc_shader_nested_snapshot_retry agc_shader_nested_sampler_snapshot_retry PROPERTIES ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$<TARGET_FILE_DIR:libc>")
endif()
add_test(NAME agc_shader_table_snapshot_reuse COMMAND agc_shader_memory_tests --table-snapshot-reuse)
add_test(NAME agc_shader_region_merge COMMAND agc_shader_memory_tests --region-merge)
Expand Down
Loading
Loading