Menu

#33 Constant buffer order in generated IL is inconsistent

1.5
open
nobody
brcc (29)
5
2009-05-27
2009-05-27
GEN
No

const buffer declarations are random if more than one kernel has const
buffers

case 1:
kernel void test2(double a[2][3], double b[2][3], double c [2], double d1,
double d2, double d3, double d4, int n, double2 g1[], double g2[], double2
g3[], double2 g4[][], out double2 out1<>, out double out2<>)
{

}

kernel void test3(double a[3][3], double b[3][3], double c [3], double d1,
double d2, double d3, double d4, int n, double2 g1[], double g2[], double2
g3[], double2 g4[][], out double2 out1<>, out double2 out2<>)
{

}

const buffer declarations for above kernels

for test2 :

dcl_cb cb0[6]
dcl_cb cb1[6]
dcl_cb cb2[2]
dcl_cb cb3[5] // all are fine

for test3 :

dcl_cb cb0[9]
dcl_cb cb1[3]
dcl_cb cb2[5]
dcl_cb cb3[9] // order changes

case 2: define test3 first and test2 second

kernel void test3(double a[3][3], double b[3][3], double c [3], double d1,
double d2, double d3, double d4, int n, double2 g1[], double g2[], double2
g3[], double2 g4[][], out double2 out1<>, out double2 out2<>)
{

}

kernel void test2(double a[2][3], double b[2][3], double c [2], double d1,
double d2, double d3, double d4, int n, double2 g1[], double g2[], double2
g3[], double2 g4[][], out double2 out1<>, out double out2<>)
{

}

const buffer declarations for above kernels

for test3 :

dcl_cb cb0[9]
dcl_cb cb1[9]
dcl_cb cb2[3]
dcl_cb cb3[5] // all are fine

for test2 :

dcl_cb cb0[6]
dcl_cb cb1[5]
dcl_cb cb2[6]
dcl_cb cb3[2] // order changes

It looks like HLSL is doing some thing wrong.

Discussion

  • GEN

    GEN - 2009-05-27

    test case

     

Log in to post a comment.