These are exactly the issues we need to discuss!
Well, seamless is relative…
It would be already great, to have vector/matrix datatypes that doesn’t
need to be converted before uploading. And we should agree on one and use
them across all abstraction packages.
A normal array can be used for this. But as soon, as you put vectors into
the array, things become a little more complex.
Also, having the same names for the same high-level functionalities would
be already great (Like free, upload, etc).
For example, I have a function called render, which basically uploads
anything it knows to a shader location. I’ve defined quite a few functions,
to handle a lot of different argument type combinations. (And by now,
render is really not a good name for it anymore)
Now the question would be, does someone have implemented something similar?
If yes, we should definitely try to agree on a name and functionality.
Well, there are a lot of questions like this and I don’t really know where
to start.
Maybe everyone that did something into this direction can describe his
approach, and we can start to figure out similarities and conflicts.
That would be already quite a good start, as doing this alone, by browsing
packages from others is a very tiring job.
I hope, that we can end up with something like this:
Incredibly awesome, High Level Packages
/ | \
GLGraphics, GLPlot,etc <=> ComputerVisionCL, NumberCrunchingCL <=>
Vectorization....
| | |
OpenGL-Abstraction <=> OpenCL-Abstraction <=>
SIMD-Abstraction
| | |
OpenGL Interface <=> OpenCL Interface <=> SIMD
Interface
Whereas the Interfaces are written in Julia and are as bare bone as
possible.
As you might have noticed, I’m working on an OpenGL-Util package, which is
my version of an abstraction layer for OpenGL.
When I look left and right, I see, that there are similar abstraction
packages on their way for CUDA and OpenCL.
So I just want to make sure that we all work into the same direction and
interchange know how and code!
Best,
Simon