@@ -26,9 +26,61 @@ QUnit.test( "basic_sum_AB (CPU)", function( assert ) {
2626
2727/*
2828// EXAMPLE GLSL
29+
30+ // boilerplate begin!!!
31+ float _W_ = XXXX; // HARDCODE FROM PARSER
32+ float _H_ = XXXX; // HARDCODE FROM PARSER
33+
34+ float _blockX_ = 1; // HARDCODE FROM PARSER
35+ float _blockY_ = 1; // HARDCODE FROM PARSER
36+ float _blockZ_ = 1; // HARDCODE FROM PARSER
37+ float _blockDimX_ = 1; // HARDCODE FROM PARSER
38+ float _blockDimY_ = 1; // HARDCODE FROM PARSER
39+ float _blockDimZ_ = 1; // HARDCODE FROM PARSER
40+ float _threadDimX_ = 1; // HARDCODE FROM PARSER
41+ float _threadDimY_ = 1; // HARDCODE FROM PARSER
42+ float _threadDimZ_ = 1; // HARDCODE FROM PARSER
43+
44+ float _coordToIndex_(vec3 coord) {
45+ return coord.x + _threadDimX_ * (coord.y + _threadDimY_ * coord.z);
46+ }
47+
48+ vec3 _indexTo3DCoord_(float index) {
49+ vec3 ret;
50+
51+ ret.z = round(index / (_threadDimX_ * _threadDimY_));
52+ ret.y = round((index - ret.z * _threadDimY_) / _threadDimX_);
53+ ret.x = index - _threadDimX_ * (ret.y + _threadDimY_ * ret.z);
54+
55+ return ret;
56+ }
57+
58+ vec2 _indexTo2DCoord_(float index) {
59+ vec2 ret;
60+
61+ ret.y = mod(index, _W_) / _H_;
62+ ret.x = (round(index / _W_)) / _W_;
63+
64+ return ret;
65+ }
66+
67+ float _coordToIndex_(vec2 coord) {
68+ return (coord.x * _W_) + _W_ * (coord.y * _H_);
69+ }
70+
2971void main(float* a, float* b) {
30- vec2 _x_ = get_global_id();
31- float ret = a[_x_] + b[_x_];
32- out_float = ret;
72+ vec2 _vecId_ = get_global_id();
73+ float _id_ = _coordToIndex_(_vecId_);
74+
75+ vec3 _thread_ = _indexTo3D_(_id_);
76+
77+ float _threadZ_ = _thread_.z;
78+ float _threadY_ = _thread_.y;
79+ float _threadX_ = _thread_.x;
80+ // boilerplate end!!!
81+
82+ float ret = a[_indexTo2DCoord_(_threadX_)] + b[_indexTo2DCoord_(_threadX_)];
83+ out_float = ret; // FROM RETURN
84+ return;
3385}
3486 */
0 commit comments