summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/slang/slang-reflection-api.cpp157
-rw-r--r--tests/bugs/bool-init.slang4
-rw-r--r--tests/bugs/bool-op.slang4
-rw-r--r--tests/bugs/dxbc-double-problem.slang10
-rw-r--r--tests/bugs/empty-switch.slang8
-rw-r--r--tests/bugs/gh-357.slang2
-rw-r--r--tests/bugs/gh-471.slang2
-rw-r--r--tests/bugs/gh-487.slang2
-rw-r--r--tests/bugs/gh-518.slang6
-rw-r--r--tests/bugs/gh-519.slang6
-rw-r--r--tests/bugs/gh-566.slang2
-rw-r--r--tests/bugs/gh-569.slang2
-rw-r--r--tests/bugs/gh-775.slang2
-rw-r--r--tests/bugs/gl-33.slang2
-rw-r--r--tests/bugs/glsl-static-const-array.slang2
-rw-r--r--tests/bugs/mutating/mutating-generic-method.slang6
-rw-r--r--tests/bugs/negative-literal.slang8
-rw-r--r--tests/bugs/nested-generics-call.slang2
-rw-r--r--tests/bugs/nested-generics-method-call.slang2
-rw-r--r--tests/bugs/paren-insertion-bug.slang2
-rw-r--r--tests/bugs/specialize-function-array-args.slang4
-rw-r--r--tests/bugs/ssa-loop.slang2
-rw-r--r--tests/bugs/static-method.slang2
-rw-r--r--tests/bugs/static-var.slang2
-rw-r--r--tests/bugs/vec-compare.slang6
-rw-r--r--tests/bugs/while-in-generic.slang2
-rw-r--r--tests/compute/array-param.slang6
-rw-r--r--tests/compute/assoctype-complex.slang4
-rw-r--r--tests/compute/assoctype-func-param.slang4
-rw-r--r--tests/compute/assoctype-generic-arg.slang4
-rw-r--r--tests/compute/assoctype-lookup.slang8
-rw-r--r--tests/compute/assoctype-nested.slang8
-rw-r--r--tests/compute/assoctype-simple.slang4
-rw-r--r--tests/compute/atomics-buffer.slang10
-rw-r--r--tests/compute/atomics-groupshared.slang8
-rw-r--r--tests/compute/atomics.slang8
-rw-r--r--tests/compute/break-stmt.slang4
-rw-r--r--tests/compute/buffer-layout.slang8
-rw-r--r--tests/compute/buffer-type-splitting.slang2
-rw-r--r--tests/compute/byte-address-buffer.slang8
-rw-r--r--tests/compute/cast-zero-to-struct.slang4
-rw-r--r--tests/compute/cbuffer-legalize.slang2
-rw-r--r--tests/compute/comma-operator.slang4
-rw-r--r--tests/compute/compile-time-loop.slang2
-rw-r--r--tests/compute/constexpr.slang4
-rw-r--r--tests/compute/continue-stmt.slang4
-rw-r--r--tests/compute/default-initializer.slang4
-rw-r--r--tests/compute/default-parameter.slang6
-rw-r--r--tests/compute/discard-stmt.slang2
-rw-r--r--tests/compute/dump-repro.slang4
-rw-r--r--tests/compute/dynamic-dispatch-1.slang8
-rw-r--r--tests/compute/dynamic-dispatch-10.slang8
-rw-r--r--tests/compute/dynamic-dispatch-11.slang8
-rw-r--r--tests/compute/dynamic-dispatch-12.slang8
-rw-r--r--tests/compute/dynamic-dispatch-13.slang4
-rw-r--r--tests/compute/dynamic-dispatch-14.slang4
-rw-r--r--tests/compute/dynamic-dispatch-2.slang8
-rw-r--r--tests/compute/dynamic-dispatch-3.slang8
-rw-r--r--tests/compute/dynamic-dispatch-4.slang8
-rw-r--r--tests/compute/dynamic-dispatch-5.slang8
-rw-r--r--tests/compute/dynamic-dispatch-6.slang8
-rw-r--r--tests/compute/dynamic-dispatch-7.slang8
-rw-r--r--tests/compute/dynamic-dispatch-8.slang8
-rw-r--r--tests/compute/dynamic-dispatch-9.slang8
-rw-r--r--tests/compute/empty-struct.slang4
-rw-r--r--tests/compute/empty-struct2.slang4
-rw-r--r--tests/compute/enum-conversion2.slang6
-rw-r--r--tests/compute/enum-tag-conversion.slang6
-rw-r--r--tests/compute/enum.slang6
-rw-r--r--tests/compute/explicit-this-expr.slang4
-rw-r--r--tests/compute/extension-multi-interface.slang4
-rw-r--r--tests/compute/frem.slang6
-rw-r--r--tests/compute/func-cbuffer-param.slang8
-rw-r--r--tests/compute/func-param-legalize.slang2
-rw-r--r--tests/compute/func-resource-param.slang8
-rw-r--r--tests/compute/generic-closer.slang8
-rw-r--r--tests/compute/generic-interface-method-simple.slang4
-rw-r--r--tests/compute/generic-interface-method.slang4
-rw-r--r--tests/compute/generic-list.slang4
-rw-r--r--tests/compute/generic-struct-with-constraint.slang4
-rw-r--r--tests/compute/generic-struct.slang4
-rw-r--r--tests/compute/generics-constrained.slang4
-rw-r--r--tests/compute/generics-constructor.slang4
-rw-r--r--tests/compute/generics-overload.slang4
-rw-r--r--tests/compute/generics-simple.slang4
-rw-r--r--tests/compute/generics-syntax-2.slang4
-rw-r--r--tests/compute/generics-syntax.slang4
-rw-r--r--tests/compute/global-generic-value-param.slang2
-rw-r--r--tests/compute/global-init.slang4
-rw-r--r--tests/compute/global-type-param-in-entrypoint.slang2
-rw-r--r--tests/compute/global-type-param.slang2
-rw-r--r--tests/compute/groupshared.slang8
-rw-r--r--tests/compute/half-calc.slang4
-rw-r--r--tests/compute/half-structured-buffer.slang4
-rw-r--r--tests/compute/half-texture.slang2
-rw-r--r--tests/compute/implicit-generic-app.slang4
-rw-r--r--tests/compute/implicit-this-expr.slang4
-rw-r--r--tests/compute/init-list-defaults.slang4
-rw-r--r--tests/compute/initializer-list.slang4
-rw-r--r--tests/compute/inout.slang4
-rw-r--r--tests/compute/int-generic.slang2
-rw-r--r--tests/compute/interface-assoc-type-param.slang4
-rw-r--r--tests/compute/interface-func-param-in-struct.slang4
-rw-r--r--tests/compute/interface-local.slang8
-rw-r--r--tests/compute/interface-param-partial-specialize.slang4
-rw-r--r--tests/compute/interface-param.slang8
-rw-r--r--tests/compute/interface-static-method.slang8
-rw-r--r--tests/compute/loop-unroll.slang12
-rw-r--r--tests/compute/matrix-layout-structured-buffer.slang4
-rw-r--r--tests/compute/matrix-layout.hlsl4
-rw-r--r--tests/compute/modern-syntax.slang4
-rw-r--r--tests/compute/multi-interface.slang4
-rw-r--r--tests/compute/multiple-continue-sites.slang4
-rw-r--r--tests/compute/mutating-and-inout.slang2
-rw-r--r--tests/compute/mutating-methods.slang8
-rw-r--r--tests/compute/nested-generics.slang4
-rw-r--r--tests/compute/nested-generics2.slang4
-rw-r--r--tests/compute/performance-profile.slang10
-rw-r--r--tests/compute/pointer-emit.slang2
-rw-r--r--tests/compute/rewriter-parameter-block-complex.hlsl20
-rw-r--r--tests/compute/rw-texture-simple.slang12
-rw-r--r--tests/compute/scope-operator.slang6
-rw-r--r--tests/compute/select-expr.slang4
-rw-r--r--tests/compute/semantic.slang8
-rw-r--r--tests/compute/simple.slang4
-rw-r--r--tests/compute/ssa-reduce-bug.slang4
-rw-r--r--tests/compute/static-const-array.slang6
-rw-r--r--tests/compute/static-const-matrix-array.slang6
-rw-r--r--tests/compute/static-const-vector-array.slang6
-rw-r--r--tests/compute/struct-default-init.slang4
-rw-r--r--tests/compute/struct-in-generic.slang4
-rw-r--r--tests/compute/struct-make.slang6
-rw-r--r--tests/compute/structured-buffer-of-matrices.slang8
-rw-r--r--tests/compute/switch-stmt.slang4
-rw-r--r--tests/compute/texture-get-dimensions.slang12
-rw-r--r--tests/compute/texture-sampling.slang22
-rw-r--r--tests/compute/texture-simple.slang12
-rw-r--r--tests/compute/this-type.slang4
-rw-r--r--tests/compute/transcendental.slang8
-rw-r--r--tests/compute/transitive-interface.slang4
-rw-r--r--tests/compute/type-legalize-global-with-init.slang6
-rw-r--r--tests/compute/typedef-member.slang4
-rw-r--r--tests/compute/unbounded-array-of-array-syntax.slang6
-rw-r--r--tests/compute/unbounded-array-of-array.slang2
-rw-r--r--tests/compute/user-defined-initializer.slang4
-rw-r--r--tests/compute/vector-scalar-compare.slang7
-rw-r--r--tests/compute/write-structured-buffer-field.slang4
-rw-r--r--tests/cross-compile/fmod.slang4
-rw-r--r--tests/cross-compile/get-dimensions.slang8
-rw-r--r--tests/cross-compile/glsl-bool-ops.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang8
-rw-r--r--tests/hlsl-intrinsic/active-mask/switch.slang8
-rw-r--r--tests/hlsl-intrinsic/bit-cast-double.slang10
-rw-r--r--tests/hlsl-intrinsic/bit-cast.slang10
-rw-r--r--tests/hlsl-intrinsic/bit-cast/bit-cast-16-bit.slang4
-rw-r--r--tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit-vector.slang10
-rw-r--r--tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit.slang8
-rw-r--r--tests/hlsl-intrinsic/byte-address-buffer/byte-address-struct.slang10
-rw-r--r--tests/hlsl-intrinsic/classify-double.slang10
-rw-r--r--tests/hlsl-intrinsic/classify-float.slang10
-rw-r--r--tests/hlsl-intrinsic/literal-int64.slang12
-rw-r--r--tests/hlsl-intrinsic/matrix-double-reduced-intrinsic.slang12
-rw-r--r--tests/hlsl-intrinsic/matrix-float.slang10
-rw-r--r--tests/hlsl-intrinsic/matrix-int-runtime-index.slang10
-rw-r--r--tests/hlsl-intrinsic/matrix-int.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-d3d-intrinsic.slang12
-rw-r--r--tests/hlsl-intrinsic/scalar-double-simple.slang12
-rw-r--r--tests/hlsl-intrinsic/scalar-double-vk-intrinsic.slang6
-rw-r--r--tests/hlsl-intrinsic/scalar-float.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-int.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-int64.slang12
-rw-r--r--tests/hlsl-intrinsic/scalar-uint.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-uint64.slang12
-rw-r--r--tests/hlsl-intrinsic/vector-double-reduced-intrinsic.slang10
-rw-r--r--tests/hlsl-intrinsic/vector-float.slang10
-rw-r--r--tests/hlsl-intrinsic/vector-int-runtime-index.slang10
-rw-r--r--tests/hlsl-intrinsic/vector-int.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-active-count-bits.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-active-product.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang4
-rw-r--r--tests/hlsl-intrinsic/wave-broadcast-lane-at.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-diverge.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-equality.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-get-lane-index.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-is-first-lane.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-active-product.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang4
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-diverge.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-equality.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-get-active.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-matrix.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang4
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-vector.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-matrix.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-multi-prefix.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-prefix-count-bits.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-prefix-product.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-prefix-sum.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-read-lane-at-vk.slang4
-rw-r--r--tests/hlsl-intrinsic/wave-read-lane-at.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-shuffle-vk.slang10
-rw-r--r--tests/hlsl-intrinsic/wave-vector.slang10
-rw-r--r--tests/hlsl-intrinsic/wave.slang10
-rw-r--r--tests/ir/string-literal-hash.slang4
-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
-rw-r--r--tests/optimization/func-resource-result/func-resource-result-simple.slang6
-rw-r--r--tests/pipeline/compute/compute-system-values.slang4
-rw-r--r--tests/serialization/extern/extern-test.slang2
-rw-r--r--tests/serialization/serialized-module-test.slang2
-rw-r--r--tests/serialization/std-lib-serialize.slang2
-rw-r--r--tests/slang-extension/atomic-float-byte-address-buffer.slang14
-rw-r--r--tests/slang-extension/atomic-int64-byte-address-buffer.slang12
-rw-r--r--tests/slang-extension/atomic-min-max-u64-byte-address-buffer.slang12
-rw-r--r--tests/slang-extension/cas-int64-byte-address-buffer.slang12
-rw-r--r--tests/slang-extension/exchange-int64-byte-address-buffer.slang12
-rw-r--r--tools/gfx/cuda/render-cuda.cpp77
-rw-r--r--tools/gfx/render-graphics-common.cpp19
-rw-r--r--tools/render-test/render-test-main.cpp34
-rw-r--r--tools/render-test/shader-renderer-util.cpp11
241 files changed, 1001 insertions, 792 deletions
diff --git a/source/slang/slang-reflection-api.cpp b/source/slang/slang-reflection-api.cpp
index 61990b7d0..6d59761a4 100644
--- a/source/slang/slang-reflection-api.cpp
+++ b/source/slang/slang-reflection-api.cpp
@@ -1149,7 +1149,7 @@ namespace Slang
}
else
{
- SLANG_UNEXPECTED("unhandled resource binding type");
+ return SLANG_BINDING_TYPE_UNKNOWN;
}
}
@@ -1167,7 +1167,7 @@ namespace Slang
}
else
{
- SLANG_UNEXPECTED("unhandled resource binding type");
+ return SLANG_BINDING_TYPE_UNKNOWN;
}
}
@@ -1176,6 +1176,22 @@ namespace Slang
Slang::TypeLayout* typeLayout,
LayoutResourceKind kind)
{
+ // If the type or type layout implies a specific binding type
+ // (e.g., a `Texture2D` implies a texture binding), then we
+ // will always favor the binding type implied.
+ //
+ if( auto bindingType = _calcResourceBindingType(typeLayout) )
+ {
+ if(bindingType != SLANG_BINDING_TYPE_UNKNOWN)
+ return bindingType;
+ }
+
+ // As a fallback, we may look at the kind of resources consumed
+ // by a type layout, and use that to infer the type of binding
+ // used. Note that, for example, a `float4` might represent
+ // multiple different kinds of binding, depending on where/how
+ // it is used (e.g., as a varying parameter, a root constant, etc.).
+ //
switch( kind )
{
default:
@@ -1194,14 +1210,10 @@ namespace Slang
CASE(VaryingOutput, VARYING_OUTPUT);
CASE(ExistentialObjectParam, EXISTENTIAL_VALUE);
CASE(PushConstantBuffer, PUSH_CONSTANT);
+ CASE(Uniform, INLINE_UNIFORM_DATA);
// TODO: register space
#undef CASE
-
- case LayoutResourceKind::ShaderResource:
- case LayoutResourceKind::UnorderedAccess:
- case LayoutResourceKind::DescriptorTableSlot:
- return _calcResourceBindingType(typeLayout);
}
}
@@ -1299,6 +1311,10 @@ namespace Slang
SlangBindingType bindingType = SLANG_BINDING_TYPE_CONSTANT_BUFFER;
Index spaceOffset = -1;
LayoutResourceKind kind = LayoutResourceKind::None;
+
+ // TODO: It is unclear if this should be looking at the resource
+ // usage of the parameter group, or of its "container" layout.
+ //
for(auto& resInfo : parameterGroupTypeLayout->resourceInfos)
{
kind = resInfo.kind;
@@ -1307,10 +1323,18 @@ namespace Slang
default:
continue;
+ // Note: the only case where a parameter group should
+ // reflect as consuming `Uniform` storage is on CPU/CUDA,
+ // where that will be the only resource it contains.
+ //
+ // TODO: If we ever support targets that don't have
+ // constant buffers at all, this logic would be questionable.
+ //
case LayoutResourceKind::ConstantBuffer:
case LayoutResourceKind::PushConstantBuffer:
case LayoutResourceKind::RegisterSpace:
case LayoutResourceKind::DescriptorTableSlot:
+ case LayoutResourceKind::Uniform:
break;
}
@@ -1345,39 +1369,79 @@ namespace Slang
// It is possible that the sub-object has descriptor ranges
// that will need to be exposed upward, into the parent.
//
+ // Note: it is a subtle point, but we are only going to expose
+ // *descriptor ranges* upward and not *binding ranges*. The
+ // distinction here comes down to:
+ //
+ // * Descriptor ranges are used to describe the entries that
+ // must be allocated in one or more API descriptor sets to
+ // physically hold a value of a given type (layout).
+ //
+ // * Binding ranges are used to describe the entries that must
+ // be allocated in an application shader object to logically
+ // hold a value of a given type (layout).
+ //
+ // In practice, a binding range might logically belong to a
+ // sub-object, but physically belong to a parent. Consider:
+ //
+ // cbuffer C { Texture2D a; float b; }
+ //
+ // Independent of the API we compile for, we expect the global
+ // scope to have a sub-object for `C`, and for that sub-object
+ // to have a binding range for `a` (that is, we bind the texture
+ // into the sub-object).
+ //
+ // When compiling for D3D12 or Vulkan, we expect that the global
+ // scope must have two descriptor ranges for `C`: one for the
+ // constant buffer itself, and another for the texture `a`.
+ // The reason for this is that `a` needs to be bound as part
+ // of a descriptor set, and `C` doesn't create/allocate its own
+ // descriptor set(s).
+ //
+ // When compiling for CPU or CUDA, we expect that the global scope
+ // will have a descriptor range for `C` but *not* one for `C.a`,
+ // because the physical storage for `C.a` is provided by the
+ // memory allocation for `C` itself.
+
if( spaceOffset != -1 )
{
+ // The logic here assumes that when a parameter group consumes
+ // resources that must "leak" into the outer scope (including
+ // reosurces consumed by the group "container"), those resources
+ // will amount to descriptor ranges that are part of the same
+ // descriptor set.
+ //
+ // (If the contents of a group consume whole spaces/sets, then
+ // those resources will be accounted for separately).
+ //
Int descriptorSetIndex = _findOrAddDescriptorSet(spaceOffset);
auto descriptorSet = m_extendedInfo->m_descriptorSets[descriptorSetIndex];
auto firstDescriptorRangeIndex = descriptorSet->descriptorRanges.getCount();
- // TODO: We need to recursively add descriptor ranges (but not binding
- // ranges!) for anything in the element type that "leaks" into
- // the surrounding context.
+ // First, we need to deal with any descriptor ranges that are
+ // introduced by the "container" type itself.
//
switch(kind)
{
+ // If the parameter group was allocated to consume one or
+ // more whole register spaces/sets, then nothing should
+ // leak through that is measured in descriptor sets.
+ //
case LayoutResourceKind::RegisterSpace:
- case LayoutResourceKind::Uniform:
case LayoutResourceKind::None:
break;
default:
{
- // This means we are in the constant-buffer-like case
- // (even if the user wrote `ParameterBlock<T>`), and any
- // resource usage inside the element type should "leak"
- // out to the parent scope.
- //
- // It *also* means we should add a suitable descriptor
- // range if one is required for the "container" type.
+ // In a constant-buffer-like case, then all the (non-space/set) resource
+ // usage of the "container" should be reflected as descriptor
+ // ranges in the parent scope.
//
for(auto resInfo : parameterGroupTypeLayout->containerVarLayout->typeLayout->resourceInfos)
{
switch( resInfo.kind )
{
case LayoutResourceKind::RegisterSpace:
- case LayoutResourceKind::Uniform:
continue;
default:
@@ -1400,14 +1464,53 @@ namespace Slang
descriptorSet->descriptorRanges.add(descriptorRange);
}
+ }
+
+ }
- // Now we need to recursively walk the element type and add all its
- // descriptor ranges, so that they can be used for binding in
- // the parent.
+ // Second, we need to consider resource usage from the "element"
+ // type that might leak through to the parent.
+ //
+ switch(kind)
+ {
+ // If the parameter group was allocated as a full register space/set,
+ // *or* if it was allocated as ordinary uniform storage (likely
+ // because it was compiled for CPU/CUDA), then there should
+ // be no "leakage" of descriptor ranges from the element type
+ // to the parent.
+ //
+ case LayoutResourceKind::RegisterSpace:
+ case LayoutResourceKind::Uniform:
+ case LayoutResourceKind::None:
+ break;
+
+ default:
+ {
+ // If we are in the constant-buffer-like case, on an API
+ // where constant bufers "leak" resource usage to the
+ // outer context, then we need to add the descriptor ranges
+ // implied by the element type.
+ //
+ // HACK: We enumerate these nested ranges by recurisvely
+ // calling `addRangesRec`, which adds all of descriptor ranges,
+ // binding ranges, and sub-object ranges, and then we trim
+ // the lists we don't actually care about as a post-process.
+ //
+ // TODO: We could try to consider a model where we first
+ // query the extended layout information of the element
+ // type (which might already be cached) and then enumerate
+ // the descriptor ranges and copy them over.
//
- // We have this a bit by collecting both binding ranges and
- // descriptor ranges, and then throwing away the binding ranges
- // from the element type.
+ // TODO: It is possible that there could be cases where
+ // some, but not all, of the nested descriptor ranges ought
+ // to be enumerated here. In that case we might have to introduce
+ // a kind of "mask" parameter that is passed down into
+ // the recursive call so that only the appropriate ranges
+ // get added.
+
+ // We need to add a link to the "path" that is used when looking
+ // up binding information, to ensure that the descriptor ranges
+ // that get enumerated here have correct register/binding offsets.
//
BindingRangePathLink elementPath(path, parameterGroupTypeLayout->elementVarLayout);
@@ -1489,7 +1592,8 @@ namespace Slang
auto& resInfo = typeLayout->resourceInfos[0];
LayoutResourceKind kind = resInfo.kind;
- if(kind == LayoutResourceKind::Uniform)
+ auto bindingType = _calcBindingType(typeLayout, kind);
+ if(bindingType == SLANG_BINDING_TYPE_INLINE_UNIFORM_DATA)
{
// We do not consider uniform resource usage
// in the ranges we compute.
@@ -1504,7 +1608,6 @@ namespace Slang
// This leaf field will map to a single binding range and,
// if it is appropriate, a single descriptor range.
//
- auto bindingType = _calcBindingType(typeLayout, kind);
auto count = resInfo.count * multiplier;
auto indexOffset = _calcIndexOffset(path, kind);
auto spaceOffset = _calcSpaceOffset(path, kind);
diff --git a/tests/bugs/bool-init.slang b/tests/bugs/bool-init.slang
index 1e9627024..51fa852f9 100644
--- a/tests/bugs/bool-init.slang
+++ b/tests/bugs/bool-init.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute,vulkan):COMPARE_COMPUTE_EX:-vk -slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute,vulkan):COMPARE_COMPUTE_EX:-vk -slang -compute -shaderobj
struct Thing
{
diff --git a/tests/bugs/bool-op.slang b/tests/bugs/bool-op.slang
index c10c7e0dd..4d4b43221 100644
--- a/tests/bugs/bool-op.slang
+++ b/tests/bugs/bool-op.slang
@@ -1,6 +1,6 @@
// enum.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
// Confirm operations that produce bools - such as comparisons, or && ||, ! work correctly
diff --git a/tests/bugs/dxbc-double-problem.slang b/tests/bugs/dxbc-double-problem.slang
index 1cd3ab204..50abf4d7b 100644
--- a/tests/bugs/dxbc-double-problem.slang
+++ b/tests/bugs/dxbc-double-problem.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-dx12 -compute -use-dxil -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-dx12 -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-dx12 -compute -use-dxil -output-using-type -shaderobj
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-dx12 -compute -output-using-type -shaderobj
// The problem this test shows is around handling of double with dxbc on D3D12. In that combination
// this code does not write the correct value into the first element - it appears as 0, where
diff --git a/tests/bugs/empty-switch.slang b/tests/bugs/empty-switch.slang
index 104c63367..6ea38dcc7 100644
--- a/tests/bugs/empty-switch.slang
+++ b/tests/bugs/empty-switch.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute,vulkan):COMPARE_COMPUTE_EX:-vk -slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute,vulkan):COMPARE_COMPUTE_EX:-vk -slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -slang -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/bugs/gh-357.slang b/tests/bugs/gh-357.slang
index 90eba799b..522cabd7c 100644
--- a/tests/bugs/gh-357.slang
+++ b/tests/bugs/gh-357.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/bugs/gh-471.slang b/tests/bugs/gh-471.slang
index adc50e799..e7b09760b 100644
--- a/tests/bugs/gh-471.slang
+++ b/tests/bugs/gh-471.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):out,name outputBuffer
// Test that "operator comma" works as expected
diff --git a/tests/bugs/gh-487.slang b/tests/bugs/gh-487.slang
index 08ae8aa06..e425dabe2 100644
--- a/tests/bugs/gh-487.slang
+++ b/tests/bugs/gh-487.slang
@@ -1,5 +1,5 @@
// gh-487.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
// This test is to confirm that we can apply builtin functions taht expect
// a floating-point argument to an integer, with the compiler filling
diff --git a/tests/bugs/gh-518.slang b/tests/bugs/gh-518.slang
index 8de61a94e..16189ca9b 100644
--- a/tests/bugs/gh-518.slang
+++ b/tests/bugs/gh-518.slang
@@ -1,6 +1,6 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST_DISABLED(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST_DISABLED(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
// Note: can't actually test this on Vulkan right now because
// the support in render-test isn't good enough.
diff --git a/tests/bugs/gh-519.slang b/tests/bugs/gh-519.slang
index 207fa6d0a..368c7a617 100644
--- a/tests/bugs/gh-519.slang
+++ b/tests/bugs/gh-519.slang
@@ -1,6 +1,6 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
// This bug involved incorrect computation of the successor
// blocks for a `switch`, which led to incorrect SSA form.
diff --git a/tests/bugs/gh-566.slang b/tests/bugs/gh-566.slang
index 4c5fa1772..f1e53ba9a 100644
--- a/tests/bugs/gh-566.slang
+++ b/tests/bugs/gh-566.slang
@@ -1,6 +1,6 @@
// legalize-struct-init.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
//TEST_INPUT:ubuffer(data=[4 3 2 1], stride=4):name inputBuffer
diff --git a/tests/bugs/gh-569.slang b/tests/bugs/gh-569.slang
index 21fbfa514..0dc6eceda 100644
--- a/tests/bugs/gh-569.slang
+++ b/tests/bugs/gh-569.slang
@@ -1,5 +1,5 @@
// gh-569.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that correct scoping is used in generated HLSL/GLSL,
// even when dominator tree and structured control flow disagree.
diff --git a/tests/bugs/gh-775.slang b/tests/bugs/gh-775.slang
index 867233919..d25fa493b 100644
--- a/tests/bugs/gh-775.slang
+++ b/tests/bugs/gh-775.slang
@@ -1,5 +1,5 @@
// gh-775.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
int test(int inVal)
{
diff --git a/tests/bugs/gl-33.slang b/tests/bugs/gl-33.slang
index 10c9ea208..3050115e5 100644
--- a/tests/bugs/gl-33.slang
+++ b/tests/bugs/gl-33.slang
@@ -1,5 +1,5 @@
// gl-33.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test for GitLab issue # 33
diff --git a/tests/bugs/glsl-static-const-array.slang b/tests/bugs/glsl-static-const-array.slang
index 4d03d5ef8..f351af31b 100644
--- a/tests/bugs/glsl-static-const-array.slang
+++ b/tests/bugs/glsl-static-const-array.slang
@@ -1,6 +1,6 @@
// glsl-static-const-array.slang
-//TEST(compute):COMPARE_COMPUTE:-vk
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
static const int gData[4] =
{
diff --git a/tests/bugs/mutating/mutating-generic-method.slang b/tests/bugs/mutating/mutating-generic-method.slang
index 18f4d315b..625e70101 100644
--- a/tests/bugs/mutating/mutating-generic-method.slang
+++ b/tests/bugs/mutating/mutating-generic-method.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute,vulkan):COMPARE_COMPUTE_EX:-vk -slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute,vulkan):COMPARE_COMPUTE_EX:-vk -slang -compute -shaderobj
// Confirm that a generic method marked `[mutating]`
// produces an `inout` parameter for `this`.
@@ -38,7 +38,7 @@ int test(int val)
return r.state;
}
-//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name outputBuffer
RWStructuredBuffer<int> outputBuffer;
[numthreads(4, 1, 1)]
diff --git a/tests/bugs/negative-literal.slang b/tests/bugs/negative-literal.slang
index 586cd601c..66fc90edf 100644
--- a/tests/bugs/negative-literal.slang
+++ b/tests/bugs/negative-literal.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -compile-arg -O3
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -compile-arg -O3 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/bugs/nested-generics-call.slang b/tests/bugs/nested-generics-call.slang
index ba1566ec2..e3073e827 100644
--- a/tests/bugs/nested-generics-call.slang
+++ b/tests/bugs/nested-generics-call.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/bugs/nested-generics-method-call.slang b/tests/bugs/nested-generics-method-call.slang
index fa0a983b9..a3a9814d1 100644
--- a/tests/bugs/nested-generics-method-call.slang
+++ b/tests/bugs/nested-generics-method-call.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/bugs/paren-insertion-bug.slang b/tests/bugs/paren-insertion-bug.slang
index 790934372..dfbcd9a41 100644
--- a/tests/bugs/paren-insertion-bug.slang
+++ b/tests/bugs/paren-insertion-bug.slang
@@ -3,7 +3,7 @@
// Confirm that precedence is correctly handled
// for cast from scalar to vector.
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
int test(float a)
{
diff --git a/tests/bugs/specialize-function-array-args.slang b/tests/bugs/specialize-function-array-args.slang
index 6b7ec44b4..8a572eda4 100644
--- a/tests/bugs/specialize-function-array-args.slang
+++ b/tests/bugs/specialize-function-array-args.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute,vulkan):COMPARE_COMPUTE_EX:-vk -slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute,vulkan):COMPARE_COMPUTE_EX:-vk -slang -compute -shaderobj
// When a function is passed a parameter that contains an array, it specialized it as a performance
// improvement for VK. If the struct contained a structured buffer, though it meant that the
diff --git a/tests/bugs/ssa-loop.slang b/tests/bugs/ssa-loop.slang
index 722c40d98..4f15f8bed 100644
--- a/tests/bugs/ssa-loop.slang
+++ b/tests/bugs/ssa-loop.slang
@@ -2,7 +2,7 @@
// Bug related to SSA form for loops
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
int test(int val)
{
diff --git a/tests/bugs/static-method.slang b/tests/bugs/static-method.slang
index f95d40def..4f2d363f2 100644
--- a/tests/bugs/static-method.slang
+++ b/tests/bugs/static-method.slang
@@ -1,6 +1,6 @@
// static-method.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
struct S
{
diff --git a/tests/bugs/static-var.slang b/tests/bugs/static-var.slang
index 75662c7b5..004567466 100644
--- a/tests/bugs/static-var.slang
+++ b/tests/bugs/static-var.slang
@@ -1,5 +1,5 @@
// gh-775-ext.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
int test(int inVal)
{
diff --git a/tests/bugs/vec-compare.slang b/tests/bugs/vec-compare.slang
index 7a6d8388d..184e57a49 100644
--- a/tests/bugs/vec-compare.slang
+++ b/tests/bugs/vec-compare.slang
@@ -1,6 +1,6 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/bugs/while-in-generic.slang b/tests/bugs/while-in-generic.slang
index 4efa9a5d2..63a459eaa 100644
--- a/tests/bugs/while-in-generic.slang
+++ b/tests/bugs/while-in-generic.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
struct Context
{
int genFunc<TGenType>(TGenType t)
diff --git a/tests/compute/array-param.slang b/tests/compute/array-param.slang
index 5f5528a10..3545dd75f 100644
--- a/tests/compute/array-param.slang
+++ b/tests/compute/array-param.slang
@@ -1,8 +1,8 @@
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -compile-arg -O3
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -compile-arg -O3 -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/compute/assoctype-complex.slang b/tests/compute/assoctype-complex.slang
index 57b3b1b7f..bd53be485 100644
--- a/tests/compute/assoctype-complex.slang
+++ b/tests/compute/assoctype-complex.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE: -cpu
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/compute/assoctype-func-param.slang b/tests/compute/assoctype-func-param.slang
index 850b1f8f8..830cc00cc 100644
--- a/tests/compute/assoctype-func-param.slang
+++ b/tests/compute/assoctype-func-param.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:-cpu
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test type checking of associatedtype and typedef
diff --git a/tests/compute/assoctype-generic-arg.slang b/tests/compute/assoctype-generic-arg.slang
index c46712336..1015ef775 100644
--- a/tests/compute/assoctype-generic-arg.slang
+++ b/tests/compute/assoctype-generic-arg.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:-cpu
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:type AssocImpl
diff --git a/tests/compute/assoctype-lookup.slang b/tests/compute/assoctype-lookup.slang
index 1dccc8e12..e94c5471e 100644
--- a/tests/compute/assoctype-lookup.slang
+++ b/tests/compute/assoctype-lookup.slang
@@ -2,10 +2,10 @@
// Confirm that an associated type can be correctly looked up.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
interface IBoneWeightSet
{
diff --git a/tests/compute/assoctype-nested.slang b/tests/compute/assoctype-nested.slang
index af35839eb..7bb251a26 100644
--- a/tests/compute/assoctype-nested.slang
+++ b/tests/compute/assoctype-nested.slang
@@ -2,10 +2,10 @@
// Confirm that an associated type can be declared nested in its parent.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
interface IRandomGenerator
{
diff --git a/tests/compute/assoctype-simple.slang b/tests/compute/assoctype-simple.slang
index 4cdd148b7..be69a82cf 100644
--- a/tests/compute/assoctype-simple.slang
+++ b/tests/compute/assoctype-simple.slang
@@ -1,5 +1,5 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:-cpu
-//TEST(smoke,compute):COMPARE_COMPUTE:
+//TEST(smoke,compute):COMPARE_COMPUTE:-cpu -shaderobj
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
// Confirm that generics syntax can be used in user
// code and generates valid output.
diff --git a/tests/compute/atomics-buffer.slang b/tests/compute/atomics-buffer.slang
index cf92f1b21..e511ece04 100644
--- a/tests/compute/atomics-buffer.slang
+++ b/tests/compute/atomics-buffer.slang
@@ -1,14 +1,14 @@
// atomics-buffer.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
// Doesn't work on VK - GLSL output doesn't replace InterlockedAdd.
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -vk
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -vk -shaderobj
// Cannot work on CUDA, as outputBuffer becomes a CUsurfObject - which do not appear to have atomics available.
// If the buffer was a StructuredBuffer this would work on CUDA.
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda -shaderobj
// Atomics not available on CPU currently
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
//TEST_INPUT:ubuffer(format=R_UInt32, data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]):out,name outputBuffer
diff --git a/tests/compute/atomics-groupshared.slang b/tests/compute/atomics-groupshared.slang
index 9c3e1ab8d..5bb757082 100644
--- a/tests/compute/atomics-groupshared.slang
+++ b/tests/compute/atomics-groupshared.slang
@@ -1,9 +1,9 @@
// atomics-groupshared.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -vk
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/compute/atomics.slang b/tests/compute/atomics.slang
index cbd35d1dc..ca467c1fb 100644
--- a/tests/compute/atomics.slang
+++ b/tests/compute/atomics.slang
@@ -1,9 +1,9 @@
// atomics.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -vk
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name outputBuffer
diff --git a/tests/compute/break-stmt.slang b/tests/compute/break-stmt.slang
index 57521f217..b0c8a666c 100644
--- a/tests/compute/break-stmt.slang
+++ b/tests/compute/break-stmt.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:-cpu
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that `break` from a loop works.
diff --git a/tests/compute/buffer-layout.slang b/tests/compute/buffer-layout.slang
index a846ce366..5caacff31 100644
--- a/tests/compute/buffer-layout.slang
+++ b/tests/compute/buffer-layout.slang
@@ -3,10 +3,10 @@
// The goal of this test is to make sure that constant and structured
// buffers obey the rules we expect of the each target API.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/compute/buffer-type-splitting.slang b/tests/compute/buffer-type-splitting.slang
index f1b74f7ce..d9fee4254 100644
--- a/tests/compute/buffer-type-splitting.slang
+++ b/tests/compute/buffer-type-splitting.slang
@@ -1,5 +1,5 @@
//TEST(compute):COMPARE_COMPUTE:-cpu
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
//TEST_INPUT:ubuffer(data=[0 2 3 3]):name=s[0].a
diff --git a/tests/compute/byte-address-buffer.slang b/tests/compute/byte-address-buffer.slang
index 96e100ae8..462002edf 100644
--- a/tests/compute/byte-address-buffer.slang
+++ b/tests/compute/byte-address-buffer.slang
@@ -1,9 +1,9 @@
// byte-address-buffer.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -shaderobj
// Confirm cross-compilation of `(RW)ByteAddressBuffer`
//
diff --git a/tests/compute/cast-zero-to-struct.slang b/tests/compute/cast-zero-to-struct.slang
index ec3dd6472..383662420 100644
--- a/tests/compute/cast-zero-to-struct.slang
+++ b/tests/compute/cast-zero-to-struct.slang
@@ -3,8 +3,8 @@
// Test that HLSL legacy syntax for casting from literal zero
// to a `struct` type works.
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
struct S
{
diff --git a/tests/compute/cbuffer-legalize.slang b/tests/compute/cbuffer-legalize.slang
index 416eded1e..3941a8de3 100644
--- a/tests/compute/cbuffer-legalize.slang
+++ b/tests/compute/cbuffer-legalize.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
//TEST(compute):COMPARE_COMPUTE:-shaderobj
//TEST_INPUT: Uniform(data=[1 2 3 4]):name=C.p.c
diff --git a/tests/compute/comma-operator.slang b/tests/compute/comma-operator.slang
index 1036482ef..c6cecf1c7 100644
--- a/tests/compute/comma-operator.slang
+++ b/tests/compute/comma-operator.slang
@@ -1,7 +1,7 @@
// comma-operator.slang
-//TEST(compute):COMPARE_COMPUTE:-cpu
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that the "comma operator" behaves as expected
diff --git a/tests/compute/compile-time-loop.slang b/tests/compute/compile-time-loop.slang
index 128e72895..5b9dd010b 100644
--- a/tests/compute/compile-time-loop.slang
+++ b/tests/compute/compile-time-loop.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_RENDER_COMPUTE:
+//TEST(compute):COMPARE_RENDER_COMPUTE: -shaderobj
//TEST_INPUT: Texture2D(size=4, content = one):name t
//TEST_INPUT: Sampler:name s
diff --git a/tests/compute/constexpr.slang b/tests/compute/constexpr.slang
index cb14b1a9c..0d46d81a5 100644
--- a/tests/compute/constexpr.slang
+++ b/tests/compute/constexpr.slang
@@ -1,6 +1,6 @@
// constexpr.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -gcompute
-//DISABLED://TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -gcompute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -gcompute -shaderobj
+//DISABLED://TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -gcompute -shaderobj
//TEST_INPUT: Texture2D(size=4, content = one):name tex
//TEST_INPUT: Sampler:name samp
diff --git a/tests/compute/continue-stmt.slang b/tests/compute/continue-stmt.slang
index 1501173f6..50d8141bc 100644
--- a/tests/compute/continue-stmt.slang
+++ b/tests/compute/continue-stmt.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Test that `break` from a loop works.
diff --git a/tests/compute/default-initializer.slang b/tests/compute/default-initializer.slang
index 1cda60084..dab195d25 100644
--- a/tests/compute/default-initializer.slang
+++ b/tests/compute/default-initializer.slang
@@ -3,8 +3,8 @@
// Confirm that a type with a default initializer gets
// default-initialized where appropriate.
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
struct Stuff
{
diff --git a/tests/compute/default-parameter.slang b/tests/compute/default-parameter.slang
index 31cfa8f6a..1334aa6a3 100644
--- a/tests/compute/default-parameter.slang
+++ b/tests/compute/default-parameter.slang
@@ -1,6 +1,6 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/compute/discard-stmt.slang b/tests/compute/discard-stmt.slang
index 1af42c6a0..d6c902ec9 100644
--- a/tests/compute/discard-stmt.slang
+++ b/tests/compute/discard-stmt.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_RENDER_COMPUTE:
+//TEST(compute):COMPARE_RENDER_COMPUTE: -shaderobj
//TEST_INPUT: Texture2D(size=4, content = one):name tex
//TEST_INPUT: Sampler:name samp
//TEST_INPUT: ubuffer(data=[0 0], stride=4):out,name outputBuffer
diff --git a/tests/compute/dump-repro.slang b/tests/compute/dump-repro.slang
index 90a9578fa..9065c29fc 100644
--- a/tests/compute/dump-repro.slang
+++ b/tests/compute/dump-repro.slang
@@ -1,8 +1,8 @@
//DISABLE_TEST(compute):SIMPLE:-profile cs_5_0 -entry computeMain -target dxbc -dump-repro repro.slang-repro
//TEST:COMPILE:tests/compute/dump-repro.slang -profile cs_5_0 -entry computeMain -target dxbc -dump-repro repro.slang-repro
-//TEST(compute):COMPARE_COMPUTE_EX:-dx11 -compute -no-default-entry-point -compile-arg -load-repro -compile-arg repro.slang-repro
+//TEST(compute):COMPARE_COMPUTE_EX:-dx11 -compute -no-default-entry-point -compile-arg -load-repro -compile-arg repro.slang-repro -shaderobj
// We only want to run on one API to test load worked
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-dx12 -load-repro repro.slang-repro
+//DISABLE_TEST(compute):COMPARE_COMPUTE:-dx12 -load-repro repro.slang-repro -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/compute/dynamic-dispatch-1.slang b/tests/compute/dynamic-dispatch-1.slang
index 554455fcf..10d3552ab 100644
--- a/tests/compute/dynamic-dispatch-1.slang
+++ b/tests/compute/dynamic-dispatch-1.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for non-static member functions.
diff --git a/tests/compute/dynamic-dispatch-10.slang b/tests/compute/dynamic-dispatch-10.slang
index 4f5d368e8..ddd51c4b9 100644
--- a/tests/compute/dynamic-dispatch-10.slang
+++ b/tests/compute/dynamic-dispatch-10.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for specializing a generic with
// an existential value.
diff --git a/tests/compute/dynamic-dispatch-11.slang b/tests/compute/dynamic-dispatch-11.slang
index 379cf62d8..daebff39a 100644
--- a/tests/compute/dynamic-dispatch-11.slang
+++ b/tests/compute/dynamic-dispatch-11.slang
@@ -1,9 +1,9 @@
// Test using interface typed shader parameters with dynamic dispatch.
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
[anyValueSize(8)]
interface IInterface
diff --git a/tests/compute/dynamic-dispatch-12.slang b/tests/compute/dynamic-dispatch-12.slang
index 11bfcc1eb..e77b111fd 100644
--- a/tests/compute/dynamic-dispatch-12.slang
+++ b/tests/compute/dynamic-dispatch-12.slang
@@ -1,9 +1,9 @@
// Test using interface typed shader parameters with dynamic dispatch.
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-cpu
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cuda
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -shaderobj
[anyValueSize(8)]
interface IInterface
diff --git a/tests/compute/dynamic-dispatch-13.slang b/tests/compute/dynamic-dispatch-13.slang
index e80e5ce5f..b88ad2636 100644
--- a/tests/compute/dynamic-dispatch-13.slang
+++ b/tests/compute/dynamic-dispatch-13.slang
@@ -1,9 +1,9 @@
// Test using interface typed shader parameters wrapped inside a `StructuredBuffer`.
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
//TEST(compute):COMPARE_COMPUTE:-dx11
//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cuda
+//TEST(compute):COMPARE_COMPUTE:-cuda -shaderobj
[anyValueSize(8)]
interface IInterface
diff --git a/tests/compute/dynamic-dispatch-14.slang b/tests/compute/dynamic-dispatch-14.slang
index 35da4bd06..354006012 100644
--- a/tests/compute/dynamic-dispatch-14.slang
+++ b/tests/compute/dynamic-dispatch-14.slang
@@ -1,9 +1,9 @@
// Test using interface typed shader parameters with associated types.
//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cuda
+//TEST(compute):COMPARE_COMPUTE:-cuda -shaderobj
[anyValueSize(8)]
interface IAssoc
diff --git a/tests/compute/dynamic-dispatch-2.slang b/tests/compute/dynamic-dispatch-2.slang
index e71a17b5c..06aed6e71 100644
--- a/tests/compute/dynamic-dispatch-2.slang
+++ b/tests/compute/dynamic-dispatch-2.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for static member functions
// of associated type.
diff --git a/tests/compute/dynamic-dispatch-3.slang b/tests/compute/dynamic-dispatch-3.slang
index 59b1beed9..94430e638 100644
--- a/tests/compute/dynamic-dispatch-3.slang
+++ b/tests/compute/dynamic-dispatch-3.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for static member functions
// of associated type.
diff --git a/tests/compute/dynamic-dispatch-4.slang b/tests/compute/dynamic-dispatch-4.slang
index 8945578a4..996e70665 100644
--- a/tests/compute/dynamic-dispatch-4.slang
+++ b/tests/compute/dynamic-dispatch-4.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for generic-typed local variables.
diff --git a/tests/compute/dynamic-dispatch-5.slang b/tests/compute/dynamic-dispatch-5.slang
index 385f3d4c8..61d4024af 100644
--- a/tests/compute/dynamic-dispatch-5.slang
+++ b/tests/compute/dynamic-dispatch-5.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for general `This` type.
[anyValueSize(8)]
diff --git a/tests/compute/dynamic-dispatch-6.slang b/tests/compute/dynamic-dispatch-6.slang
index 536c960ee..69edb51bc 100644
--- a/tests/compute/dynamic-dispatch-6.slang
+++ b/tests/compute/dynamic-dispatch-6.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for generic-typed return values.
[anyValueSize(8)]
diff --git a/tests/compute/dynamic-dispatch-7.slang b/tests/compute/dynamic-dispatch-7.slang
index 539a8719d..7f516b0d5 100644
--- a/tests/compute/dynamic-dispatch-7.slang
+++ b/tests/compute/dynamic-dispatch-7.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for associated-typed return values
// and local variables.
diff --git a/tests/compute/dynamic-dispatch-8.slang b/tests/compute/dynamic-dispatch-8.slang
index 194093009..62d3f0a9d 100644
--- a/tests/compute/dynamic-dispatch-8.slang
+++ b/tests/compute/dynamic-dispatch-8.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for extential type parameters.
diff --git a/tests/compute/dynamic-dispatch-9.slang b/tests/compute/dynamic-dispatch-9.slang
index 8c3dab041..77112a318 100644
--- a/tests/compute/dynamic-dispatch-9.slang
+++ b/tests/compute/dynamic-dispatch-9.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-dx11
-//TEST(compute):COMPARE_COMPUTE:-vk
-//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization
-//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization
+//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
// Test dynamic dispatch code gen for initializing an extential value
// from a generic value.
diff --git a/tests/compute/empty-struct.slang b/tests/compute/empty-struct.slang
index 53c19384f..17e86b3c1 100644
--- a/tests/compute/empty-struct.slang
+++ b/tests/compute/empty-struct.slang
@@ -1,5 +1,5 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:
-//TEST(smoke,compute):COMPARE_COMPUTE:-cpu
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
+//TEST(smoke,compute):COMPARE_COMPUTE:-cpu -shaderobj
// Confirm that generics syntax can be used in user
// code and generates valid output.
diff --git a/tests/compute/empty-struct2.slang b/tests/compute/empty-struct2.slang
index 0f65a39b3..27e587b42 100644
--- a/tests/compute/empty-struct2.slang
+++ b/tests/compute/empty-struct2.slang
@@ -1,5 +1,5 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:
-//TEST(smoke,compute):COMPARE_COMPUTE:-cpu
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
+//TEST(smoke,compute):COMPARE_COMPUTE:-cpu -shaderobj
// This is a basic test for Slang compute shader.
diff --git a/tests/compute/enum-conversion2.slang b/tests/compute/enum-conversion2.slang
index 13d807277..07b1a4315 100644
--- a/tests/compute/enum-conversion2.slang
+++ b/tests/compute/enum-conversion2.slang
@@ -1,8 +1,8 @@
// enum-conversion2.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// More significant stress testing of `enum` types
diff --git a/tests/compute/enum-tag-conversion.slang b/tests/compute/enum-tag-conversion.slang
index a5dcf2a69..e972860a0 100644
--- a/tests/compute/enum-tag-conversion.slang
+++ b/tests/compute/enum-tag-conversion.slang
@@ -1,8 +1,8 @@
// enum-tag-conversion.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// Confirm that a value of `enum` type can have an initializer
// that includes basic operations like type conversion.
diff --git a/tests/compute/enum.slang b/tests/compute/enum.slang
index f38adbc94..cae18404e 100644
--- a/tests/compute/enum.slang
+++ b/tests/compute/enum.slang
@@ -1,7 +1,7 @@
// enum.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// Confirm that basic `enum` declarations are supported.
diff --git a/tests/compute/explicit-this-expr.slang b/tests/compute/explicit-this-expr.slang
index c55bb70ff..baf718be0 100644
--- a/tests/compute/explicit-this-expr.slang
+++ b/tests/compute/explicit-this-expr.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Access fields of a `struct` type from within a "method" by
diff --git a/tests/compute/extension-multi-interface.slang b/tests/compute/extension-multi-interface.slang
index cde6c4a5a..23c917411 100644
--- a/tests/compute/extension-multi-interface.slang
+++ b/tests/compute/extension-multi-interface.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/compute/frem.slang b/tests/compute/frem.slang
index 848f0513a..75207a8d0 100644
--- a/tests/compute/frem.slang
+++ b/tests/compute/frem.slang
@@ -1,8 +1,8 @@
// frem.slang
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
-//TEST(compute):COMPARE_COMPUTE:-vk
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
// Test uses of floating-point `%` operator.
diff --git a/tests/compute/func-cbuffer-param.slang b/tests/compute/func-cbuffer-param.slang
index a67c9ca00..ec9543334 100644
--- a/tests/compute/func-cbuffer-param.slang
+++ b/tests/compute/func-cbuffer-param.slang
@@ -5,10 +5,10 @@
// This has a compatibility issue on Windows 10.0.10586 on Dx12 - dxcompiler will crash (can remove form tests with -exclude compatibility-issue)
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan, compatibility-issue):COMPARE_COMPUTE_EX:-dx12 -compute -use-dxil
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan, compatibility-issue):COMPARE_COMPUTE_EX:-dx12 -compute -use-dxil -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
struct Data
{
diff --git a/tests/compute/func-param-legalize.slang b/tests/compute/func-param-legalize.slang
index 877324ac7..2d7c57e9f 100644
--- a/tests/compute/func-param-legalize.slang
+++ b/tests/compute/func-param-legalize.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
struct Param
{
diff --git a/tests/compute/func-resource-param.slang b/tests/compute/func-resource-param.slang
index 570501c50..4b67c909e 100644
--- a/tests/compute/func-resource-param.slang
+++ b/tests/compute/func-resource-param.slang
@@ -4,10 +4,10 @@
// requires non-trivial legalization can be compiled
// to work on GLSL-based targets.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-dx12 -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-dx12 -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
//NO_TEST:SIMPLE:-target glsl -entry computeMain -stage compute -validate-ir -dump-ir
diff --git a/tests/compute/generic-closer.slang b/tests/compute/generic-closer.slang
index 428174d1c..377b42dab 100644
--- a/tests/compute/generic-closer.slang
+++ b/tests/compute/generic-closer.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
interface IGetter
{
diff --git a/tests/compute/generic-interface-method-simple.slang b/tests/compute/generic-interface-method-simple.slang
index 8a3207671..0e20947d1 100644
--- a/tests/compute/generic-interface-method-simple.slang
+++ b/tests/compute/generic-interface-method-simple.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/compute/generic-interface-method.slang b/tests/compute/generic-interface-method.slang
index 47fa94f89..fade14d41 100644
--- a/tests/compute/generic-interface-method.slang
+++ b/tests/compute/generic-interface-method.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/compute/generic-list.slang b/tests/compute/generic-list.slang
index cf2433ebc..9fdf67535 100644
--- a/tests/compute/generic-list.slang
+++ b/tests/compute/generic-list.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Confirm that generics syntax can be used in user
// code and generates valid output.
diff --git a/tests/compute/generic-struct-with-constraint.slang b/tests/compute/generic-struct-with-constraint.slang
index 1263a7548..b17e2b05e 100644
--- a/tests/compute/generic-struct-with-constraint.slang
+++ b/tests/compute/generic-struct-with-constraint.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Confirm that generics syntax can be used in user
// code and generates valid output.
diff --git a/tests/compute/generic-struct.slang b/tests/compute/generic-struct.slang
index 7e0496c5f..2ccf9631e 100644
--- a/tests/compute/generic-struct.slang
+++ b/tests/compute/generic-struct.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Check that user code can declare and use a generic
// `struct` type.
diff --git a/tests/compute/generics-constrained.slang b/tests/compute/generics-constrained.slang
index 72d6b4777..435b840d1 100644
--- a/tests/compute/generics-constrained.slang
+++ b/tests/compute/generics-constrained.slang
@@ -1,5 +1,5 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:
-//TEST(smoke,compute):COMPARE_COMPUTE:-cpu
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
+//TEST(smoke,compute):COMPARE_COMPUTE:-cpu -shaderobj
// Use interface constraints on a generic parameter
diff --git a/tests/compute/generics-constructor.slang b/tests/compute/generics-constructor.slang
index 0439856cb..65fad20c0 100644
--- a/tests/compute/generics-constructor.slang
+++ b/tests/compute/generics-constructor.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/compute/generics-overload.slang b/tests/compute/generics-overload.slang
index 05bb075e7..b9753aff1 100644
--- a/tests/compute/generics-overload.slang
+++ b/tests/compute/generics-overload.slang
@@ -1,5 +1,5 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:
-//TEST(smoke,compute):COMPARE_COMPUTE:-cpu
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
+//TEST(smoke,compute):COMPARE_COMPUTE:-cpu -shaderobj
// Confirm that generics syntax can be used in user
// code and generates valid output.
diff --git a/tests/compute/generics-simple.slang b/tests/compute/generics-simple.slang
index dd1ffa932..76c1167ce 100644
--- a/tests/compute/generics-simple.slang
+++ b/tests/compute/generics-simple.slang
@@ -1,5 +1,5 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:
-//TEST(smoke,compute):COMPARE_COMPUTE:-cpu
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
+//TEST(smoke,compute):COMPARE_COMPUTE:-cpu -shaderobj
// Confirm that generics syntax can be used in user
// code and generates valid output.
diff --git a/tests/compute/generics-syntax-2.slang b/tests/compute/generics-syntax-2.slang
index 3f83528a5..71603ba47 100644
--- a/tests/compute/generics-syntax-2.slang
+++ b/tests/compute/generics-syntax-2.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Confirm that generics syntax can be used in user
// code and generates valid output.
diff --git a/tests/compute/generics-syntax.slang b/tests/compute/generics-syntax.slang
index d0f3d6eb4..1d9de89a9 100644
--- a/tests/compute/generics-syntax.slang
+++ b/tests/compute/generics-syntax.slang
@@ -1,5 +1,5 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:
-//TEST(smoke,compute):COMPARE_COMPUTE:-cpu
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
+//TEST(smoke,compute):COMPARE_COMPUTE:-cpu -shaderobj
// Confirm that generics syntax can be used in user
// code and generates valid output.
diff --git a/tests/compute/global-generic-value-param.slang b/tests/compute/global-generic-value-param.slang
index d2299e501..dd1b091c1 100644
--- a/tests/compute/global-generic-value-param.slang
+++ b/tests/compute/global-generic-value-param.slang
@@ -1,6 +1,6 @@
// global-generic-value-param.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// This is a basic test of support for global generic
// value parameters: explicit named parameters at global
diff --git a/tests/compute/global-init.slang b/tests/compute/global-init.slang
index 42e8ff30b..fd7937cf0 100644
--- a/tests/compute/global-init.slang
+++ b/tests/compute/global-init.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Test that a global variable (not a shader parameter)
// with an initializer works.
diff --git a/tests/compute/global-type-param-in-entrypoint.slang b/tests/compute/global-type-param-in-entrypoint.slang
index b2a1146d8..a82cd88bc 100644
--- a/tests/compute/global-type-param-in-entrypoint.slang
+++ b/tests/compute/global-type-param-in-entrypoint.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_RENDER_COMPUTE:
+//TEST(compute):COMPARE_RENDER_COMPUTE: -shaderobj
//TEST_INPUT: cbuffer(data=[1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0], stride=16):name Uniforms
//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/compute/global-type-param.slang b/tests/compute/global-type-param.slang
index ecaa26096..7a3e31187 100644
--- a/tests/compute/global-type-param.slang
+++ b/tests/compute/global-type-param.slang
@@ -1,4 +1,4 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:type Wrapper<Impl>
diff --git a/tests/compute/groupshared.slang b/tests/compute/groupshared.slang
index ec7e055c5..7a49ab82b 100644
--- a/tests/compute/groupshared.slang
+++ b/tests/compute/groupshared.slang
@@ -1,9 +1,9 @@
// groupshared.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name=gBuffer
RWStructuredBuffer<int> gBuffer;
diff --git a/tests/compute/half-calc.slang b/tests/compute/half-calc.slang
index b9ed7c439..57efebe53 100644
--- a/tests/compute/half-calc.slang
+++ b/tests/compute/half-calc.slang
@@ -1,5 +1,5 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-dx12 -compute -use-dxil -profile cs_6_2 -render-features half
-//TEST(compute):COMPARE_COMPUTE:-vk -compute -profile cs_6_2 -render-features half
+//DISABLE_TEST(compute):COMPARE_COMPUTE:-dx12 -compute -use-dxil -profile cs_6_2 -render-features half -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -compute -profile cs_6_2 -render-features half -shaderobj
// Test for doing a calculation using half
diff --git a/tests/compute/half-structured-buffer.slang b/tests/compute/half-structured-buffer.slang
index abccfb32a..db0837d53 100644
--- a/tests/compute/half-structured-buffer.slang
+++ b/tests/compute/half-structured-buffer.slang
@@ -1,6 +1,6 @@
-//TEST(compute):COMPARE_COMPUTE:-vk -compute -profile cs_6_2 -render-features half
+//TEST(compute):COMPARE_COMPUTE:-vk -compute -profile cs_6_2 -render-features half -shaderobj
//Disable on Dx12 for now - because writing to structured buffer produces unexpected results
-//TEST_DISABLED(compute):COMPARE_COMPUTE:-dx12 -compute -use-dxil -profile cs_6_2 -render-features half
+//TEST_DISABLED(compute):COMPARE_COMPUTE:-dx12 -compute -use-dxil -profile cs_6_2 -render-features half -shaderobj
struct Thing
{
diff --git a/tests/compute/half-texture.slang b/tests/compute/half-texture.slang
index b4dafac99..1cb73dadd 100644
--- a/tests/compute/half-texture.slang
+++ b/tests/compute/half-texture.slang
@@ -1,5 +1,5 @@
//TEST:CROSS_COMPILE: -target spirv -entry computeMain -profile cs_6_2
-//TEST:SIMPLE: -target hlsl -entry computeMain -profile cs_6_2
+//TEST:SIMPLE: -target hlsl -entry computeMain -profile cs_6_2
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=16):out
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/compute/implicit-generic-app.slang b/tests/compute/implicit-generic-app.slang
index 6c2658372..c41b5e31d 100644
--- a/tests/compute/implicit-generic-app.slang
+++ b/tests/compute/implicit-generic-app.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Testing that we can implicitly specialize a generic
// that has a constrained type parameter.
diff --git a/tests/compute/implicit-this-expr.slang b/tests/compute/implicit-this-expr.slang
index 9a77b6a4f..e8b720093 100644
--- a/tests/compute/implicit-this-expr.slang
+++ b/tests/compute/implicit-this-expr.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Access fields of a `struct` type from within a "method" by
// using an implicit `this` expression.
diff --git a/tests/compute/init-list-defaults.slang b/tests/compute/init-list-defaults.slang
index fa7ef5c8e..049450109 100644
--- a/tests/compute/init-list-defaults.slang
+++ b/tests/compute/init-list-defaults.slang
@@ -1,6 +1,6 @@
// init-list-defaults.slang
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Confirm that initializer lists correctly default-initialize elements past those specified.
diff --git a/tests/compute/initializer-list.slang b/tests/compute/initializer-list.slang
index 6dde8694e..85ad0d8cf 100644
--- a/tests/compute/initializer-list.slang
+++ b/tests/compute/initializer-list.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
struct Test
{
diff --git a/tests/compute/inout.slang b/tests/compute/inout.slang
index e1af8b256..186bcd3db 100644
--- a/tests/compute/inout.slang
+++ b/tests/compute/inout.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Test that we correctly support both `out`
// and `inout` function parameters.
diff --git a/tests/compute/int-generic.slang b/tests/compute/int-generic.slang
index 2d3c57575..7d693e42b 100644
--- a/tests/compute/int-generic.slang
+++ b/tests/compute/int-generic.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:type Material<1,2>
diff --git a/tests/compute/interface-assoc-type-param.slang b/tests/compute/interface-assoc-type-param.slang
index d43a43fc9..4e6df4eb5 100644
--- a/tests/compute/interface-assoc-type-param.slang
+++ b/tests/compute/interface-assoc-type-param.slang
@@ -1,7 +1,7 @@
// Tests using associated types through an existential-struct-typed param.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
[anyValueSize(8)]
interface IInterface
diff --git a/tests/compute/interface-func-param-in-struct.slang b/tests/compute/interface-func-param-in-struct.slang
index 550758f38..c32254cb5 100644
--- a/tests/compute/interface-func-param-in-struct.slang
+++ b/tests/compute/interface-func-param-in-struct.slang
@@ -1,7 +1,7 @@
// Tests specializing a function with existential-struct-typed param.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
[anyValueSize(8)]
interface IInterface
diff --git a/tests/compute/interface-local.slang b/tests/compute/interface-local.slang
index 6e42d30ab..714a72cca 100644
--- a/tests/compute/interface-local.slang
+++ b/tests/compute/interface-local.slang
@@ -10,10 +10,10 @@
// on a generic type parameter.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
interface IHelper
diff --git a/tests/compute/interface-param-partial-specialize.slang b/tests/compute/interface-param-partial-specialize.slang
index e856e04e8..f81a1cdb7 100644
--- a/tests/compute/interface-param-partial-specialize.slang
+++ b/tests/compute/interface-param-partial-specialize.slang
@@ -3,8 +3,8 @@
// with __Dynamic. This verifies that the handling of
// "partially" specializing an existential type is correct.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
[anyValueSize(8)]
interface IInterface
diff --git a/tests/compute/interface-param.slang b/tests/compute/interface-param.slang
index 18edbe3be..3f557d8de 100644
--- a/tests/compute/interface-param.slang
+++ b/tests/compute/interface-param.slang
@@ -4,10 +4,10 @@
// for a value parameter, instead of just as a constraint
// on a generic type parameter.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
interface IHelper
{
diff --git a/tests/compute/interface-static-method.slang b/tests/compute/interface-static-method.slang
index bdfddd938..d526f7c47 100644
--- a/tests/compute/interface-static-method.slang
+++ b/tests/compute/interface-static-method.slang
@@ -1,9 +1,9 @@
// interface-static-method.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
interface IHideout
{
diff --git a/tests/compute/loop-unroll.slang b/tests/compute/loop-unroll.slang
index 25f25b0ec..9a3fa3ba4 100644
--- a/tests/compute/loop-unroll.slang
+++ b/tests/compute/loop-unroll.slang
@@ -1,11 +1,11 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-dx12
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-dx12 -shaderobj
//TODO(JS): This test fails with a crash in CreateComputePipelineState, so disabled for now
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-dx12 -use-dxil
-//TEST(compute):COMPARE_COMPUTE:-cpu
-//TEST(compute):COMPARE_COMPUTE:-cuda
+//DISABLE_TEST(compute):COMPARE_COMPUTE:-dx12 -use-dxil -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cuda -shaderobj
// Note VK output is not loop unrolled
-//TEST(compute):COMPARE_COMPUTE:-vk
+//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name buffers[0]
//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):name buffers[1]
diff --git a/tests/compute/matrix-layout-structured-buffer.slang b/tests/compute/matrix-layout-structured-buffer.slang
index 56112f959..bdc2e1ced 100644
--- a/tests/compute/matrix-layout-structured-buffer.slang
+++ b/tests/compute/matrix-layout-structured-buffer.slang
@@ -5,8 +5,8 @@
// buffers of matrices, where fxc/dxc do *not* respect
// the matrix layout mode by default.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-column-major
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-column-major -shaderobj
//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23], stride=48):name=gMatrices
RWStructuredBuffer<int3x4> gMatrices;
diff --git a/tests/compute/matrix-layout.hlsl b/tests/compute/matrix-layout.hlsl
index a7a167926..c655d06c7 100644
--- a/tests/compute/matrix-layout.hlsl
+++ b/tests/compute/matrix-layout.hlsl
@@ -7,8 +7,8 @@
// This has a compatibility issue on Windows 10.0.10586 on Dx12 - dxcompiler will crash (can remove form tests with -exclude compatibility-issue)
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major
-//TEST(compute,compatibility-issue):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -xslang -matrix-layout-row-major
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute,compatibility-issue):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -xslang -matrix-layout-row-major -shaderobj
// Not testing on Vulkan because of lack of support
// for integer matrices in GLSL. Slang needs to
diff --git a/tests/compute/modern-syntax.slang b/tests/compute/modern-syntax.slang
index 4f7b94f01..e1a9ad146 100644
--- a/tests/compute/modern-syntax.slang
+++ b/tests/compute/modern-syntax.slang
@@ -1,6 +1,6 @@
// modern-syntax.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute -shaderobj
// This file exists to confirm that declarations using "modern"
// syntax are handled correctly by the compiler front-end.
diff --git a/tests/compute/multi-interface.slang b/tests/compute/multi-interface.slang
index bcb25b6dc..caa21d3f0 100644
--- a/tests/compute/multi-interface.slang
+++ b/tests/compute/multi-interface.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/compute/multiple-continue-sites.slang b/tests/compute/multiple-continue-sites.slang
index d5cbf926b..0776bfbdb 100644
--- a/tests/compute/multiple-continue-sites.slang
+++ b/tests/compute/multiple-continue-sites.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Test that a loop with multiple `continue` sites works.
//
diff --git a/tests/compute/mutating-and-inout.slang b/tests/compute/mutating-and-inout.slang
index d06933b77..a92be2025 100644
--- a/tests/compute/mutating-and-inout.slang
+++ b/tests/compute/mutating-and-inout.slang
@@ -2,7 +2,7 @@
// Test that calling a `[mutating]` method on an `inout` function parameter works.
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/compute/mutating-methods.slang b/tests/compute/mutating-methods.slang
index c386da67f..73be4b604 100644
--- a/tests/compute/mutating-methods.slang
+++ b/tests/compute/mutating-methods.slang
@@ -1,8 +1,8 @@
// mutating-methods.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -serial-ir
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -xslang -serial-ir
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -serial-ir
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -xslang -serial-ir
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -serial-ir -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -xslang -serial-ir -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -serial-ir -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -xslang -serial-ir -shaderobj
interface IAccumulator
{
diff --git a/tests/compute/nested-generics.slang b/tests/compute/nested-generics.slang
index e1b62a2ad..29f260f37 100644
--- a/tests/compute/nested-generics.slang
+++ b/tests/compute/nested-generics.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// test specialization of nested generic functions
diff --git a/tests/compute/nested-generics2.slang b/tests/compute/nested-generics2.slang
index c1b12179c..177466c9c 100644
--- a/tests/compute/nested-generics2.slang
+++ b/tests/compute/nested-generics2.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// test specialization of nested generic functions
diff --git a/tests/compute/performance-profile.slang b/tests/compute/performance-profile.slang
index 22f73e075..d8b9e31ae 100644
--- a/tests/compute/performance-profile.slang
+++ b/tests/compute/performance-profile.slang
@@ -1,8 +1,8 @@
-//TEST(compute):PERFORMANCE_PROFILE:-cpu -compute -compile-arg -O3 -compute-dispatch 256,1,1
-//TEST(compute):PERFORMANCE_PROFILE:-cpu -compute -source-language cpp -compile-arg -O3 -compute-dispatch 256,1,1
-//TEST(compute):PERFORMANCE_PROFILE:-slang -compute -compute-dispatch 256,1,1
-//TEST(compute):PERFORMANCE_PROFILE:-slang -compute -dx12 -compute-dispatch 256,1,1
-//TEST(compute, vulkan):PERFORMANCE_PROFILE:-vk -compute -compute-dispatch 256,1,1
+//TEST(compute):PERFORMANCE_PROFILE:-cpu -compute -compile-arg -O3 -compute-dispatch 256,1,1 -shaderobj
+//TEST(compute):PERFORMANCE_PROFILE:-cpu -compute -source-language cpp -compile-arg -O3 -compute-dispatch 256,1,1 -shaderobj
+//TEST(compute):PERFORMANCE_PROFILE:-slang -compute -compute-dispatch 256,1,1 -shaderobj
+//TEST(compute):PERFORMANCE_PROFILE:-slang -compute -dx12 -compute-dispatch 256,1,1 -shaderobj
+//TEST(compute, vulkan):PERFORMANCE_PROFILE:-vk -compute -compute-dispatch 256,1,1 -shaderobj
//TEST_INPUT:ubuffer(random(float, 4096, -1, 1), stride=4):out,name outputBuffer
diff --git a/tests/compute/pointer-emit.slang b/tests/compute/pointer-emit.slang
index 1c31103ae..0516e2dfa 100644
--- a/tests/compute/pointer-emit.slang
+++ b/tests/compute/pointer-emit.slang
@@ -1,4 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
// Test emitting logic of pointer types.
diff --git a/tests/compute/rewriter-parameter-block-complex.hlsl b/tests/compute/rewriter-parameter-block-complex.hlsl
index efcf89b24..d61383276 100644
--- a/tests/compute/rewriter-parameter-block-complex.hlsl
+++ b/tests/compute/rewriter-parameter-block-complex.hlsl
@@ -1,12 +1,18 @@
//TEST(compute):COMPARE_COMPUTE:
-//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out
-
-//TEST_INPUT:cbuffer(data=[256]):
-//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):
-
-//TEST_INPUT:cbuffer(data=[4096]):
-//TEST_INPUT:ubuffer(data=[16 32 48 64], stride=4):
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name=outputBuffer
+
+//TEST_INPUT:cbuffer(data=[256]):name=C.gA.val
+//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):name=C.gA.buf
+//TEST_INPUT:cbuffer(data=[4096]):name=C.gB.val
+//TEST_INPUT:ubuffer(data=[16 32 48 64], stride=4):name=C.gB.buf
+
+//TODO_TEST_INPUT:object:name=C
+//TODO_TEST_INPUT:object:name=C.gA
+//TODO_TEST_INPUT:root_constants(data=[256]):name=C.gA.val
+//TODO_TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):name=C.gA.buf
+//TODO_TEST_INPUT:root_constants(data=[4096]):name=C.gB.val
+//TODO_TEST_INPUT:ubuffer(data=[16 32 48 64], stride=4):name=C.gB.buf
// Test that we can declare a `ParameterBlock<...>` type as a shader
// parameter (potentially nested inside a `cbuffer`) and use it in
diff --git a/tests/compute/rw-texture-simple.slang b/tests/compute/rw-texture-simple.slang
index a6632a143..a5a103200 100644
--- a/tests/compute/rw-texture-simple.slang
+++ b/tests/compute/rw-texture-simple.slang
@@ -1,13 +1,13 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj
// Doesn't work on DX11 currently - locks up on binding
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj
// Produces a different result on DX12 with DXBC than expected(!). So disabled for now
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -output-using-type
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -output-using-type -shaderobj
// TODO(JS): Doesn't work on vk currently, because createTextureView not implemented on vk renderer
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
// TODO(JS): Doesn't work on certain CI systems.
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -shaderobj
//TEST_INPUT: RWTexture1D(format=R_Float32, size=4, content = one):name rwt1D
RWTexture1D<float> rwt1D;
diff --git a/tests/compute/scope-operator.slang b/tests/compute/scope-operator.slang
index eb65d7d2a..9b5b3f229 100644
--- a/tests/compute/scope-operator.slang
+++ b/tests/compute/scope-operator.slang
@@ -1,7 +1,7 @@
// scope.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// Confirm that scoping on enums and types works
diff --git a/tests/compute/select-expr.slang b/tests/compute/select-expr.slang
index 85963ca5e..c7172579b 100644
--- a/tests/compute/select-expr.slang
+++ b/tests/compute/select-expr.slang
@@ -1,5 +1,5 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:
-//TEST(smoke,compute):COMPARE_COMPUTE:-cpu
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
+//TEST(smoke,compute):COMPARE_COMPUTE:-cpu -shaderobj
// Test IR code generation for the `?:` "select" operator
diff --git a/tests/compute/semantic.slang b/tests/compute/semantic.slang
index a3a38e525..49e9ff948 100644
--- a/tests/compute/semantic.slang
+++ b/tests/compute/semantic.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -compile-arg -O3 -compute-dispatch 3,1,1
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -compute-dispatch 3,1,1
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -compute-dispatch 3,1,1
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -compute-dispatch 3,1,1
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -compile-arg -O3 -compute-dispatch 3,1,1 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -compute-dispatch 3,1,1 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -compute-dispatch 3,1,1 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -compute-dispatch 3,1,1 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/compute/simple.slang b/tests/compute/simple.slang
index e1489d70f..c62f88d5e 100644
--- a/tests/compute/simple.slang
+++ b/tests/compute/simple.slang
@@ -1,5 +1,5 @@
-//TEST(smoke,compute):COMPARE_COMPUTE:
-//TEST(smoke,compute):COMPARE_COMPUTE:-cpu
+//TEST(smoke,compute):COMPARE_COMPUTE: -shaderobj
+//TEST(smoke,compute):COMPARE_COMPUTE:-cpu -shaderobj
// This is a basic test for Slang compute shader.
diff --git a/tests/compute/ssa-reduce-bug.slang b/tests/compute/ssa-reduce-bug.slang
index 041fc83c8..b5cdb7084 100644
--- a/tests/compute/ssa-reduce-bug.slang
+++ b/tests/compute/ssa-reduce-bug.slang
@@ -1,6 +1,6 @@
// ssa-reduce-bug.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 3 1 2 6 4 7 6], stride=4):name=inputBuffer
RWStructuredBuffer<int> inputBuffer;
diff --git a/tests/compute/static-const-array.slang b/tests/compute/static-const-array.slang
index 1f111e364..2afa1f39e 100644
--- a/tests/compute/static-const-array.slang
+++ b/tests/compute/static-const-array.slang
@@ -1,8 +1,8 @@
// static-const-array.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/compute/static-const-matrix-array.slang b/tests/compute/static-const-matrix-array.slang
index 2ac132121..9a468b6ed 100644
--- a/tests/compute/static-const-matrix-array.slang
+++ b/tests/compute/static-const-matrix-array.slang
@@ -1,8 +1,8 @@
// static-const-array.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute -output-using-type -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out, name outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/compute/static-const-vector-array.slang b/tests/compute/static-const-vector-array.slang
index 4d9234a70..edfe24028 100644
--- a/tests/compute/static-const-vector-array.slang
+++ b/tests/compute/static-const-vector-array.slang
@@ -1,8 +1,8 @@
// static-const-array.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute -output-using-type -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out, name outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/compute/struct-default-init.slang b/tests/compute/struct-default-init.slang
index ac01317a1..50933ae84 100644
--- a/tests/compute/struct-default-init.slang
+++ b/tests/compute/struct-default-init.slang
@@ -1,5 +1,5 @@
// struct-default-init.slang
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
struct Test
{
@@ -25,7 +25,7 @@ int test(int inVal)
+ t.d;
}
-//TEST_INPUT:ubuffer(data=[9 9 9 9], stride=4):out
+//TEST_INPUT:ubuffer(data=[9 9 9 9], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer : register(u0);
[numthreads(4, 1, 1)]
diff --git a/tests/compute/struct-in-generic.slang b/tests/compute/struct-in-generic.slang
index dfcc305f2..eb41efac6 100644
--- a/tests/compute/struct-in-generic.slang
+++ b/tests/compute/struct-in-generic.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Confirm that a struct type defined in a generic parent works
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
struct GenStruct<T>
diff --git a/tests/compute/struct-make.slang b/tests/compute/struct-make.slang
index 265370b89..f42d76876 100644
--- a/tests/compute/struct-make.slang
+++ b/tests/compute/struct-make.slang
@@ -1,7 +1,7 @@
// scope.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// Confirm that scoping on enums and types works
diff --git a/tests/compute/structured-buffer-of-matrices.slang b/tests/compute/structured-buffer-of-matrices.slang
index e87cf8c59..b76061310 100644
--- a/tests/compute/structured-buffer-of-matrices.slang
+++ b/tests/compute/structured-buffer-of-matrices.slang
@@ -11,10 +11,10 @@
// output on all targets, correctly respecting the user's
// request for row-major layout via command-line option.
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -compile-arg -O3 -xslang -matrix-layout-row-major
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -xslang -matrix-layout-row-major
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -matrix-layout-row-major
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -compile-arg -O3 -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -matrix-layout-row-major -shaderobj
// Note: we are using a buffer of floating-point matrices, but fill it with integer
// data, to allow this test to work on the Vulkan targets, which do not currently
diff --git a/tests/compute/switch-stmt.slang b/tests/compute/switch-stmt.slang
index 36aac70a2..f0de612cb 100644
--- a/tests/compute/switch-stmt.slang
+++ b/tests/compute/switch-stmt.slang
@@ -1,5 +1,4 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7], stride=4):out
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Test that `swith` statement works
@@ -30,6 +29,7 @@ int test(int inVal)
return result;
}
+//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer : register(u0);
[numthreads(8, 1, 1)]
diff --git a/tests/compute/texture-get-dimensions.slang b/tests/compute/texture-get-dimensions.slang
index 67c1fddc8..1ab2891ff 100644
--- a/tests/compute/texture-get-dimensions.slang
+++ b/tests/compute/texture-get-dimensions.slang
@@ -1,11 +1,11 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -shaderobj
// TODO(JS): Doesn't work on vk currently, because createTextureView not implemented on vk renderer
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
// TODO(JS): Doesn't work on CUDA as there aren't any CUDA functions to get dimensions.
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT: Texture1D(size=4, content = one):name t1D
Texture1D<float> t1D;
diff --git a/tests/compute/texture-sampling.slang b/tests/compute/texture-sampling.slang
index 932e56985..12bdc80bf 100644
--- a/tests/compute/texture-sampling.slang
+++ b/tests/compute/texture-sampling.slang
@@ -1,14 +1,14 @@
-//TEST(compute):COMPARE_RENDER_COMPUTE:
-
-//TEST_INPUT: Texture1D(size=4, content = one):
-//TEST_INPUT: Texture2D(size=4, content = one):
-//TEST_INPUT: Texture3D(size=4, content = one):
-//TEST_INPUT: TextureCube(size=4, content = one):
-//TEST_INPUT: Texture1D(size=4, content = one, arrayLength=2):
-//TEST_INPUT: Texture2D(size=4, content = one, arrayLength=2):
-//TEST_INPUT: TextureCube(size=4, content = one, arrayLength=2):
-//TEST_INPUT: Sampler:
-//TEST_INPUT: ubuffer(data=[0], stride=4):out
+//TEST(compute):COMPARE_RENDER_COMPUTE: -shaderobj
+
+//TEST_INPUT: Texture1D(size=4, content = one):name=t1D
+//TEST_INPUT: Texture2D(size=4, content = one):name=t2D
+//TEST_INPUT: Texture3D(size=4, content = one):name=t3D
+//TEST_INPUT: TextureCube(size=4, content = one):name=tCube
+//TEST_INPUT: Texture1D(size=4, content = one, arrayLength=2):name=t1dArray
+//TEST_INPUT: Texture2D(size=4, content = one, arrayLength=2):name=t2dArray
+//TEST_INPUT: TextureCube(size=4, content = one, arrayLength=2):name=tCubeArray
+//TEST_INPUT: Sampler:name=samplerState
+//TEST_INPUT: ubuffer(data=[0], stride=4):out,name=outputBuffer
Texture1D t1D;
Texture2D t2D;
diff --git a/tests/compute/texture-simple.slang b/tests/compute/texture-simple.slang
index e2a14043e..f2f247d2d 100644
--- a/tests/compute/texture-simple.slang
+++ b/tests/compute/texture-simple.slang
@@ -1,10 +1,10 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -shaderobj
// TODO(JS): Doesn't work on vk currently, because createTextureView not implemented on vk renderer
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
// Doesn't work on CUDA, not clear why yet
//DISABLE_TEST_INPUT: Texture1D(format=R_Float32, size=4, content = one, mipMaps=1):name tLoad1D
diff --git a/tests/compute/this-type.slang b/tests/compute/this-type.slang
index 551fd0244..94f42ce53 100644
--- a/tests/compute/this-type.slang
+++ b/tests/compute/this-type.slang
@@ -2,8 +2,8 @@
// Confirm that that `This` type works as expected
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
interface IFrobable
{
diff --git a/tests/compute/transcendental.slang b/tests/compute/transcendental.slang
index bde43ee38..e9feb4d95 100644
--- a/tests/compute/transcendental.slang
+++ b/tests/compute/transcendental.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:-cuda
-//TEST(compute):COMPARE_COMPUTE:-cpu
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute,vulcan):COMPARE_COMPUTE:-vk
+//TEST(compute):COMPARE_COMPUTE:-cuda -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute,vulcan):COMPARE_COMPUTE:-vk -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer : register(u0);
diff --git a/tests/compute/transitive-interface.slang b/tests/compute/transitive-interface.slang
index 1ee8275e3..e4d7db91d 100644
--- a/tests/compute/transitive-interface.slang
+++ b/tests/compute/transitive-interface.slang
@@ -1,7 +1,7 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;
interface IAdd
diff --git a/tests/compute/type-legalize-global-with-init.slang b/tests/compute/type-legalize-global-with-init.slang
index e668b1a0a..573ac9849 100644
--- a/tests/compute/type-legalize-global-with-init.slang
+++ b/tests/compute/type-legalize-global-with-init.slang
@@ -4,12 +4,12 @@
// with a resource type or a type that recursively contains
// resources.
//
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
//
-//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<uint> outputBuffer;
-//TEST_INPUT:ubuffer(data=[1 2 3 4 5 6 7 8], stride=4):
+//TEST_INPUT:ubuffer(data=[1 2 3 4 5 6 7 8], stride=4):name=inputBuffer
RWStructuredBuffer<uint> inputBuffer;
static const RWStructuredBuffer<uint> gBuffer = inputBuffer;
diff --git a/tests/compute/typedef-member.slang b/tests/compute/typedef-member.slang
index c0e044d29..ae3debd40 100644
--- a/tests/compute/typedef-member.slang
+++ b/tests/compute/typedef-member.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
// Confirm that a struct type defined in a generic parent works
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
struct SubType<T>
diff --git a/tests/compute/unbounded-array-of-array-syntax.slang b/tests/compute/unbounded-array-of-array-syntax.slang
index 17bb5eb2e..6a5f4ea6e 100644
--- a/tests/compute/unbounded-array-of-array-syntax.slang
+++ b/tests/compute/unbounded-array-of-array-syntax.slang
@@ -1,8 +1,8 @@
-//IGNORE_TEST:CPU_REFLECTION: -profile cs_5_0 -entry computeMain -target cpp
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//IGNORE_TEST:CPU_REFLECTION: -profile cs_5_0 -entry computeMain -target cpp
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
//TEST:CROSS_COMPILE:-target dxbc-assembly -entry computeMain -profile cs_5_1
//TEST:CROSS_COMPILE:-target spirv-assembly -entry computeMain -profile cs_5_1
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/compute/unbounded-array-of-array.slang b/tests/compute/unbounded-array-of-array.slang
index 4d57b9e94..d5071d876 100644
--- a/tests/compute/unbounded-array-of-array.slang
+++ b/tests/compute/unbounded-array-of-array.slang
@@ -1,5 +1,5 @@
//DISABLE_TEST:CPU_REFLECTION: -profile cs_5_0 -entry computeMain -target cpp
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
struct IntAoa { RWStructuredBuffer<int> array[]; }
diff --git a/tests/compute/user-defined-initializer.slang b/tests/compute/user-defined-initializer.slang
index 8f7492881..dcd94f68a 100644
--- a/tests/compute/user-defined-initializer.slang
+++ b/tests/compute/user-defined-initializer.slang
@@ -3,8 +3,8 @@
// Confirm that user-defined initializer/constructor
// methods in a type work as expected.
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE:-cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
struct Pair
{
diff --git a/tests/compute/vector-scalar-compare.slang b/tests/compute/vector-scalar-compare.slang
index aa9580b5c..cd1088062 100644
--- a/tests/compute/vector-scalar-compare.slang
+++ b/tests/compute/vector-scalar-compare.slang
@@ -1,8 +1,9 @@
-//TEST(compute):COMPARE_COMPUTE:-dx12 -compute
-//TEST(compute):COMPARE_COMPUTE:-vk -compute
-//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out
+//TEST(compute):COMPARE_COMPUTE:-dx12 -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -compute -shaderobj
// Test doing vector comparisons
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;
[numthreads(4, 4, 1)]
diff --git a/tests/compute/write-structured-buffer-field.slang b/tests/compute/write-structured-buffer-field.slang
index 7de94aa68..77bde894d 100644
--- a/tests/compute/write-structured-buffer-field.slang
+++ b/tests/compute/write-structured-buffer-field.slang
@@ -1,6 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
-//TEST_INPUT:ubuffer(data=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32], stride=32):out
struct S
{
@@ -8,6 +7,7 @@ struct S
int4 b;
};
+//TEST_INPUT:ubuffer(data=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32], stride=32):out,name=outputBuffer
RWStructuredBuffer<S> outputBuffer;
[numthreads(4, 1, 1)]
diff --git a/tests/cross-compile/fmod.slang b/tests/cross-compile/fmod.slang
index 94d733e66..6efff35b3 100644
--- a/tests/cross-compile/fmod.slang
+++ b/tests/cross-compile/fmod.slang
@@ -3,8 +3,8 @@
// Ensure that HLSL `fmod` works and produces
// expected output on Vulkan/GLSL.
-//TEST(compute):COMPARE_COMPUTE:-dx11 -compute
-//TEST(compute):COMPARE_COMPUTE:-vk -compute
+//TEST(compute):COMPARE_COMPUTE:-dx11 -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -compute -shaderobj
//TEST_INPUT:cbuffer(data=[4 0 0 0]):name=C
cbuffer C
diff --git a/tests/cross-compile/get-dimensions.slang b/tests/cross-compile/get-dimensions.slang
index 78b337b2a..13874a6e2 100644
--- a/tests/cross-compile/get-dimensions.slang
+++ b/tests/cross-compile/get-dimensions.slang
@@ -1,8 +1,8 @@
//DISABLE_TEST:REFLECTION: -profile cs_5_0 -entry computeMain -target cpp
-//TEST(compute):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-d3d11 -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-d3d11 -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
struct Thing
{
diff --git a/tests/cross-compile/glsl-bool-ops.slang b/tests/cross-compile/glsl-bool-ops.slang
index a7cf21f23..dc6affa06 100644
--- a/tests/cross-compile/glsl-bool-ops.slang
+++ b/tests/cross-compile/glsl-bool-ops.slang
@@ -3,8 +3,8 @@
// This test exists to ensure that binary operations on
// vectors of `bool` produce correct GLSL/SPIR-V output.
-//TEST(compute):COMPARE_COMPUTE:-dx11 -compute
-//TEST(compute):COMPARE_COMPUTE:-vk -compute
+//TEST(compute):COMPARE_COMPUTE:-dx11 -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -compute -shaderobj
uint test(uint val)
{
diff --git a/tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang b/tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang
index 58c620dc9..4b634816a 100644
--- a/tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang
+++ b/tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang
@@ -4,10 +4,10 @@
// that exhibits "trivial fall-through" from one `case`
// to another.
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK -shaderobj
// Note: this test is currently disabled on the CUDA
// target because we do not synthesize the active
diff --git a/tests/hlsl-intrinsic/active-mask/switch.slang b/tests/hlsl-intrinsic/active-mask/switch.slang
index ce5d3b0c4..47d279f20 100644
--- a/tests/hlsl-intrinsic/active-mask/switch.slang
+++ b/tests/hlsl-intrinsic/active-mask/switch.slang
@@ -2,10 +2,10 @@
// Test active mask synthesis for a trivial `switch` statement
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK -shaderobj
// Note: this test is currently disabled on the CUDA
// target because we do not synthesize the active
diff --git a/tests/hlsl-intrinsic/bit-cast-double.slang b/tests/hlsl-intrinsic/bit-cast-double.slang
index b52c9de2b..43d12009b 100644
--- a/tests/hlsl-intrinsic/bit-cast-double.slang
+++ b/tests/hlsl-intrinsic/bit-cast-double.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-slang -vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-slang -vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/bit-cast.slang b/tests/hlsl-intrinsic/bit-cast.slang
index 4ecd911d7..b808dd276 100644
--- a/tests/hlsl-intrinsic/bit-cast.slang
+++ b/tests/hlsl-intrinsic/bit-cast.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/bit-cast/bit-cast-16-bit.slang b/tests/hlsl-intrinsic/bit-cast/bit-cast-16-bit.slang
index 66f015172..0241ff9cd 100644
--- a/tests/hlsl-intrinsic/bit-cast/bit-cast-16-bit.slang
+++ b/tests/hlsl-intrinsic/bit-cast/bit-cast-16-bit.slang
@@ -1,7 +1,7 @@
// bit-cast-16-bit.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile sm_6_2
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile sm_6_2 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16], stride=4):name inputBuffer
RWStructuredBuffer<int> inputBuffer;
diff --git a/tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit-vector.slang b/tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit-vector.slang
index 403be325e..047637afb 100644
--- a/tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit-vector.slang
+++ b/tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit-vector.slang
@@ -4,21 +4,21 @@
// byte-address buffers works as expected, on targets
// that support it.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
// Note: disabled on D3D12 because some of the CI services don't have
// a recent enough build of dxc to support generic load/store.
//
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_2 -render-features half
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_2 -render-features half -shaderobj
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-slang -vk -compute -profile cs_6_2 -render-features half
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -cuda -compute
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-slang -vk -compute -profile cs_6_2 -render-features half -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -cuda -compute -shaderobj
// Unavailable on D3D and fxc-based targets, because fxc doesn't
// support loading anything besides `uint` from a byte-address
// buffer.
//
-//TEST_DISABLED(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST_DISABLED(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0x00010002 0x00030004 0x00050006 0x00070008]):name=inputBuffer
diff --git a/tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit.slang b/tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit.slang
index 61e62214d..2985b8902 100644
--- a/tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit.slang
+++ b/tests/hlsl-intrinsic/byte-address-buffer/byte-address-16bit.slang
@@ -4,15 +4,15 @@
// byte-address buffers works as expected, on targets
// that support it.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
// Note: disabled on D3D12 because some of the CI services don't have
// a recent enough build of dxc to support generic load/store.
//
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_2 -render-features half
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_2 -render-features half -shaderobj
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-slang -vk -compute -profile cs_6_2 -render-features half
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -cuda -compute
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-slang -vk -compute -profile cs_6_2 -render-features half -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -cuda -compute -shaderobj
// Unavailable on D3D and fxc-based targets, because fxc doesn't
// support loading anything besides `uint` from a byte-address
diff --git a/tests/hlsl-intrinsic/byte-address-buffer/byte-address-struct.slang b/tests/hlsl-intrinsic/byte-address-buffer/byte-address-struct.slang
index 520dce88a..6f987749f 100644
--- a/tests/hlsl-intrinsic/byte-address-buffer/byte-address-struct.slang
+++ b/tests/hlsl-intrinsic/byte-address-buffer/byte-address-struct.slang
@@ -4,11 +4,11 @@
// buffer can be translated into per-field loads on
// all targets that support loads of the field types.
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-slang -vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-slang -vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -cuda -compute -shaderobj
// Note: This input should really be just a `ByteAddressBuffer`,
// so that we can confirm that the functionality works in the
diff --git a/tests/hlsl-intrinsic/classify-double.slang b/tests/hlsl-intrinsic/classify-double.slang
index ba7f2cbf9..7ab19e980 100644
--- a/tests/hlsl-intrinsic/classify-double.slang
+++ b/tests/hlsl-intrinsic/classify-double.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
// inf, -inf, nan, finite
//TEST_INPUT:ubuffer(data=[ 0 0x7ff00000 0 0xfff00000 0xffffffff 0x7fffffff 1 0], stride=4):name inputBuffer
diff --git a/tests/hlsl-intrinsic/classify-float.slang b/tests/hlsl-intrinsic/classify-float.slang
index 1b23dc748..ca7c5a8c7 100644
--- a/tests/hlsl-intrinsic/classify-float.slang
+++ b/tests/hlsl-intrinsic/classify-float.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
// inf, -inf, nan, finite
//TEST_INPUT:ubuffer(data=[ 0x7f800000 0xff800000 0x7fffffff 1 ], stride=4):name inputBuffer
diff --git a/tests/hlsl-intrinsic/literal-int64.slang b/tests/hlsl-intrinsic/literal-int64.slang
index cb3cef5f2..49a19663d 100644
--- a/tests/hlsl-intrinsic/literal-int64.slang
+++ b/tests/hlsl-intrinsic/literal-int64.slang
@@ -1,11 +1,11 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// No support for int64_t on D3D11 (no sm 6.0)
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
// No support with Dx12 with dxbc. Needs SM6.0 + dxil
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -profile cs_6_0 -dx12 -use-dxil
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -profile cs_6_0 -dx12 -use-dxil -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
// Note that the behavior we expect here, is a int without suffix is assumed to
// be an int literal.
diff --git a/tests/hlsl-intrinsic/matrix-double-reduced-intrinsic.slang b/tests/hlsl-intrinsic/matrix-double-reduced-intrinsic.slang
index 38fbe4f5d..1d8a63d05 100644
--- a/tests/hlsl-intrinsic/matrix-double-reduced-intrinsic.slang
+++ b/tests/hlsl-intrinsic/matrix-double-reduced-intrinsic.slang
@@ -1,12 +1,12 @@
// We currently don't support matrix intrinsics on glsl based targets
// There are problems with double on dx12/dxbc so we disable that
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil -output-using-type
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil -output-using-type -shaderobj
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<double> outputBuffer;
diff --git a/tests/hlsl-intrinsic/matrix-float.slang b/tests/hlsl-intrinsic/matrix-float.slang
index 4de0517f9..7ad68e9e1 100644
--- a/tests/hlsl-intrinsic/matrix-float.slang
+++ b/tests/hlsl-intrinsic/matrix-float.slang
@@ -1,11 +1,11 @@
// TODO(JS):
// NOTE we can't test on VK/gl at the moment because we don't support intrinsics over matrices on that target currently
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -output-using-type
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -output-using-type -shaderobj
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/hlsl-intrinsic/matrix-int-runtime-index.slang b/tests/hlsl-intrinsic/matrix-int-runtime-index.slang
index e3e2733b7..8f5102ac9 100644
--- a/tests/hlsl-intrinsic/matrix-int-runtime-index.slang
+++ b/tests/hlsl-intrinsic/matrix-int-runtime-index.slang
@@ -1,11 +1,11 @@
// NOTE we can't test on VK/gl because we will output imat3 - and imat3 is not supported by glsl.
// NOTE we also can't do this test on fxc - as it does not allow runtime non constant indexing.
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -shaderobj
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/matrix-int.slang b/tests/hlsl-intrinsic/matrix-int.slang
index cd69156a7..f9f0cd02e 100644
--- a/tests/hlsl-intrinsic/matrix-int.slang
+++ b/tests/hlsl-intrinsic/matrix-int.slang
@@ -1,10 +1,10 @@
// NOTE we can't test on VK/gl at the moment because we don't support intrinsics over matrices on that target currently
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -shaderobj
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/scalar-double-d3d-intrinsic.slang b/tests/hlsl-intrinsic/scalar-double-d3d-intrinsic.slang
index 600dfa88d..34bab6503 100644
--- a/tests/hlsl-intrinsic/scalar-double-d3d-intrinsic.slang
+++ b/tests/hlsl-intrinsic/scalar-double-d3d-intrinsic.slang
@@ -1,11 +1,11 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj
// On dx11 this causes a crash on CI (not currently not repeatable on test systems)
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj
// This is disabled because Dx12/DXBC doing double writes to a structured buffer can fail
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<double> outputBuffer;
diff --git a/tests/hlsl-intrinsic/scalar-double-simple.slang b/tests/hlsl-intrinsic/scalar-double-simple.slang
index 9dc40c0e4..b86cea88d 100644
--- a/tests/hlsl-intrinsic/scalar-double-simple.slang
+++ b/tests/hlsl-intrinsic/scalar-double-simple.slang
@@ -1,12 +1,12 @@
// Here we are going to do a very simple calculation with double.
// For simplicity we are not going to use any intrinsics, and not use any resources that use double
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<uint> outputBuffer;
diff --git a/tests/hlsl-intrinsic/scalar-double-vk-intrinsic.slang b/tests/hlsl-intrinsic/scalar-double-vk-intrinsic.slang
index a48f80d74..97292dcae 100644
--- a/tests/hlsl-intrinsic/scalar-double-vk-intrinsic.slang
+++ b/tests/hlsl-intrinsic/scalar-double-vk-intrinsic.slang
@@ -1,10 +1,10 @@
// This test is to see what intrinsics are available on VK
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
// We don't want to run a cuda test here...
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<double> outputBuffer;
diff --git a/tests/hlsl-intrinsic/scalar-float.slang b/tests/hlsl-intrinsic/scalar-float.slang
index e0d338075..062f6c94b 100644
--- a/tests/hlsl-intrinsic/scalar-float.slang
+++ b/tests/hlsl-intrinsic/scalar-float.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/scalar-int.slang b/tests/hlsl-intrinsic/scalar-int.slang
index 7fccc8645..119ca5abc 100644
--- a/tests/hlsl-intrinsic/scalar-int.slang
+++ b/tests/hlsl-intrinsic/scalar-int.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/scalar-int64.slang b/tests/hlsl-intrinsic/scalar-int64.slang
index 50d2b5816..35fba2fa4 100644
--- a/tests/hlsl-intrinsic/scalar-int64.slang
+++ b/tests/hlsl-intrinsic/scalar-int64.slang
@@ -1,11 +1,11 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// No support for int64_t on D3D11 (no sm 6.0)
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
// No support with Dx12 with dxbc. Needs SM6.0 + dxil
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -profile cs_6_0 -dx12 -use-dxil
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -profile cs_6_0 -dx12 -use-dxil -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/scalar-uint.slang b/tests/hlsl-intrinsic/scalar-uint.slang
index eb16bb3b8..2e35c782e 100644
--- a/tests/hlsl-intrinsic/scalar-uint.slang
+++ b/tests/hlsl-intrinsic/scalar-uint.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/scalar-uint64.slang b/tests/hlsl-intrinsic/scalar-uint64.slang
index dd165d8b8..f862852b4 100644
--- a/tests/hlsl-intrinsic/scalar-uint64.slang
+++ b/tests/hlsl-intrinsic/scalar-uint64.slang
@@ -1,12 +1,12 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// No support for uint64_t on DX11
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
// No support for uint64_t on fxc - we need SM6.0 and dxil
// https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/hlsl-shader-model-6-0-features-for-direct3d-12
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/vector-double-reduced-intrinsic.slang b/tests/hlsl-intrinsic/vector-double-reduced-intrinsic.slang
index 288dfe9db..7d7e0ca0d 100644
--- a/tests/hlsl-intrinsic/vector-double-reduced-intrinsic.slang
+++ b/tests/hlsl-intrinsic/vector-double-reduced-intrinsic.slang
@@ -1,10 +1,10 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj
// TODO(JS):
// On CI systems DX11 test failed, so disable for now
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<double4> outputBuffer;
diff --git a/tests/hlsl-intrinsic/vector-float.slang b/tests/hlsl-intrinsic/vector-float.slang
index f1d37c71e..b9cc6b9c8 100644
--- a/tests/hlsl-intrinsic/vector-float.slang
+++ b/tests/hlsl-intrinsic/vector-float.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<float4> outputBuffer;
diff --git a/tests/hlsl-intrinsic/vector-int-runtime-index.slang b/tests/hlsl-intrinsic/vector-int-runtime-index.slang
index bb704ed1a..77a8ae4ef 100644
--- a/tests/hlsl-intrinsic/vector-int-runtime-index.slang
+++ b/tests/hlsl-intrinsic/vector-int-runtime-index.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/vector-int.slang b/tests/hlsl-intrinsic/vector-int.slang
index d3327cfd0..a27e74d17 100644
--- a/tests/hlsl-intrinsic/vector-int.slang
+++ b/tests/hlsl-intrinsic/vector-int.slang
@@ -1,8 +1,8 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-active-count-bits.slang b/tests/hlsl-intrinsic/wave-active-count-bits.slang
index f337a70bb..2de7db485 100644
--- a/tests/hlsl-intrinsic/wave-active-count-bits.slang
+++ b/tests/hlsl-intrinsic/wave-active-count-bits.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-active-product.slang b/tests/hlsl-intrinsic/wave-active-product.slang
index 7fd42e038..6d9aea1fa 100644
--- a/tests/hlsl-intrinsic/wave-active-product.slang
+++ b/tests/hlsl-intrinsic/wave-active-product.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang b/tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang
index b67bb601b..4960ab00c 100644
--- a/tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang
+++ b/tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang
@@ -1,6 +1,6 @@
//TEST_CATEGORY(wave, compute)
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-broadcast-lane-at.slang b/tests/hlsl-intrinsic/wave-broadcast-lane-at.slang
index ee5ce45ab..a9ec340d2 100644
--- a/tests/hlsl-intrinsic/wave-broadcast-lane-at.slang
+++ b/tests/hlsl-intrinsic/wave-broadcast-lane-at.slang
@@ -1,10 +1,10 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
// Disabled on VK because glsl can't do WaveReadLaneAt on matrix.
-//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-diverge.slang b/tests/hlsl-intrinsic/wave-diverge.slang
index 1f0e6aac5..594ea55e3 100644
--- a/tests/hlsl-intrinsic/wave-diverge.slang
+++ b/tests/hlsl-intrinsic/wave-diverge.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-equality.slang b/tests/hlsl-intrinsic/wave-equality.slang
index fc8d28f10..4271c3c11 100644
--- a/tests/hlsl-intrinsic/wave-equality.slang
+++ b/tests/hlsl-intrinsic/wave-equality.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-get-lane-index.slang b/tests/hlsl-intrinsic/wave-get-lane-index.slang
index 84b1c3fea..e4beb7ce0 100644
--- a/tests/hlsl-intrinsic/wave-get-lane-index.slang
+++ b/tests/hlsl-intrinsic/wave-get-lane-index.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-is-first-lane.slang b/tests/hlsl-intrinsic/wave-is-first-lane.slang
index 4b78647ee..203c20bb8 100644
--- a/tests/hlsl-intrinsic/wave-is-first-lane.slang
+++ b/tests/hlsl-intrinsic/wave-is-first-lane.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-active-product.slang b/tests/hlsl-intrinsic/wave-mask/wave-active-product.slang
index 682622580..8a47c5733 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-active-product.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-active-product.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang b/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang
index 552ef7144..06d62fcda 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang
@@ -1,6 +1,6 @@
//TEST_CATEGORY(wave-mask, compute)
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang b/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang
index 1fe8a54b2..9e444a9a8 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang
@@ -1,10 +1,10 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
// Disabled on VK because glsl can't do WaveReadLaneAt on matrix.
-//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-diverge.slang b/tests/hlsl-intrinsic/wave-mask/wave-diverge.slang
index 63176bac1..3dd33f150 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-diverge.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-diverge.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-equality.slang b/tests/hlsl-intrinsic/wave-mask/wave-equality.slang
index 020e6415a..9152d2ec2 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-equality.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-equality.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-get-active.slang b/tests/hlsl-intrinsic/wave-mask/wave-get-active.slang
index 7f2c63b86..d19436191 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-get-active.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-get-active.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang b/tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang
index d6c6cd380..1a7a46cea 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang b/tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang
index 8d126f2ec..71721ec35 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-matrix.slang b/tests/hlsl-intrinsic/wave-mask/wave-matrix.slang
index 3fd551be9..8082545fb 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-matrix.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-matrix.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang b/tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang
index 56dbf7e4e..5904d6b99 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang b/tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang
index 6149d1cca..bf8f83805 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang b/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang
index 39b01bec3..d4ccbea27 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang
@@ -2,8 +2,8 @@
// We have this 'simple' test, because we can't do matrix (or imat) operations on GLSL/Vk target
//TEST_CATEGORY(wave-mask, compute)
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang b/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang
index e2dccffea..954d05559 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang
@@ -1,10 +1,10 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
// Disabled on VK because glsl can't do WaveReadLaneAt on matrix.
-//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang b/tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang
index fe4bedfe7..da2e31e5d 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang
@@ -1,10 +1,10 @@
//TEST_CATEGORY(wave-mask, compute)
// Disabled because main tests is wave-shuffle.slang, this just tests VK
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang b/tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang
index d108fc39e..481a132c9 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang
@@ -1,11 +1,11 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
//Disabled on D3D, because in general WaveShuffle requires hardware that doesn't have the 'uniform laneId across Wave' restriction.
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
// Disabled because vk doesn't currently support matrix types. See wave-shuffle-vk.slang
-//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-vector.slang b/tests/hlsl-intrinsic/wave-mask/wave-vector.slang
index dc6947bfd..1b77b3dc5 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-vector.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-vector.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave.slang b/tests/hlsl-intrinsic/wave-mask/wave.slang
index 9d6fbac46..1b8acc277 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave-mask, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-matrix.slang b/tests/hlsl-intrinsic/wave-matrix.slang
index dd239a155..a3fe0b2e9 100644
--- a/tests/hlsl-intrinsic/wave-matrix.slang
+++ b/tests/hlsl-intrinsic/wave-matrix.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-multi-prefix.slang b/tests/hlsl-intrinsic/wave-multi-prefix.slang
index a3adc1a80..31dde2af4 100644
--- a/tests/hlsl-intrinsic/wave-multi-prefix.slang
+++ b/tests/hlsl-intrinsic/wave-multi-prefix.slang
@@ -1,12 +1,12 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
// We need SM6.5 for these tests
// Disable because version of dxc we are currently using doesn't support SM6.5
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile sm_6_5
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile sm_6_5 -shaderobj
// Disabled because we don't have GLSL intrinsics for these it seems
-//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-prefix-count-bits.slang b/tests/hlsl-intrinsic/wave-prefix-count-bits.slang
index 3aea7926d..5440715aa 100644
--- a/tests/hlsl-intrinsic/wave-prefix-count-bits.slang
+++ b/tests/hlsl-intrinsic/wave-prefix-count-bits.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-prefix-product.slang b/tests/hlsl-intrinsic/wave-prefix-product.slang
index 888d3ba22..70f52db13 100644
--- a/tests/hlsl-intrinsic/wave-prefix-product.slang
+++ b/tests/hlsl-intrinsic/wave-prefix-product.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-prefix-sum.slang b/tests/hlsl-intrinsic/wave-prefix-sum.slang
index 4b86da763..529b99d48 100644
--- a/tests/hlsl-intrinsic/wave-prefix-sum.slang
+++ b/tests/hlsl-intrinsic/wave-prefix-sum.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-read-lane-at-vk.slang b/tests/hlsl-intrinsic/wave-read-lane-at-vk.slang
index f085081b0..4fb80ac0a 100644
--- a/tests/hlsl-intrinsic/wave-read-lane-at-vk.slang
+++ b/tests/hlsl-intrinsic/wave-read-lane-at-vk.slang
@@ -1,8 +1,8 @@
// This is similar to wave-lane-at.slang but tests more limited supported types for vk.
// We have this 'simple' test, because we can't do matrix (or imat) operations on GLSL/Vk target
//TEST_CATEGORY(wave, compute)
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-read-lane-at.slang b/tests/hlsl-intrinsic/wave-read-lane-at.slang
index bc32cf1f8..44976fad8 100644
--- a/tests/hlsl-intrinsic/wave-read-lane-at.slang
+++ b/tests/hlsl-intrinsic/wave-read-lane-at.slang
@@ -1,10 +1,10 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
// Disabled on VK because glsl can't do WaveReadLaneAt on matrix.
-//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-shuffle-vk.slang b/tests/hlsl-intrinsic/wave-shuffle-vk.slang
index ecd325c95..0ac3e096d 100644
--- a/tests/hlsl-intrinsic/wave-shuffle-vk.slang
+++ b/tests/hlsl-intrinsic/wave-shuffle-vk.slang
@@ -1,10 +1,10 @@
//TEST_CATEGORY(wave, compute)
// Disabled because main tests is wave-shuffle.slang, this just tests VK
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-vector.slang b/tests/hlsl-intrinsic/wave-vector.slang
index 3a3f4b4be..eb8872145 100644
--- a/tests/hlsl-intrinsic/wave-vector.slang
+++ b/tests/hlsl-intrinsic/wave-vector.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave.slang b/tests/hlsl-intrinsic/wave.slang
index 04a6c2048..d3454b7e0 100644
--- a/tests/hlsl-intrinsic/wave.slang
+++ b/tests/hlsl-intrinsic/wave.slang
@@ -1,9 +1,9 @@
//TEST_CATEGORY(wave, compute)
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -shaderobj
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/ir/string-literal-hash.slang b/tests/ir/string-literal-hash.slang
index 3e71b8a32..5aa354d85 100644
--- a/tests/ir/string-literal-hash.slang
+++ b/tests/ir/string-literal-hash.slang
@@ -1,5 +1,5 @@
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE: -vk
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE: -vk -shaderobj
// Note: disabled on CPU target until we can fill
// in a more correct/complete `String` and `getStringHash`
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
diff --git a/tests/optimization/func-resource-result/func-resource-result-simple.slang b/tests/optimization/func-resource-result/func-resource-result-simple.slang
index 5bebd69ac..52b382135 100644
--- a/tests/optimization/func-resource-result/func-resource-result-simple.slang
+++ b/tests/optimization/func-resource-result/func-resource-result-simple.slang
@@ -1,8 +1,8 @@
// func-resource-result-simple.slang
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// Test that a function that returns a resource type can be
// compiled for targets that don't natively support resource
diff --git a/tests/pipeline/compute/compute-system-values.slang b/tests/pipeline/compute/compute-system-values.slang
index 16a5ed85b..c63ca7f6b 100644
--- a/tests/pipeline/compute/compute-system-values.slang
+++ b/tests/pipeline/compute/compute-system-values.slang
@@ -1,7 +1,7 @@
// compute-system-values.slang
-//TEST(compute):COMPARE_COMPUTE:
-//TEST(compute):COMPARE_COMPUTE: -cpu
+//TEST(compute):COMPARE_COMPUTE: -shaderobj
+//TEST(compute):COMPARE_COMPUTE: -cpu -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/serialization/extern/extern-test.slang b/tests/serialization/extern/extern-test.slang
index 9417e3755..1efb221dc 100644
--- a/tests/serialization/extern/extern-test.slang
+++ b/tests/serialization/extern/extern-test.slang
@@ -2,7 +2,7 @@
//TEST:COMPILE: -module-name module -no-codegen tests/serialization/extern/module-a.slang -o tests/serialization/extern/module-a.slang-lib
//TEST:COMPILE: -module-name module -no-codegen tests/serialization/extern/module-b.slang -o tests/serialization/extern/module-b.slang-lib
-//TEST:COMPARE_COMPUTE_EX: -xslang -module-name -xslang module -slang -compute -xslang -r -xslang tests/serialization/extern/module-a.slang-lib -xslang -r -xslang tests/serialization/extern/module-b.slang-lib
+//TEST:COMPARE_COMPUTE_EX: -xslang -module-name -xslang module -slang -compute -xslang -r -xslang tests/serialization/extern/module-a.slang-lib -xslang -r -xslang tests/serialization/extern/module-b.slang-lib -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 ], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/serialization/serialized-module-test.slang b/tests/serialization/serialized-module-test.slang
index a29aa36fc..d27fe0458 100644
--- a/tests/serialization/serialized-module-test.slang
+++ b/tests/serialization/serialized-module-test.slang
@@ -4,7 +4,7 @@
// serialization.
//TEST:COMPILE: tests/serialization/serialized-module.slang -o tests/serialization/serialized-module.slang-module
-//TEST:COMPARE_COMPUTE_EX:-slang -compute -xslang -r -xslang tests/serialization/serialized-module.slang-module
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -xslang -r -xslang tests/serialization/serialized-module.slang-module -shaderobj
//import serialized_module;
diff --git a/tests/serialization/std-lib-serialize.slang b/tests/serialization/std-lib-serialize.slang
index 6745b851a..eef99c8f8 100644
--- a/tests/serialization/std-lib-serialize.slang
+++ b/tests/serialization/std-lib-serialize.slang
@@ -1,5 +1,5 @@
//TEST:COMPILE: -save-stdlib slang-std-lib.zip
-//TEST:COMPARE_COMPUTE: -compile-arg -load-stdlib -compile-arg slang-std-lib.zip
+//TEST:COMPARE_COMPUTE: -compile-arg -load-stdlib -compile-arg slang-std-lib.zip -shaderobj
struct A
{
diff --git a/tests/slang-extension/atomic-float-byte-address-buffer.slang b/tests/slang-extension/atomic-float-byte-address-buffer.slang
index 910fefdfe..519cb668d 100644
--- a/tests/slang-extension/atomic-float-byte-address-buffer.slang
+++ b/tests/slang-extension/atomic-float-byte-address-buffer.slang
@@ -1,11 +1,11 @@
// atomic-float-byte-address-buffer.slang
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-dx11 -slang -compute -render-features atomic-float -output-using-type -nvapi-slot u0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-float -output-using-type
-//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -render-features atomic-float -output-using-type -compile-arg -O2 -nvapi-slot u0
-//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -use-dxil -render-features atomic-float -output-using-type -compile-arg -O2 -nvapi-slot u0
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-dx11 -slang -compute -render-features atomic-float -output-using-type -nvapi-slot u0 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-float -output-using-type -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -render-features atomic-float -output-using-type -compile-arg -O2 -nvapi-slot u0 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -use-dxil -render-features atomic-float -output-using-type -compile-arg -O2 -nvapi-slot u0 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -shaderobj
// The test doesn't directly use this, but having this defined makes the 0 slot available if NVAPI is going to be used
// Only strictly necessary on the D3D11/D3D12 paths
@@ -15,7 +15,7 @@ RWStructuredBuffer<int> nvapiBuffer;
//TEST_INPUT:ubuffer(data=[1.0 2.0 3.0 4.0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
-//TEST_INPUT:ubuffer(data=[1.0 2.0 3.0 4.0], stride=4):name=workBuffer
+//TEST_INPUT:ubuffer(data=[1.0 2.0 3.0 4.0]):name=workBuffer
RWByteAddressBuffer workBuffer;
//TEST_INPUT:ubuffer(data=[0.7 0.5 0.2 0.6], stride=4):name=anotherBuffer
diff --git a/tests/slang-extension/atomic-int64-byte-address-buffer.slang b/tests/slang-extension/atomic-int64-byte-address-buffer.slang
index 80ce2150c..b5e52ea58 100644
--- a/tests/slang-extension/atomic-int64-byte-address-buffer.slang
+++ b/tests/slang-extension/atomic-int64-byte-address-buffer.slang
@@ -1,13 +1,13 @@
// No atomic support on CPU
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// No support for int64_t on DX11
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
// No support for int64_t on fxc - we need SM6.0 and dxil
// https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/hlsl-shader-model-6-0-features-for-direct3d-12
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-slot u0
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-slot u0 -compile-arg -O2
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-int64
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-slot u0 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-slot u0 -compile-arg -O2 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-int64 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
// The test doesn't directly use this, but having this defined makes the 0 slot available if NVAPI is going to be used
// Only strictly necessary on the D3D12 path
diff --git a/tests/slang-extension/atomic-min-max-u64-byte-address-buffer.slang b/tests/slang-extension/atomic-min-max-u64-byte-address-buffer.slang
index bfe7fb2a4..862dd4ad1 100644
--- a/tests/slang-extension/atomic-min-max-u64-byte-address-buffer.slang
+++ b/tests/slang-extension/atomic-min-max-u64-byte-address-buffer.slang
@@ -1,15 +1,15 @@
// No atomic support on CPU
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// No support for int64_t on DX11
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
// No support for int64_t on fxc - we need SM6.0 and dxil
// https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/hlsl-shader-model-6-0-features-for-direct3d-12
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-slot u0
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-slot u0 -compile-arg -O2
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-int64
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-slot u0 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-slot u0 -compile-arg -O2 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-int64 -shaderobj
// For some reason this doesn't work correctly on CUDA? That it behaves as if always does Min. Min and Max do appropriate
// things tho, because if I force the condition I do get the right answer
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
// The test doesn't directly use this, but having this defined makes the 0 slot available if NVAPI is going to be used
// Only strictly necessary on the D3D12 path
diff --git a/tests/slang-extension/cas-int64-byte-address-buffer.slang b/tests/slang-extension/cas-int64-byte-address-buffer.slang
index 451d97e36..2712cbbe3 100644
--- a/tests/slang-extension/cas-int64-byte-address-buffer.slang
+++ b/tests/slang-extension/cas-int64-byte-address-buffer.slang
@@ -1,13 +1,13 @@
// No atomic support on CPU
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// No support for int64_t on DX11
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
// No support for int64_t on fxc - we need SM6.0 and dxil
// https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/hlsl-shader-model-6-0-features-for-direct3d-12
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-slot u0
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-slot u0 -compile-arg -O2
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-int64
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-slot u0 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-slot u0 -compile-arg -O2 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-int64 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
// The test doesn't directly use this, but having this defined makes the 0 slot available if NVAPI is going to be used
// Only strictly necessary on the D3D12 path
diff --git a/tests/slang-extension/exchange-int64-byte-address-buffer.slang b/tests/slang-extension/exchange-int64-byte-address-buffer.slang
index 0145d3838..a15a487d1 100644
--- a/tests/slang-extension/exchange-int64-byte-address-buffer.slang
+++ b/tests/slang-extension/exchange-int64-byte-address-buffer.slang
@@ -1,13 +1,13 @@
// No atomic support on CPU
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
// No support for int64_t on DX11
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
// No support for int64_t on fxc - we need SM6.0 and dxil
// https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/hlsl-shader-model-6-0-features-for-direct3d-12
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-slot u0
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-slot u0 -compile-arg -O2
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-int64
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-slot u0 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-slot u0 -compile-arg -O2 -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-int64 -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
// The test doesn't directly use this, but having this defined makes the 0 slot available if NVAPI is going to be used
// Only strictly necessary on the D3D12 path
diff --git a/tools/gfx/cuda/render-cuda.cpp b/tools/gfx/cuda/render-cuda.cpp
index 69166c6b6..bf316546e 100644
--- a/tools/gfx/cuda/render-cuda.cpp
+++ b/tools/gfx/cuda/render-cuda.cpp
@@ -549,12 +549,12 @@ public:
{
if (cudaView->desc.type == IResourceView::Type::UnorderedAccess)
{
- auto handle = cudaView->textureResource->getBindlessHandle();
+ auto handle = cudaView->textureResource->m_cudaSurfObj;
setData(offset, &handle, sizeof(uint64_t));
}
else
{
- auto handle = cudaView->textureResource->m_cudaSurfObj;
+ auto handle = cudaView->textureResource->getBindlessHandle();
setData(offset, &handle, sizeof(uint64_t));
}
}
@@ -814,6 +814,38 @@ private:
CUresourcetype resourceType;
size_t elementSize = 0;
+ // Our `ITextureResource::Desc` uses an enumeration to specify
+ // the "shape"/rank of a texture (1D, 2D, 3D, Cube), but CUDA's
+ // `cuMipmappedArrayCreate` seemingly relies on a policy where
+ // the extents of the array in dimenions above the rank are
+ // specified as zero (e.g., a 1D texture requires `height==0`).
+ //
+ // We will start by massaging the extents as specified by the
+ // user into a form that CUDA wants/expects, based on the
+ // texture shape as specified in the `desc`.
+ //
+ int width = desc.size.width;
+ int height = desc.size.height;
+ int depth = desc.size.depth;
+ switch (desc.type)
+ {
+ case IResource::Type::Texture1D:
+ height = 0;
+ depth = 0;
+ break;
+
+ case IResource::Type::Texture2D:
+ depth = 0;
+ break;
+
+ case IResource::Type::Texture3D:
+ break;
+
+ case IResource::Type::TextureCube:
+ depth = 1;
+ break;
+ }
+
{
CUarray_format format = CU_AD_FORMAT_FLOAT;
int numChannels = 0;
@@ -848,9 +880,9 @@ private:
CUDA_ARRAY3D_DESCRIPTOR arrayDesc;
memset(&arrayDesc, 0, sizeof(arrayDesc));
- arrayDesc.Width = desc.size.width;
- arrayDesc.Height = desc.size.height;
- arrayDesc.Depth = desc.size.depth;
+ arrayDesc.Width = width;
+ arrayDesc.Height = height;
+ arrayDesc.Depth = depth;
arrayDesc.Format = format;
arrayDesc.NumChannels = numChannels;
arrayDesc.Flags = 0;
@@ -904,8 +936,8 @@ private:
arrayDesc.Depth *= 6;
}
- arrayDesc.Height = desc.size.height;
- arrayDesc.Width = desc.size.width;
+ arrayDesc.Height = height;
+ arrayDesc.Width = width;
arrayDesc.Format = format;
arrayDesc.NumChannels = numChannels;
@@ -922,9 +954,9 @@ private:
CUDA_ARRAY3D_DESCRIPTOR arrayDesc;
memset(&arrayDesc, 0, sizeof(arrayDesc));
- arrayDesc.Depth = desc.size.depth;
- arrayDesc.Height = desc.size.height;
- arrayDesc.Width = desc.size.width;
+ arrayDesc.Depth = depth;
+ arrayDesc.Height = height;
+ arrayDesc.Width = width;
arrayDesc.Format = format;
arrayDesc.NumChannels = numChannels;
@@ -944,8 +976,8 @@ private:
CUDA_ARRAY_DESCRIPTOR arrayDesc;
memset(&arrayDesc, 0, sizeof(arrayDesc));
- arrayDesc.Height = desc.size.height;
- arrayDesc.Width = desc.size.width;
+ arrayDesc.Height = height;
+ arrayDesc.Width = width;
arrayDesc.Format = format;
arrayDesc.NumChannels = numChannels;
@@ -957,9 +989,6 @@ private:
// Work space for holding data for uploading if it needs to be rearranged
List<uint8_t> workspace;
- auto width = desc.size.width;
- auto height = desc.size.height;
- auto depth = desc.size.depth;
for (int mipLevel = 0; mipLevel < desc.numMipLevels; ++mipLevel)
{
int mipWidth = width >> mipLevel;
@@ -1152,8 +1181,22 @@ private:
resDesc.res.mipmap.hMipmappedArray = tex->m_cudaMipMappedArray;
}
- // Create handle for uav.
- SLANG_CUDA_RETURN_ON_FAIL(cuSurfObjectCreate(&tex->m_cudaSurfObj, &resDesc));
+ // If the texture might be used as a UAV, then we need to allocate
+ // a CUDA "surface" for it.
+ //
+ // Note: We cannot do this unconditionally, because it will fail
+ // on surfaces that are not usable as UAVs (e.g., those with
+ // mipmaps).
+ //
+ // TODO: We should really only be allocating the array at the
+ // time we create a resource, and then allocate the surface or
+ // texture objects as part of view creation.
+ //
+ if( desc.bindFlags & IResource::BindFlag::UnorderedAccess )
+ {
+ SLANG_CUDA_RETURN_ON_FAIL(cuSurfObjectCreate(&tex->m_cudaSurfObj, &resDesc));
+ }
+
// Create handle for sampling.
CUDA_TEXTURE_DESC texDesc;
diff --git a/tools/gfx/render-graphics-common.cpp b/tools/gfx/render-graphics-common.cpp
index 811602ffc..92ccc376c 100644
--- a/tools/gfx/render-graphics-common.cpp
+++ b/tools/gfx/render-graphics-common.cpp
@@ -592,6 +592,10 @@ public:
{
info.rangeOffset = m_descriptorSetBuildInfos[0]->slotRangeDescs.getCount();
}
+ else
+ {
+ info.rangeOffset = 0;
+ }
auto slangEntryPointLayout = entryPointLayout->getSlangLayout();
_addDescriptorSets(
@@ -647,7 +651,20 @@ protected:
}
IPipelineLayout::Desc pipelineLayoutDesc;
- pipelineLayoutDesc.renderTargetCount = m_renderTargetCount;
+
+ // HACK: we set `renderTargetCount` to zero here becasue otherwise the D3D12
+ // render back-end will adjust all UAV registers by this value to account
+ // for the `SV_Target<N>` outputs implicitly consuming `u<N>` registers for
+ // Shader Model 5.0.
+ //
+ // When using the shader object path, all registers are being set via Slang
+ // reflection information, and we do not need/want the automatic adjustment.
+ //
+ // TODO: Once we eliminate the non-shader-object path, this whole issue should
+ // be moot, because the `ProgramLayout` should own/be the pipeline layout anyway.
+ //
+ pipelineLayoutDesc.renderTargetCount = 0;
+
pipelineLayoutDesc.descriptorSetCount = pipelineDescriptorSets.getCount();
pipelineLayoutDesc.descriptorSets = pipelineDescriptorSets.getBuffer();
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp
index 4c05422ee..89bb25871 100644
--- a/tools/render-test/render-test-main.cpp
+++ b/tools/render-test/render-test-main.cpp
@@ -392,8 +392,38 @@ SlangResult _assignVarsFromLayout(
case ShaderInputType::Object:
{
auto typeName = entry.objectDesc.typeName;
- auto slangType = slangReflection->findTypeByName(typeName.getBuffer());
- auto slangTypeLayout = slangReflection->getTypeLayout(slangType);
+ slang::TypeLayoutReflection* slangTypeLayout = nullptr;
+ if(typeName.getLength() != 0)
+ {
+ // If the input line specified the name of the type
+ // to allocate, then we use it directly.
+ //
+ auto slangType = slangReflection->findTypeByName(typeName.getBuffer());
+ slangTypeLayout = slangReflection->getTypeLayout(slangType);
+ }
+ else
+ {
+ // if the user did not specify what type to allocate,
+ // then we will infer the type from the type of the
+ // value pointed to by `entryCursor`.
+ //
+ slangTypeLayout = entryCursor.getTypeLayout();
+ switch(slangTypeLayout->getKind())
+ {
+ default:
+ break;
+
+ case slang::TypeReflection::Kind::ConstantBuffer:
+ case slang::TypeReflection::Kind::ParameterBlock:
+ // If the cursor is pointing at a constant buffer
+ // or parameter block, then we assume the user
+ // actually means to allocate an object based on
+ // the element type of the block.
+ //
+ slangTypeLayout = slangTypeLayout->getElementTypeLayout();
+ break;
+ }
+ }
ComPtr<IShaderObjectLayout> shaderObjectLayout = renderer->createShaderObjectLayout(slangTypeLayout);
ComPtr<IShaderObject> shaderObject =
diff --git a/tools/render-test/shader-renderer-util.cpp b/tools/render-test/shader-renderer-util.cpp
index c90d197f4..ad3812ae3 100644
--- a/tools/render-test/shader-renderer-util.cpp
+++ b/tools/render-test/shader-renderer-util.cpp
@@ -182,6 +182,7 @@ ComPtr<ISamplerState> _createSamplerState(IRenderer* renderer,
const int textureBindFlags = IResource::BindFlag::NonPixelShaderResource | IResource::BindFlag::PixelShaderResource;
List<IDescriptorSetLayout::SlotRangeDesc> slotRangeDescs;
+ List<Index> mapEntryToSlotRange;
if(addedConstantBuffer)
{
@@ -196,6 +197,7 @@ ComPtr<ISamplerState> _createSamplerState(IRenderer* renderer,
const ShaderInputLayoutEntry& srcEntry = srcEntries[i];
SLANG_ASSERT(srcEntry.onlyCPULikeBinding == false);
+ mapEntryToSlotRange.add(slotRangeDescs.getCount());
IDescriptorSetLayout::SlotRangeDesc slotRangeDesc;
switch (srcEntry.type)
@@ -252,6 +254,10 @@ ComPtr<ISamplerState> _createSamplerState(IRenderer* renderer,
slotRangeDesc.type = DescriptorSlotType::Sampler;
break;
+ case ShaderInputType::Object:
+ // We ignore the `Object` case here, knowing that it is meant for the shader-object path.
+ continue;
+
default:
assert(!"Unhandled type");
return SLANG_FAIL;
@@ -290,7 +296,7 @@ ComPtr<ISamplerState> _createSamplerState(IRenderer* renderer,
{
const ShaderInputLayoutEntry& srcEntry = srcEntries[i];
- auto rangeIndex = i + (addedConstantBuffer ? 1 : 0);
+ auto rangeIndex = mapEntryToSlotRange[i];
switch (srcEntry.type)
{
@@ -407,6 +413,9 @@ ComPtr<ISamplerState> _createSamplerState(IRenderer* renderer,
}
break;
+ case ShaderInputType::Object:
+ break;
+
default:
assert(!"Unhandled type");
return SLANG_FAIL;