stdlib updates to take advantage of pointers
The packed_{load,store}_active now functions take a pointer to a
location at which to start loading/storing, rather than an array
base and a uniform index.
Variants of the prefetch functions that take varying pointers
are now available.
There are now variants of the various atomic functions that take
varying pointers (issue #112).
This commit is contained in:
@@ -5,7 +5,7 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform unsigned int a[programCount];
|
||||
a[programIndex] = aFOO[programIndex];
|
||||
unsigned int aa;
|
||||
packed_load_active(a, 0, &aa);
|
||||
packed_load_active(a, &aa);
|
||||
RET[programIndex] = aa;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
int aa = 15;
|
||||
uniform int count = 0;
|
||||
if (programIndex < 2)
|
||||
count += packed_load_active(a, 0, &aa);
|
||||
count += packed_load_active(a, &aa);
|
||||
RET[programIndex] = aa;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
int aa;
|
||||
uniform int count = 0;
|
||||
if (programIndex < 2)
|
||||
count += packed_load_active(a, 0, &aa);
|
||||
count += packed_load_active(a, &aa);
|
||||
RET[programIndex] = count;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
int aa = 32;
|
||||
uniform int count = 0;
|
||||
if (programIndex < 2)
|
||||
count += packed_load_active(a, 5, &aa);
|
||||
count += packed_load_active(&a[5], &aa);
|
||||
RET[programIndex] = aa;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
int aa = 32;
|
||||
uniform int count = 0;
|
||||
if (programIndex & 1)
|
||||
count += packed_load_active(a, 10, &aa);
|
||||
count += packed_load_active(&a[10], &aa);
|
||||
if (!(programIndex & 1))
|
||||
count += packed_load_active(a, 10+count, &aa);
|
||||
count += packed_load_active(&a[10+count], &aa);
|
||||
RET[programIndex] = aa;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform int pack[2+programCount];
|
||||
for (uniform int i = 0; i < 2+programCount; ++i)
|
||||
pack[i] = 0;
|
||||
packed_store_active(pack, 2, a);
|
||||
packed_store_active(&pack[2], a);
|
||||
RET[programIndex] = pack[programIndex];
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
for (uniform int i = 0; i < 2+programCount; ++i)
|
||||
pack[i] = 0;
|
||||
if ((int)a & 1)
|
||||
packed_store_active(pack, 2, a);
|
||||
packed_store_active(&pack[2], a);
|
||||
RET[programIndex] = pack[programIndex];
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
pack[i] = 0;
|
||||
uniform int count = 0;
|
||||
if ((int)a & 1)
|
||||
count += packed_store_active(pack, 2, a);
|
||||
count += packed_store_active(&pack[2], a);
|
||||
RET[programIndex] = count;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
uniform unsigned int pack[programCount];
|
||||
for (uniform int i = 0; i < programCount; ++i)
|
||||
pack[i] = 0;
|
||||
packed_store_active(pack, 0, (unsigned int)a);
|
||||
packed_store_active(pack, (unsigned int)a);
|
||||
RET[programIndex] = pack[programIndex];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user