summaryrefslogtreecommitdiffstats
path: root/tests/language-feature
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2021-01-15 12:10:06 -0800
committerGitHub <noreply@github.com>2021-01-15 12:10:06 -0800
commit2a5d5b32348c33aac7ca62aa9a4c2bb7cff8e08a (patch)
tree01c394d8a3551d3e191e538d27b82472b721f749 /tests/language-feature
parentf834f25794cfb746079e92d58c7410b767c57208 (diff)
Convert more tests to use shader objects (#1659)
This change converts a large number of our existing tests to use the `ShaderObject` support that was added to the `gfx` layer. In many cases, tests were just updated to pass `-shaderobj` and the result Just Worked. In other cases, a `name` attribute had to be added to one or more `TEST_INPUT` lines. For tests that did not work with shader objects "out of the box," I spent a little bit of time trying to get them work, but fell back to letting those tests run in the older mode. Future changes to the infrastructure will be needed to get those additional tests working in the new path. Along with the changes to test files, the following implementation changes were made to get additional tests working: * Because the shader object mode uses explicit register bindings (from reflection), the hacky logic that was offseting `u` registers for D3D12 based on the number of render targets gets disabled (by another hack). * The "flat" reflection information coming from Slang was not correctly reporting "binding ranges" for things that consumed only uniform data (which would be everything on CUDA/CPU), so it was refactored to properly include binding ranges for anything where the type of the field/variable implied a binding range should be created (even if the `LayoutResourceKind` was `::Uniform`). * A few fixes were made to the CUDA implementation of `Renderer`, in order to get additional tests up and running. Most of these changes had to do with texture bindings, which hadn't really been tested previously. In addition, a few changes were made that were attempts at getting more tests working, but didn't actually help. These could be dropped if requested: * As a quality-of-life feature (not being used) the `object` style of `TEST_INPUT` line is upgraded to support inferring the type to use from the type of the input being set. * Any `object` shader input lines get ignored in non-shader-object mode.
Diffstat (limited to 'tests/language-feature')
-rw-r--r--tests/language-feature/constants/static-const-in-struct.slang2
-rw-r--r--tests/language-feature/enums/enum-equality.slang2
-rw-r--r--tests/language-feature/enums/explicit-tag-type.slang2
-rw-r--r--tests/language-feature/enums/nested-enum.slang2
-rw-r--r--tests/language-feature/extensions/interface-extension.slang2
-rw-r--r--tests/language-feature/generics/struct-generic-value-param.slang2
-rw-r--r--tests/language-feature/inheritance/struct-inherit-interface-requirement.slang2
-rw-r--r--tests/language-feature/inheritance/struct-inheritance.slang2
-rw-r--r--tests/language-feature/namespaces/simple-namespace.slang2
-rw-r--r--tests/language-feature/namespaces/using-namespace.slang2
-rw-r--r--tests/language-feature/properties/property-decl.slang2
-rw-r--r--tests/language-feature/properties/property-in-interface.slang2
-rw-r--r--tests/language-feature/shader-params/entry-point-uniform-params.slang6
-rw-r--r--tests/language-feature/swizzles/matrix-swizzles.slang2
14 files changed, 16 insertions, 16 deletions
diff --git a/tests/language-feature/constants/static-const-in-struct.slang b/tests/language-feature/constants/static-const-in-struct.slang
index d01e58289..bee8c936b 100644
--- a/tests/language-feature/constants/static-const-in-struct.slang
+++ b/tests/language-feature/constants/static-const-in-struct.slang
@@ -1,6 +1,6 @@
// static-const-in-struct.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that `static const` variable declarations inside of
// a `struct` type correctly translate to constants in
diff --git a/tests/language-feature/enums/enum-equality.slang b/tests/language-feature/enums/enum-equality.slang
index 0ad39c0f4..d3a2aa4fd 100644
--- a/tests/language-feature/enums/enum-equality.slang
+++ b/tests/language-feature/enums/enum-equality.slang
@@ -3,7 +3,7 @@
// Test that equality (and inequality) of `enum`
// types works as expected.
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
enum Channel
{
diff --git a/tests/language-feature/enums/explicit-tag-type.slang b/tests/language-feature/enums/explicit-tag-type.slang
index b55266fcb..52067bd3b 100644
--- a/tests/language-feature/enums/explicit-tag-type.slang
+++ b/tests/language-feature/enums/explicit-tag-type.slang
@@ -2,7 +2,7 @@
// Test that the underlying "tag type" of an `enum` can be set.
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
enum Channel : uint
{
diff --git a/tests/language-feature/enums/nested-enum.slang b/tests/language-feature/enums/nested-enum.slang
index 942a9e72d..ecc854440 100644
--- a/tests/language-feature/enums/nested-enum.slang
+++ b/tests/language-feature/enums/nested-enum.slang
@@ -2,7 +2,7 @@
// Test enums defined nested in a struct work as expected.
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
struct Outer
{
diff --git a/tests/language-feature/extensions/interface-extension.slang b/tests/language-feature/extensions/interface-extension.slang
index 824aa3450..e8c0552c0 100644
--- a/tests/language-feature/extensions/interface-extension.slang
+++ b/tests/language-feature/extensions/interface-extension.slang
@@ -2,7 +2,7 @@
// Test that an `extension` applied to an interface type works as users expect
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
interface ICounter
{
diff --git a/tests/language-feature/generics/struct-generic-value-param.slang b/tests/language-feature/generics/struct-generic-value-param.slang
index 857468165..435e374d8 100644
--- a/tests/language-feature/generics/struct-generic-value-param.slang
+++ b/tests/language-feature/generics/struct-generic-value-param.slang
@@ -16,7 +16,7 @@
// it can reproduce a bug that was encountered by a user
// when trying out the feature.
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
import struct_generic_value_param_import;
diff --git a/tests/language-feature/inheritance/struct-inherit-interface-requirement.slang b/tests/language-feature/inheritance/struct-inherit-interface-requirement.slang
index e1ab2333a..968a78cb6 100644
--- a/tests/language-feature/inheritance/struct-inherit-interface-requirement.slang
+++ b/tests/language-feature/inheritance/struct-inherit-interface-requirement.slang
@@ -1,6 +1,6 @@
// struct-inherit-interface-requirement.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that a `struct` type can use an inherited
// member to satisfy an interface requirement.
diff --git a/tests/language-feature/inheritance/struct-inheritance.slang b/tests/language-feature/inheritance/struct-inheritance.slang
index e2cfaf25b..34ce55344 100644
--- a/tests/language-feature/inheritance/struct-inheritance.slang
+++ b/tests/language-feature/inheritance/struct-inheritance.slang
@@ -1,6 +1,6 @@
// struct-inheritance.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that we can define a `struct` type
// that inherits from another `struct`.
diff --git a/tests/language-feature/namespaces/simple-namespace.slang b/tests/language-feature/namespaces/simple-namespace.slang
index 01f40545a..e964cfca9 100644
--- a/tests/language-feature/namespaces/simple-namespace.slang
+++ b/tests/language-feature/namespaces/simple-namespace.slang
@@ -1,6 +1,6 @@
// simple-namespace.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that simple `namespace` declarations work as expected
diff --git a/tests/language-feature/namespaces/using-namespace.slang b/tests/language-feature/namespaces/using-namespace.slang
index b0b301929..3c40b4ba3 100644
--- a/tests/language-feature/namespaces/using-namespace.slang
+++ b/tests/language-feature/namespaces/using-namespace.slang
@@ -2,7 +2,7 @@
// Test that `using` can bring declarations from a namespace into scope
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
namespace X
{
diff --git a/tests/language-feature/properties/property-decl.slang b/tests/language-feature/properties/property-decl.slang
index 19267e42c..94ab39d00 100644
--- a/tests/language-feature/properties/property-decl.slang
+++ b/tests/language-feature/properties/property-decl.slang
@@ -1,6 +1,6 @@
// property-decl.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that users can declare properties and access them
// with ordinary dot syntax.
diff --git a/tests/language-feature/properties/property-in-interface.slang b/tests/language-feature/properties/property-in-interface.slang
index 91cef0e14..50a9c7f2e 100644
--- a/tests/language-feature/properties/property-in-interface.slang
+++ b/tests/language-feature/properties/property-in-interface.slang
@@ -1,6 +1,6 @@
// property-in-interface.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that interfaces can include property declarations.
diff --git a/tests/language-feature/shader-params/entry-point-uniform-params.slang b/tests/language-feature/shader-params/entry-point-uniform-params.slang
index b92af5818..9bcb36f27 100644
--- a/tests/language-feature/shader-params/entry-point-uniform-params.slang
+++ b/tests/language-feature/shader-params/entry-point-uniform-params.slang
@@ -1,8 +1,8 @@
// entry-point-uniform-params.slang
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cuda
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Test that a shader can be written that
// only uses entry point `uniform` parameters,
diff --git a/tests/language-feature/swizzles/matrix-swizzles.slang b/tests/language-feature/swizzles/matrix-swizzles.slang
index e1a2d7473..3f8fece74 100644
--- a/tests/language-feature/swizzles/matrix-swizzles.slang
+++ b/tests/language-feature/swizzles/matrix-swizzles.slang
@@ -1,6 +1,6 @@
// matrix-swizzle.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that matrix swizzle works correctly
// Matrix swizzles can either be one or zero indexed