File tree Expand file tree Collapse file tree 3 files changed +45
-7
lines changed
source/dcompute/driver/ocl120 Expand file tree Collapse file tree 3 files changed +45
-7
lines changed Original file line number Diff line number Diff line change @@ -19,9 +19,10 @@ struct Context
19
19
{
20
20
@(0x1080 ) uint referenceCount;
21
21
@(0x1081 ) Device* _devices;
22
- @(0x1082 ) Properties * properties;
23
- @(0x1083 ) uint numDevices;
24
- ArrayAccesssor! (_devices,numDevices) devices;
22
+ @(0x1082 ) Properties * _properties;
23
+ ZeroTerminatedArrayAccessor! _properties properties;
24
+ @(0x1083 ) uint _numDevices;
25
+ ArrayAccesssor! (_devices,_numDevices) devices;
25
26
// Extensions
26
27
// @(0x2010) khrTerminate;
27
28
// @(0x200E) khrMemoryInitialise;
Original file line number Diff line number Diff line change @@ -9,16 +9,19 @@ struct Program
9
9
{
10
10
@(0x1160 ) uint referneceCount;
11
11
@(0x1161 ) Context context;
12
+
12
13
@(0x1162 ) uint _numDevices;
13
14
@(0x1163 ) Device* _devices;
14
15
ArrayAccesssor! (_devices,_numDevices) devices;
16
+
15
17
@(0x1164 ) char * _source;
16
18
StringzAccessor! (_source) source;
19
+
17
20
@(0x1165 ) size_t * _binarySizes;
18
- // TODO expose `binaries` properly
19
- @(0x1166 ) ubyte ** binaries;
21
+ @(0x1166 ) ubyte ** _binaries;
20
22
@(0x1167 ) size_t _numKernels;
21
- ArrayAccesssor! (_binarySizes,_numKernels) binarySizes;
23
+ ArrayAccesssor2D! (_binaries,_binarySizes,_numKernels) binaries;
24
+
22
25
@(0x1168 ) char * _kernelNames;
23
26
StringzAccessor! (_kernelNames) kernelNames;
24
27
}
Original file line number Diff line number Diff line change @@ -27,14 +27,48 @@ T[Args.length + 1] propertyList(T,Args...)(Args args)
27
27
return props;
28
28
}
29
29
30
- struct ArrayAccesssor (alias ptr, alias len) {}
30
+ struct ArrayAccesssor (alias ptr, alias len)
31
+ {
32
+ alias elementType = typeof (* ptr);
33
+ }
34
+
35
+ struct ArrayAccesssor2D (alias ptr, alias lens, alias len)
36
+ {
37
+ alias elementType = typeof (** ptr);
38
+ }
31
39
40
+ // C style char*
32
41
struct StringzAccessor (alias ptr) {}
33
42
43
+ // A propertyList
34
44
struct ZeroTerminatedArrayAccessor (alias ptr) {}
35
45
36
46
mixin template generateGetInfo(alias func)
37
47
{
38
48
// TODO
39
49
//
40
50
}
51
+
52
+ // Returned by ArrayAccesssor2D
53
+ struct RangeOfArray (T)
54
+ {
55
+ T** ptr;
56
+ size_t * lengths;
57
+ size_t length;
58
+ size_t index;
59
+
60
+ bool empty ()
61
+ {
62
+ return index == length;
63
+ }
64
+
65
+ @property T[] front()
66
+ {
67
+ return ptr[index][0 .. lengths[index]];
68
+ }
69
+
70
+ void popFront ()
71
+ {
72
+ ++ index;
73
+ }
74
+ }
You can’t perform that action at this time.
0 commit comments