@forgeax/engine-rhi-debug 0.0.0-dev.8d955ade1c79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +178 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/__tests__/bootstrap-integration.test.d.ts +2 -0
- package/dist/__tests__/bootstrap-integration.test.d.ts.map +1 -0
- package/dist/__tests__/consumer-inventory.unit.test.d.ts +2 -0
- package/dist/__tests__/consumer-inventory.unit.test.d.ts.map +1 -0
- package/dist/__tests__/copy-src-usage-validity.dawn.test.d.ts +15 -0
- package/dist/__tests__/copy-src-usage-validity.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/coverage-invariant.test-d.d.ts +2 -0
- package/dist/__tests__/coverage-invariant.test-d.d.ts.map +1 -0
- package/dist/__tests__/coverage-invariant.unit.test.d.ts +2 -0
- package/dist/__tests__/coverage-invariant.unit.test.d.ts.map +1 -0
- package/dist/__tests__/e2e.browser.test.d.ts +2 -0
- package/dist/__tests__/e2e.browser.test.d.ts.map +1 -0
- package/dist/__tests__/error-code-narrowing.test-d.d.ts +2 -0
- package/dist/__tests__/error-code-narrowing.test-d.d.ts.map +1 -0
- package/dist/__tests__/errors-v7.test-d.d.ts +2 -0
- package/dist/__tests__/errors-v7.test-d.d.ts.map +1 -0
- package/dist/__tests__/errors-v7.unit.test.d.ts +2 -0
- package/dist/__tests__/errors-v7.unit.test.d.ts.map +1 -0
- package/dist/__tests__/errors.unit.test.d.ts +2 -0
- package/dist/__tests__/errors.unit.test.d.ts.map +1 -0
- package/dist/__tests__/event-semantics-coverage.unit.test.d.ts +2 -0
- package/dist/__tests__/event-semantics-coverage.unit.test.d.ts.map +1 -0
- package/dist/__tests__/format-info.unit.test.d.ts +2 -0
- package/dist/__tests__/format-info.unit.test.d.ts.map +1 -0
- package/dist/__tests__/frame-model-parity.test-d.d.ts +2 -0
- package/dist/__tests__/frame-model-parity.test-d.d.ts.map +1 -0
- package/dist/__tests__/frame-model-parity.unit.test.d.ts +2 -0
- package/dist/__tests__/frame-model-parity.unit.test.d.ts.map +1 -0
- package/dist/__tests__/guard-gates.test.d.ts +2 -0
- package/dist/__tests__/guard-gates.test.d.ts.map +1 -0
- package/dist/__tests__/public-surface.integration.test.d.ts +2 -0
- package/dist/__tests__/public-surface.integration.test.d.ts.map +1 -0
- package/dist/__tests__/readback-fault-cleanup.unit.test.d.ts +2 -0
- package/dist/__tests__/readback-fault-cleanup.unit.test.d.ts.map +1 -0
- package/dist/__tests__/readback-format-matrix.dawn.test.d.ts +2 -0
- package/dist/__tests__/readback-format-matrix.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/readback-format-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/readback-format-matrix.unit.test.d.ts.map +1 -0
- package/dist/__tests__/readback-matrix-fixture.d.ts +32 -0
- package/dist/__tests__/readback-matrix-fixture.d.ts.map +1 -0
- package/dist/__tests__/recorder-bootstrap.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-bootstrap.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-budget.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-budget.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-fail-fast.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-fail-fast.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-push-event.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-push-event.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-session.integration.test.d.ts +2 -0
- package/dist/__tests__/recorder-session.integration.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-session.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-session.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-steady-frame.dawn.test.d.ts +2 -0
- package/dist/__tests__/recorder-steady-frame.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/replay-fail-fast.unit.test.d.ts +2 -0
- package/dist/__tests__/replay-fail-fast.unit.test.d.ts.map +1 -0
- package/dist/__tests__/replay-session.dawn.test.d.ts +2 -0
- package/dist/__tests__/replay-session.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/replay-session.test-d.d.ts +2 -0
- package/dist/__tests__/replay-session.test-d.d.ts.map +1 -0
- package/dist/__tests__/replay-session.unit.test.d.ts +2 -0
- package/dist/__tests__/replay-session.unit.test.d.ts.map +1 -0
- package/dist/__tests__/resolve-texture-descriptor.unit.test.d.ts +2 -0
- package/dist/__tests__/resolve-texture-descriptor.unit.test.d.ts.map +1 -0
- package/dist/__tests__/resource-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/resource-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/rhi-debug-fresh-replay.dawn.test.d.ts +2 -0
- package/dist/__tests__/rhi-debug-fresh-replay.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/tape-index.unit.test.d.ts +2 -0
- package/dist/__tests__/tape-index.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tape-v7-invalid.unit.test.d.ts +2 -0
- package/dist/__tests__/tape-v7-invalid.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tape-v7-roundtrip.unit.test.d.ts +2 -0
- package/dist/__tests__/tape-v7-roundtrip.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tape-v7-version.unit.test.d.ts +2 -0
- package/dist/__tests__/tape-v7-version.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tree-shake.unit.test.d.ts +2 -0
- package/dist/__tests__/tree-shake.unit.test.d.ts.map +1 -0
- package/dist/__tests__/types.test.d.ts +2 -0
- package/dist/__tests__/types.test.d.ts.map +1 -0
- package/dist/browser.d.ts +45 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.mjs +83 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/errors.d.ts +85 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/frame-model.d.ts +158 -0
- package/dist/frame-model.d.ts.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +10415 -0
- package/dist/index.mjs.map +1 -0
- package/dist/protocol/codec.d.ts +6 -0
- package/dist/protocol/codec.d.ts.map +1 -0
- package/dist/protocol/event-semantics.d.ts +15 -0
- package/dist/protocol/event-semantics.d.ts.map +1 -0
- package/dist/protocol/tape-index.d.ts +30 -0
- package/dist/protocol/tape-index.d.ts.map +1 -0
- package/dist/protocol/types.d.ts +44 -0
- package/dist/protocol/types.d.ts.map +1 -0
- package/dist/protocol/validation.d.ts +7 -0
- package/dist/protocol/validation.d.ts.map +1 -0
- package/dist/readback.d.ts +156 -0
- package/dist/readback.d.ts.map +1 -0
- package/dist/recorder/assemble.d.ts +11 -0
- package/dist/recorder/assemble.d.ts.map +1 -0
- package/dist/recorder/closure.d.ts +39 -0
- package/dist/recorder/closure.d.ts.map +1 -0
- package/dist/recorder/core.d.ts +296 -0
- package/dist/recorder/core.d.ts.map +1 -0
- package/dist/recorder/device.d.ts +4 -0
- package/dist/recorder/device.d.ts.map +1 -0
- package/dist/recorder/encoder.d.ts +5 -0
- package/dist/recorder/encoder.d.ts.map +1 -0
- package/dist/recorder/lifecycle.d.ts +20 -0
- package/dist/recorder/lifecycle.d.ts.map +1 -0
- package/dist/recorder/pass.d.ts +6 -0
- package/dist/recorder/pass.d.ts.map +1 -0
- package/dist/recorder/proxy.d.ts +19 -0
- package/dist/recorder/proxy.d.ts.map +1 -0
- package/dist/recorder/queue.d.ts +4 -0
- package/dist/recorder/queue.d.ts.map +1 -0
- package/dist/recorder/resource-registry.d.ts +15 -0
- package/dist/recorder/resource-registry.d.ts.map +1 -0
- package/dist/recorder/session.d.ts +25 -0
- package/dist/recorder/session.d.ts.map +1 -0
- package/dist/recorder/shader.d.ts +3 -0
- package/dist/recorder/shader.d.ts.map +1 -0
- package/dist/recorder/snapshot.d.ts +10 -0
- package/dist/recorder/snapshot.d.ts.map +1 -0
- package/dist/recorder/wrap.d.ts +4 -0
- package/dist/recorder/wrap.d.ts.map +1 -0
- package/dist/recorder.d.ts +7 -0
- package/dist/recorder.d.ts.map +1 -0
- package/dist/replay/device-request.d.ts +8 -0
- package/dist/replay/device-request.d.ts.map +1 -0
- package/dist/replay/execute-support.d.ts +33 -0
- package/dist/replay/execute-support.d.ts.map +1 -0
- package/dist/replay/execute.d.ts +18 -0
- package/dist/replay/execute.d.ts.map +1 -0
- package/dist/replay/readback.d.ts +32 -0
- package/dist/replay/readback.d.ts.map +1 -0
- package/dist/replay/resources.d.ts +57 -0
- package/dist/replay/resources.d.ts.map +1 -0
- package/dist/replay/session.d.ts +49 -0
- package/dist/replay/session.d.ts.map +1 -0
- package/dist/replay/texture-format.d.ts +21 -0
- package/dist/replay/texture-format.d.ts.map +1 -0
- package/dist/texel-decode.d.ts +35 -0
- package/dist/texel-decode.d.ts.map +1 -0
- package/dist/texel-layout.d.ts +76 -0
- package/dist/texel-layout.d.ts.map +1 -0
- package/dist/types.d.ts +722 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +72 -0
- package/src/__tests__/bootstrap-integration.test.ts +268 -0
- package/src/__tests__/consumer-inventory.unit.test.ts +154 -0
- package/src/__tests__/copy-src-usage-validity.dawn.test.ts +117 -0
- package/src/__tests__/coverage-invariant.test-d.ts +115 -0
- package/src/__tests__/coverage-invariant.unit.test.ts +45 -0
- package/src/__tests__/e2e.browser.test.ts +239 -0
- package/src/__tests__/error-code-narrowing.test-d.ts +32 -0
- package/src/__tests__/errors-v7.test-d.ts +19 -0
- package/src/__tests__/errors-v7.unit.test.ts +15 -0
- package/src/__tests__/errors.unit.test.ts +83 -0
- package/src/__tests__/event-semantics-coverage.unit.test.ts +22 -0
- package/src/__tests__/format-info.unit.test.ts +85 -0
- package/src/__tests__/frame-model-parity.test-d.ts +20 -0
- package/src/__tests__/frame-model-parity.unit.test.ts +285 -0
- package/src/__tests__/guard-gates.test.ts +317 -0
- package/src/__tests__/public-surface.integration.test.ts +38 -0
- package/src/__tests__/readback-fault-cleanup.unit.test.ts +66 -0
- package/src/__tests__/readback-format-matrix.dawn.test.ts +378 -0
- package/src/__tests__/readback-format-matrix.unit.test.ts +120 -0
- package/src/__tests__/readback-matrix-fixture.ts +20 -0
- package/src/__tests__/recorder-bootstrap.unit.test.ts +302 -0
- package/src/__tests__/recorder-budget.unit.test.ts +42 -0
- package/src/__tests__/recorder-fail-fast.unit.test.ts +434 -0
- package/src/__tests__/recorder-lifecycle.unit.test.ts +42 -0
- package/src/__tests__/recorder-push-event.unit.test.ts +573 -0
- package/src/__tests__/recorder-session.integration.test.ts +32 -0
- package/src/__tests__/recorder-session.unit.test.ts +63 -0
- package/src/__tests__/recorder-steady-frame.dawn.test.ts +52 -0
- package/src/__tests__/replay-fail-fast.unit.test.ts +155 -0
- package/src/__tests__/replay-session.dawn.test.ts +220 -0
- package/src/__tests__/replay-session.test-d.ts +27 -0
- package/src/__tests__/replay-session.unit.test.ts +171 -0
- package/src/__tests__/resolve-texture-descriptor.unit.test.ts +144 -0
- package/src/__tests__/resource-lifecycle.unit.test.ts +114 -0
- package/src/__tests__/rhi-debug-fresh-replay.dawn.test.ts +178 -0
- package/src/__tests__/tape-index.unit.test.ts +56 -0
- package/src/__tests__/tape-v7-invalid.unit.test.ts +45 -0
- package/src/__tests__/tape-v7-roundtrip.unit.test.ts +66 -0
- package/src/__tests__/tape-v7-version.unit.test.ts +13 -0
- package/src/__tests__/tree-shake.unit.test.ts +151 -0
- package/src/__tests__/types.test.ts +257 -0
- package/src/browser.ts +146 -0
- package/src/errors.ts +173 -0
- package/src/frame-model.ts +753 -0
- package/src/index.ts +92 -0
- package/src/pako.d.ts +8 -0
- package/src/protocol/codec.ts +220 -0
- package/src/protocol/event-semantics.ts +180 -0
- package/src/protocol/tape-index.ts +120 -0
- package/src/protocol/types.ts +60 -0
- package/src/protocol/validation.ts +173 -0
- package/src/readback.ts +804 -0
- package/src/recorder/assemble.ts +192 -0
- package/src/recorder/closure.ts +408 -0
- package/src/recorder/core.ts +587 -0
- package/src/recorder/device.ts +474 -0
- package/src/recorder/encoder.ts +251 -0
- package/src/recorder/lifecycle.ts +847 -0
- package/src/recorder/pass.ts +241 -0
- package/src/recorder/proxy.ts +59 -0
- package/src/recorder/queue.ts +109 -0
- package/src/recorder/resource-registry.ts +53 -0
- package/src/recorder/session.ts +152 -0
- package/src/recorder/shader.ts +47 -0
- package/src/recorder/snapshot.ts +38 -0
- package/src/recorder/wrap.ts +157 -0
- package/src/recorder.ts +15 -0
- package/src/replay/device-request.ts +38 -0
- package/src/replay/execute-support.ts +243 -0
- package/src/replay/execute.ts +870 -0
- package/src/replay/readback.ts +671 -0
- package/src/replay/resources.ts +154 -0
- package/src/replay/session.ts +509 -0
- package/src/replay/texture-format.ts +99 -0
- package/src/texel-decode.ts +289 -0
- package/src/texel-layout.ts +324 -0
- package/src/types.ts +888 -0
package/src/errors.ts
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// @forgeax/engine-rhi-debug/src/errors -- one closed core error union.
|
|
2
|
+
|
|
3
|
+
/// <reference types="@webgpu/types" />
|
|
4
|
+
|
|
5
|
+
/** The only error vocabulary crossing the RHI-debug core boundary. */
|
|
6
|
+
export type RhiDebugErrorCode =
|
|
7
|
+
| 'capture-unavailable'
|
|
8
|
+
| 'capture-busy'
|
|
9
|
+
| 'capture-snapshot-failed'
|
|
10
|
+
| 'capture-timeout'
|
|
11
|
+
| 'tape-invalid'
|
|
12
|
+
| 'tape-version-unsupported'
|
|
13
|
+
| 'replay-capability-mismatch'
|
|
14
|
+
| 'replay-event-failed'
|
|
15
|
+
| 'replay-position-invalid'
|
|
16
|
+
| 'readback-failed'
|
|
17
|
+
| 'readback-unsupported';
|
|
18
|
+
|
|
19
|
+
export type CaptureStage = 'capture' | 'snapshot';
|
|
20
|
+
|
|
21
|
+
export interface CaptureFailureDetail {
|
|
22
|
+
readonly stage: CaptureStage;
|
|
23
|
+
readonly cause: string;
|
|
24
|
+
readonly handleId?: string;
|
|
25
|
+
readonly resourceKind?: 'buffer' | 'texture';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface CaptureTimeoutDetail {
|
|
29
|
+
readonly stage: 'snapshot';
|
|
30
|
+
readonly cause: string;
|
|
31
|
+
readonly timeoutMs: number;
|
|
32
|
+
readonly progress?: {
|
|
33
|
+
readonly snapshotStage: 'queue-drain' | 'resource-readback';
|
|
34
|
+
readonly totalResources: number;
|
|
35
|
+
readonly completedResources: number;
|
|
36
|
+
readonly skippedResources: number;
|
|
37
|
+
readonly currentHandleId: string | null;
|
|
38
|
+
readonly currentKind: 'buffer' | 'texture' | null;
|
|
39
|
+
readonly currentSizeBytes: number | null;
|
|
40
|
+
readonly elapsedMs: number;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface TapeFailureDetail {
|
|
45
|
+
readonly stage: 'decode' | 'validate';
|
|
46
|
+
readonly cause: string;
|
|
47
|
+
readonly handleId?: string;
|
|
48
|
+
readonly eventIndex?: number;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface TapeVersionDetail {
|
|
52
|
+
readonly foundVersion: number;
|
|
53
|
+
readonly expectedVersion: number;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface ReplayCapabilityFailureDetail {
|
|
57
|
+
readonly stage: 'replay';
|
|
58
|
+
readonly cause: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface ReplayEventFailureDetail {
|
|
62
|
+
readonly eventIndex: number;
|
|
63
|
+
readonly kind: string;
|
|
64
|
+
readonly stage: string;
|
|
65
|
+
readonly cause: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface ReplayPositionDetail {
|
|
69
|
+
readonly requested: number;
|
|
70
|
+
readonly available: number;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface ReadbackFailureDetail {
|
|
74
|
+
readonly stage: 'readback';
|
|
75
|
+
readonly cause: string;
|
|
76
|
+
readonly phase?: 'copy' | 'map';
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface ReadbackUnsupportedDetail {
|
|
80
|
+
readonly stage: 'readback';
|
|
81
|
+
readonly resourceId?: string;
|
|
82
|
+
readonly format?: string;
|
|
83
|
+
readonly reason: string;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
type RhiDebugDetailByCode = {
|
|
87
|
+
'capture-unavailable': CaptureFailureDetail;
|
|
88
|
+
'capture-busy': CaptureFailureDetail;
|
|
89
|
+
'capture-snapshot-failed': CaptureFailureDetail;
|
|
90
|
+
'capture-timeout': CaptureTimeoutDetail;
|
|
91
|
+
'tape-invalid': TapeFailureDetail;
|
|
92
|
+
'tape-version-unsupported': TapeVersionDetail;
|
|
93
|
+
'replay-capability-mismatch': ReplayCapabilityFailureDetail;
|
|
94
|
+
'replay-event-failed': ReplayEventFailureDetail;
|
|
95
|
+
'replay-position-invalid': ReplayPositionDetail;
|
|
96
|
+
'readback-failed': ReadbackFailureDetail;
|
|
97
|
+
'readback-unsupported': ReadbackUnsupportedDetail;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export type RhiDebugErrorDetail = RhiDebugDetailByCode[RhiDebugErrorCode];
|
|
101
|
+
|
|
102
|
+
export type RhiDebugErrorFor<C extends RhiDebugErrorCode> = {
|
|
103
|
+
readonly code: C;
|
|
104
|
+
readonly expected: string;
|
|
105
|
+
readonly hint: string;
|
|
106
|
+
readonly detail: RhiDebugDetailByCode[C];
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export type RhiDebugError = {
|
|
110
|
+
[C in RhiDebugErrorCode]: RhiDebugErrorFor<C>;
|
|
111
|
+
}[RhiDebugErrorCode];
|
|
112
|
+
|
|
113
|
+
const VERSION_HINT =
|
|
114
|
+
'use the source revision/tool that produced this tape, or capture again on the current revision';
|
|
115
|
+
|
|
116
|
+
export function createRhiDebugError<C extends RhiDebugErrorCode>(
|
|
117
|
+
code: C,
|
|
118
|
+
detail: RhiDebugDetailByCode[C],
|
|
119
|
+
): RhiDebugErrorFor<C> {
|
|
120
|
+
return {
|
|
121
|
+
code,
|
|
122
|
+
expected: expectedFor(code),
|
|
123
|
+
hint: recoveryHint(code),
|
|
124
|
+
detail,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function expectedFor(code: RhiDebugErrorCode): string {
|
|
129
|
+
switch (code) {
|
|
130
|
+
case 'capture-unavailable':
|
|
131
|
+
case 'capture-busy':
|
|
132
|
+
case 'capture-snapshot-failed':
|
|
133
|
+
case 'capture-timeout':
|
|
134
|
+
return 'a capture capability that can complete one bounded frame';
|
|
135
|
+
case 'tape-invalid':
|
|
136
|
+
case 'tape-version-unsupported':
|
|
137
|
+
return 'a valid v7 RHI debug tape';
|
|
138
|
+
case 'replay-capability-mismatch':
|
|
139
|
+
case 'replay-event-failed':
|
|
140
|
+
case 'replay-position-invalid':
|
|
141
|
+
return 'a fresh replay session with a valid workIndex';
|
|
142
|
+
case 'readback-failed':
|
|
143
|
+
case 'readback-unsupported':
|
|
144
|
+
return 'a supported readback target';
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function recoveryHint(code: RhiDebugErrorCode): string {
|
|
149
|
+
switch (code) {
|
|
150
|
+
case 'capture-unavailable':
|
|
151
|
+
return 'enable the single RHI capture capability and retry';
|
|
152
|
+
case 'capture-busy':
|
|
153
|
+
return 'wait for the active capture to finish, then issue one new request';
|
|
154
|
+
case 'capture-snapshot-failed':
|
|
155
|
+
return 'inspect the snapshot stage and capture again after fixing the resource';
|
|
156
|
+
case 'capture-timeout':
|
|
157
|
+
return 'increase the bounded timeout or capture again after the device becomes idle';
|
|
158
|
+
case 'tape-invalid':
|
|
159
|
+
return 'obtain complete bytes and retry strict decoding; do not continue to replay';
|
|
160
|
+
case 'tape-version-unsupported':
|
|
161
|
+
return VERSION_HINT;
|
|
162
|
+
case 'replay-capability-mismatch':
|
|
163
|
+
return 'use a fresh device satisfying the recorded RHI capabilities';
|
|
164
|
+
case 'replay-event-failed':
|
|
165
|
+
return 'inspect eventIndex, kind, stage, and cause; later work is not valid';
|
|
166
|
+
case 'replay-position-invalid':
|
|
167
|
+
return 'choose a workIndex present in FrameModel.works';
|
|
168
|
+
case 'readback-failed':
|
|
169
|
+
return 'inspect the readback cause and retry on a live fresh replay session';
|
|
170
|
+
case 'readback-unsupported':
|
|
171
|
+
return 'inspect the descriptor or use a backend with the requested readback support';
|
|
172
|
+
}
|
|
173
|
+
}
|