No support for image3d?

Help
mux85
2010-04-10
2012-12-21
  • mux85
    mux85
    2010-04-10

    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?

     
  • nythrix
    nythrix
    2010-04-12

    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.

     
  • nythrix
    nythrix
    2010-04-12

    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.

     
  • mux85
    mux85
    2010-04-12

    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.

     
  • nythrix
    nythrix
    2010-06-23

    Issue fixed. There was a typo in the raw bindings with CreateImage3D calling native clCreateImage2D.

     
  • MapleRiver
    MapleRiver
    2010-06-23

    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.

    __kernel void
    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
             )

     
  • nythrix
    nythrix
    2010-08-11

    cloothink did you manage to put together the Nvidia example?