yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

CopilotFix enum array indexing by adding implicit conversion support (#7815)4d514f792

master
1.2 KiB36 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj -output-using-type
2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -shaderobj -output-using-type
3//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -shaderobj -output-using-type
4
5// Test that enums can be used as array indices without explicit casting
6
7enum Fruit { Apple, Orange, Banana };
8
9//TEST_INPUT: set outputBuffer = out ubuffer(data=[0 0 0 0], stride=4)
10RWStructuredBuffer<int> outputBuffer;
11
12[numthreads(1,1,1)]
13void computeMain()
14{
15    int fruits[10];
16    
17    // Initialize arrays with some values
18    for (int i = 0; i < 10; i++)
19    {
20        fruits[i] = i * 10;
21    }
22    
23    // Test basic enum indexing - this should work with our fix
24    int appleCost = fruits[Fruit::Apple];     // Should access fruits[0] = 0
25    int orangeCost = fruits[Fruit::Orange];   // Should access fruits[1] = 10
26    int bananaCost = fruits[Fruit::Banana];   // Should access fruits[2] = 20
27    
28    // CHECK: 0
29    outputBuffer[0] = appleCost;
30    // CHECK: 10
31    outputBuffer[1] = orangeCost;
32    // CHECK: 20
33    outputBuffer[2] = bananaCost;
34    // CHECK: 42
35    outputBuffer[3] = 42; // Just a test value
36}