You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This change originated as an attempt to re-enable a test case, but it has ended up disabling more tests (for good reasons) than it re-enables.
The main change here is a significant overhaul of the way that the D3D12 render path extracts information from the Slang reflection API to produce a root signature.
There were also some supporting fixes in the reflection information to make sure it returns what the D3D12 back-end needed.
The big picture here is that the D3D12 path now uses the descriptor ranges stored in the reflection data more or less directly.
It still needs to use register/space offset information queried via the "old" reflection API, but it only does so at the top level now, for the program and entry points themselves.
All other layout information is derived directly from what Slang provides.
Smaller changes:
* The "flat" reflection API was expanded to include `getBindingRangeDescriptorRangeCount()` which was clearly missing.
* The "flat" reflection results for a constant buffer or parameter block that didn't contain any uniform data and was mapped to a plain constant buffer needed to be fixed up. That logic is still way to subtle to be trusted.
* Several additional tests were disabled that relied on static specialization, global/entry-point generi type parameters, structured buffers of interfaces or other features we don't officially support with shader objects right now. All of the affected tests were somehow passing by sheer luck and because they often passed in specialization arguments via explicit `TEST_INPUT` lines.
* The `inteface-shader-param` test is re-enabled now that we can properly describe its input with the new `set` mode on `TEST_INPUT`
* `ShaderCursor::getElement()` can now be used on structure types (in addition to arrays) to support by-index access to fields
* The `TEST_INPUT` system was expanded to support both by-name and by-index setting of structure fields for aggregates
* The `TEST_INPUT` system was expanded to allow an `out` prefix to mark parts of an expression as outputs on a `set` lines
* The `TEST_INPUT` system was expanded so that anything that would be allowed on a `TEST_INPUT` line by itself (like `ubuffer(...)`) can now be used as a sub-expression on a `set` line
Co-authored-by: Yong He <yonghe@outlook.com>
Copy file name to clipboardexpand all lines: tests/disabled-tests.txt
+39-2
Original file line number
Diff line number
Diff line change
@@ -9,15 +9,53 @@ Test that don't work with shader objects in render-test
9
9
The following tests were disabled because they had been running on non `-shaderobj` code paths that have since been removed.
10
10
These tests will need to be re-enabled together with changes to the shader object implementation, or removed entirely if they no longer test useful functionality.
11
11
12
+
### `ConstantBuffer<ISomething>`
13
+
14
+
These tests rely on details of how a `ConstantBuffer<ISomething>` or `ParameterBlock<ISomething>` gets laid out.
15
+
We need to fix the compiler and shader object implementation to agree that a `ConstantBuffer<ISomething>`
16
+
should compile as `exists T : ISomething . ConstantBuffer<T>` and *not* `ConstantBuffer<exists T : ISomething . T>`
17
+
like it currently does.
18
+
(The reason for this choice is that we want a shader object created from `SomeConcreteType`, where `SomeConcreteType : ISomething`, to be directly usable for a `ConstantBuffer<ISomething>` parameter with its existing buffer allocation.)
19
+
12
20
* compute/dynamic-dispatch-12.slang
21
+
22
+
### `StructuredBuffer<ISomething>`
23
+
24
+
These tests require support for structured buffers where the element type either is an interface type or transitively contains one.
25
+
13
26
* compute/dynamic-dispatch-13.slang
14
27
* compute/dynamic-dispatch-14.slang
15
28
* compute/dynamic-dispatch-bindless-texture.slang
16
-
* compute/global-type-param2.slang
29
+
* compute/interface-func-param-in-struct.slang
30
+
* compute/interface-assoc-type-param.slang
31
+
32
+
### Generic Specialization Parameters
33
+
34
+
These tests make use of generic specialization parameters in ways that don't easily align with the implementation approach that is more focused on existential parameters.
35
+
They should either be ported to use existentials directly (at which point we potentially get rid of support for generic specialization at global or entry-point scope?) or we should refine the implementation of generic specialization to be consistent with existential specialization.
36
+
17
37
* compute/global-type-param-array.slang
18
38
* compute/global-type-param1.slang
39
+
* compute/global-type-param2.slang
40
+
* bugs/gh-357.slang
41
+
* compute/assoctype-generic-arg.slang
42
+
* compute/global-generic-value-param.slang
43
+
* compute/global-type-param-in-entrypoint.slang
44
+
* compute/global-type-param.slang
45
+
* compute/int-generic.slang
46
+
47
+
### Static Specialization
48
+
49
+
These tests rely on the ability of the static specialization path to provide locations for data that doesn't "fit" into the fixed-size payload of an existential-type field/value.
50
+
They will need to wait until the shader object implementation(s) are updated to support that case.
0 commit comments