summaryrefslogtreecommitdiffstats
path: root/tests/cross-compile
diff options
context:
space:
mode:
authorHarsh Aggarwal (NVIDIA) <haaggarwal@nvidia.com>2025-08-01 14:48:53 +0530
committerGitHub <noreply@github.com>2025-08-01 09:18:53 +0000
commitbdda8a90cdd44ca822b21233ac988f92d1f20826 (patch)
tree4f628776a047b2719aee676287b3adc9d4f68f7a /tests/cross-compile
parent7a133445ef82232a6961c25d09b79f45cd92e709 (diff)
Fix 7441: CUDA boolean vector layout to use 1-byte elements (#7862)
* Fix 7441: CUDA boolean vector layout to use 1-byte elements Boolean vectors (bool1, bool2, bool3, bool4) were incorrectly implemented as integer-based types using 4 bytes per element instead of actual 1-byte boolean elements on CUDA targets. Changes: - Update CUDA prelude to define boolean vectors as structs with bool fields instead of typedef aliases to integer vectors - Implement CUDALayoutRulesImpl::GetVectorLayout to use 1-byte alignment for boolean vectors, matching actual CUDA memory layout behavior - Update make_bool functions to populate struct fields correctly This ensures boolean vectors have the same memory layout as bool[4] arrays: - bool1: 1 byte (was 4 bytes) - bool2: 2 bytes (was 8 bytes) - bool3: 3 bytes (was 12 bytes) - bool4: 4 bytes (was 16 bytes) Fixes memory layout mismatch between Slang reflection API and actual CUDA compilation, achieving 75% memory savings for boolean vector usage. * Fix CI issues - Add and update associated functions and operators * Make boolX same as uchar * Use align construct on struct for boolX * Improve Test case for robust alignment checks * Formatting * Disable selected slangpy tests * add metal check which is slightly different than cuda * Test-1 * Test-2 * Test-3 * Test-4 * ReflectionChange * cleanup and update * _slang_select with plain bool is needed for reverse-loop-checkpoint-test
Diffstat (limited to 'tests/cross-compile')
-rw-r--r--tests/cross-compile/cpp-resource-reflection.slang.32.expected40
-rw-r--r--tests/cross-compile/cpp-resource-reflection.slang.64.expected40
2 files changed, 40 insertions, 40 deletions
diff --git a/tests/cross-compile/cpp-resource-reflection.slang.32.expected b/tests/cross-compile/cpp-resource-reflection.slang.32.expected
index 58deecf89..f889df6f9 100644
--- a/tests/cross-compile/cpp-resource-reflection.slang.32.expected
+++ b/tests/cross-compile/cpp-resource-reflection.slang.32.expected
@@ -6,7 +6,7 @@ standard output = {
"parameters": [
{
"name": "thing3",
- "binding": {"kind": "uniform", "offset": 0, "size": 4},
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0},
"type": {
"kind": "constantBuffer",
"elementType": {
@@ -19,7 +19,7 @@ standard output = {
"kind": "scalar",
"scalarType": "int32"
},
- "binding": {"kind": "uniform", "offset": 0, "size": 4}
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0}
},
{
"name": "b",
@@ -27,7 +27,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 4, "size": 4}
+ "binding": {"kind": "uniform", "offset": 4, "size": 4, "elementStride": 0}
},
{
"name": "c",
@@ -35,12 +35,12 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 8, "size": 4}
+ "binding": {"kind": "uniform", "offset": 8, "size": 4, "elementStride": 0}
}
]
},
"containerVarLayout": {
- "binding": {"kind": "uniform", "offset": 0, "size": 4}
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0}
},
"elementVarLayout": {
"type": {
@@ -53,7 +53,7 @@ standard output = {
"kind": "scalar",
"scalarType": "int32"
},
- "binding": {"kind": "uniform", "offset": 0, "size": 4}
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0}
},
{
"name": "b",
@@ -61,7 +61,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 4, "size": 4}
+ "binding": {"kind": "uniform", "offset": 4, "size": 4, "elementStride": 0}
},
{
"name": "c",
@@ -69,17 +69,17 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 8, "size": 4}
+ "binding": {"kind": "uniform", "offset": 8, "size": 4, "elementStride": 0}
}
]
},
- "binding": {"kind": "uniform", "offset": 0, "size": 12}
+ "binding": {"kind": "uniform", "offset": 0, "size": 12, "elementStride": 0}
}
}
},
{
"name": "outputBuffer",
- "binding": {"kind": "uniform", "offset": 4, "size": 8},
+ "binding": {"kind": "uniform", "offset": 4, "size": 8, "elementStride": 0},
"type": {
"kind": "resource",
"baseShape": "structuredBuffer",
@@ -92,7 +92,7 @@ standard output = {
},
{
"name": "tex",
- "binding": {"kind": "uniform", "offset": 12, "size": 4},
+ "binding": {"kind": "uniform", "offset": 12, "size": 4, "elementStride": 0},
"type": {
"kind": "resource",
"baseShape": "texture2D"
@@ -100,7 +100,7 @@ standard output = {
},
{
"name": "sampler",
- "binding": {"kind": "uniform", "offset": 16, "size": 4},
+ "binding": {"kind": "uniform", "offset": 16, "size": 4, "elementStride": 0},
"type": {
"kind": "samplerState"
}
@@ -125,7 +125,7 @@ standard output = {
},
{
"name": "thing",
- "binding": {"kind": "uniform", "offset": 0, "size": 12},
+ "binding": {"kind": "uniform", "offset": 0, "size": 12, "elementStride": 0},
"type": {
"kind": "struct",
"name": "Thing",
@@ -136,7 +136,7 @@ standard output = {
"kind": "scalar",
"scalarType": "int32"
},
- "binding": {"kind": "uniform", "offset": 0, "size": 4}
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0}
},
{
"name": "b",
@@ -144,7 +144,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 4, "size": 4}
+ "binding": {"kind": "uniform", "offset": 4, "size": 4, "elementStride": 0}
},
{
"name": "c",
@@ -152,14 +152,14 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 8, "size": 4}
+ "binding": {"kind": "uniform", "offset": 8, "size": 4, "elementStride": 0}
}
]
}
},
{
"name": "thing2",
- "binding": {"kind": "uniform", "offset": 12, "size": 12},
+ "binding": {"kind": "uniform", "offset": 12, "size": 12, "elementStride": 0},
"type": {
"kind": "struct",
"name": "Thing",
@@ -170,7 +170,7 @@ standard output = {
"kind": "scalar",
"scalarType": "int32"
},
- "binding": {"kind": "uniform", "offset": 0, "size": 4}
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0}
},
{
"name": "b",
@@ -178,7 +178,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 4, "size": 4}
+ "binding": {"kind": "uniform", "offset": 4, "size": 4, "elementStride": 0}
},
{
"name": "c",
@@ -186,7 +186,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 8, "size": 4}
+ "binding": {"kind": "uniform", "offset": 8, "size": 4, "elementStride": 0}
}
]
}
diff --git a/tests/cross-compile/cpp-resource-reflection.slang.64.expected b/tests/cross-compile/cpp-resource-reflection.slang.64.expected
index 4ded43e3e..7499756d2 100644
--- a/tests/cross-compile/cpp-resource-reflection.slang.64.expected
+++ b/tests/cross-compile/cpp-resource-reflection.slang.64.expected
@@ -6,7 +6,7 @@ standard output = {
"parameters": [
{
"name": "thing3",
- "binding": {"kind": "uniform", "offset": 0, "size": 8},
+ "binding": {"kind": "uniform", "offset": 0, "size": 8, "elementStride": 0},
"type": {
"kind": "constantBuffer",
"elementType": {
@@ -19,7 +19,7 @@ standard output = {
"kind": "scalar",
"scalarType": "int32"
},
- "binding": {"kind": "uniform", "offset": 0, "size": 4}
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0}
},
{
"name": "b",
@@ -27,7 +27,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 4, "size": 4}
+ "binding": {"kind": "uniform", "offset": 4, "size": 4, "elementStride": 0}
},
{
"name": "c",
@@ -35,12 +35,12 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 8, "size": 4}
+ "binding": {"kind": "uniform", "offset": 8, "size": 4, "elementStride": 0}
}
]
},
"containerVarLayout": {
- "binding": {"kind": "uniform", "offset": 0, "size": 8}
+ "binding": {"kind": "uniform", "offset": 0, "size": 8, "elementStride": 0}
},
"elementVarLayout": {
"type": {
@@ -53,7 +53,7 @@ standard output = {
"kind": "scalar",
"scalarType": "int32"
},
- "binding": {"kind": "uniform", "offset": 0, "size": 4}
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0}
},
{
"name": "b",
@@ -61,7 +61,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 4, "size": 4}
+ "binding": {"kind": "uniform", "offset": 4, "size": 4, "elementStride": 0}
},
{
"name": "c",
@@ -69,17 +69,17 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 8, "size": 4}
+ "binding": {"kind": "uniform", "offset": 8, "size": 4, "elementStride": 0}
}
]
},
- "binding": {"kind": "uniform", "offset": 0, "size": 12}
+ "binding": {"kind": "uniform", "offset": 0, "size": 12, "elementStride": 0}
}
}
},
{
"name": "outputBuffer",
- "binding": {"kind": "uniform", "offset": 8, "size": 16},
+ "binding": {"kind": "uniform", "offset": 8, "size": 16, "elementStride": 0},
"type": {
"kind": "resource",
"baseShape": "structuredBuffer",
@@ -92,7 +92,7 @@ standard output = {
},
{
"name": "tex",
- "binding": {"kind": "uniform", "offset": 24, "size": 8},
+ "binding": {"kind": "uniform", "offset": 24, "size": 8, "elementStride": 0},
"type": {
"kind": "resource",
"baseShape": "texture2D",
@@ -104,7 +104,7 @@ standard output = {
},
{
"name": "sampler",
- "binding": {"kind": "uniform", "offset": 32, "size": 8},
+ "binding": {"kind": "uniform", "offset": 32, "size": 8, "elementStride": 0},
"type": {
"kind": "samplerState"
}
@@ -129,7 +129,7 @@ standard output = {
},
{
"name": "thing",
- "binding": {"kind": "uniform", "offset": 0, "size": 12},
+ "binding": {"kind": "uniform", "offset": 0, "size": 12, "elementStride": 0},
"type": {
"kind": "struct",
"name": "Thing",
@@ -140,7 +140,7 @@ standard output = {
"kind": "scalar",
"scalarType": "int32"
},
- "binding": {"kind": "uniform", "offset": 0, "size": 4}
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0}
},
{
"name": "b",
@@ -148,7 +148,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 4, "size": 4}
+ "binding": {"kind": "uniform", "offset": 4, "size": 4, "elementStride": 0}
},
{
"name": "c",
@@ -156,14 +156,14 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 8, "size": 4}
+ "binding": {"kind": "uniform", "offset": 8, "size": 4, "elementStride": 0}
}
]
}
},
{
"name": "thing2",
- "binding": {"kind": "uniform", "offset": 12, "size": 12},
+ "binding": {"kind": "uniform", "offset": 12, "size": 12, "elementStride": 0},
"type": {
"kind": "struct",
"name": "Thing",
@@ -174,7 +174,7 @@ standard output = {
"kind": "scalar",
"scalarType": "int32"
},
- "binding": {"kind": "uniform", "offset": 0, "size": 4}
+ "binding": {"kind": "uniform", "offset": 0, "size": 4, "elementStride": 0}
},
{
"name": "b",
@@ -182,7 +182,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 4, "size": 4}
+ "binding": {"kind": "uniform", "offset": 4, "size": 4, "elementStride": 0}
},
{
"name": "c",
@@ -190,7 +190,7 @@ standard output = {
"kind": "scalar",
"scalarType": "float32"
},
- "binding": {"kind": "uniform", "offset": 8, "size": 4}
+ "binding": {"kind": "uniform", "offset": 8, "size": 4, "elementStride": 0}
}
]
}