I can't build a kernel containing writes to image3d even if using "#pragma OPENCL EXTENSION cl_khr_3d_image_writes : enable". furthermore i get InvalidMemoryObjectComputeException launched by the image3d constructor. According to openCL man pages CL_INVALID_MEM_OBJECT is not even supposed to be returned by clCreateImage3D. so what's happening?
probably nvidia is not supporting image3d at least on my video card (8800m gtx).
considering that what i am trying to do is about video processing image3d would have made my life much simpler. using an array of image2d seems a good alternative. but how to create it and set it as an argument?
Confirmed. Something's not right with the ComputeImage3D constructor. I'll have a look into it.
Processing videos with a 3D image sounds like a good idea. Never thought about it!
PS: Sorry for being off for a while. I'm heading towards the exams next month and so I don't have much spare time. However I'll always find some to fix any bugs. Any major improvements will have to wait till mid-june or so.
Some more info
a) Check the context.Device.Extensions for "cl_khr_3d_image_writes".
b) This thread contains some discussion on the matter: http://forums.nvidia.com/index.php?showtopic=154686
c) ComputeImage3D constructor also calls clGetImageInfo in order to populate its properties with valid values. That's where the exception comes from. Interestingly, clCreateImage3D neither fails nor does it return a valid handle.
The ComputeImage3D constructor itself is very simple and I couldn't find any weak points in it. The error occurs upon calling clCreateImage3D, which is at its very beginning.
But I'm still filing a bug report. Just in case.
no problem :) keep up the good work. I am preparing for some exams too. for the moment i will continue to use a byte buffer because there is probably some problem image3d in the driver too.
Issue fixed. There was a typo in the raw bindings with CreateImage3D calling native clCreateImage2D.
I am currently doing Nvidia OpenCL SDK 3.0 VolumeRender using Cloo.NET and OpenTK - whish involve image3d_t
I am still trying to get it work, the image return is just black, anyone has tried, this could be an exmaple to validate
the issue with the Cloo.NET computeImage3D.
Furthermore, there is also ComputeImage3D.CreateFromGLTexture3D to be tested.
d_render(__global uint *d_output,
uint imageW, uint imageH,
float density, float brightness,
float transferOffset, float transferScale,
__constant float* invViewMatrix
,__read_only image3d_t volume,
__read_only image2d_t transferFunc
cloothink did you manage to put together the Nvidia example?