This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Opencl error sampler_t

Hello,

I am developping a short application to downsampling images on my samsung alpha.

I use OpenCL to develop on my GPU.

I have a problem when I use a sampler_t. Just when I decrare a sampler_t variable in my kernel, the program crash and gave me that error:

<CODE>

12-03 13:50:05.411: E/AndroidRuntime(990): FATAL EXCEPTION: main

12-03 13:50:05.411: E/AndroidRuntime(990): Process: com.example.subsamplecamera, PID: 990

12-03 13:50:05.411: E/AndroidRuntime(990): java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

12-03 13:50:05.411: E/AndroidRuntime(990):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)

12-03 13:50:05.411: E/AndroidRuntime(990):     at dalvik.system.NativeStart.main(Native Method)

12-03 13:50:05.411: E/AndroidRuntime(990): Caused by: java.lang.reflect.InvocationTargetException

12-03 13:50:05.411: E/AndroidRuntime(990):     at java.lang.reflect.Method.invokeNative(Native Method)

12-03 13:50:05.411: E/AndroidRuntime(990):     at java.lang.reflect.Method.invoke(Method.java:515)

12-03 13:50:05.411: E/AndroidRuntime(990):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)

12-03 13:50:05.411: E/AndroidRuntime(990):     ... 2 more

12-03 13:50:05.411: E/AndroidRuntime(990): Caused by: java.lang.Exception: @decode: clBuildProgram -11

12-03 13:50:05.411: E/AndroidRuntime(990):     at com.example.subsamplecamera.MainActivity.compileKernels(Native Method)

12-03 13:50:05.411: E/AndroidRuntime(990):     at com.example.subsamplecamera.MainActivity.onSurfaceTextureAvailable(MainActivity.java:119)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.TextureView.getHardwareLayer(TextureView.java:396)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14215)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14292)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.draw(View.java:15070)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.drawChild(ViewGroup.java:3340)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3176)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14245)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14292)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.draw(View.java:15070)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.drawChild(ViewGroup.java:3340)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3176)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14245)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14292)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.draw(View.java:15070)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.drawChild(ViewGroup.java:3340)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3176)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14245)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14292)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.draw(View.java:15070)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.drawChild(ViewGroup.java:3340)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3176)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14245)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14292)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.draw(View.java:15070)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.drawChild(ViewGroup.java:3340)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3176)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.draw(View.java:15359)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.widget.FrameLayout.draw(FrameLayout.java:472)

12-03 13:50:05.411: E/AndroidRuntime(990):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2621)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14250)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.View.getDisplayList(View.java:14292)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1597)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1469)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewRootImpl.draw(ViewRootImpl.java:2786)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2652)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2223)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1259)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6537)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:813)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.Choreographer.doCallbacks(Choreographer.java:613)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.Choreographer.doFrame(Choreographer.java:583)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:799)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.os.Handler.handleCallback(Handler.java:733)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.os.Handler.dispatchMessage(Handler.java:95)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.os.Looper.loop(Looper.java:146)

12-03 13:50:05.411: E/AndroidRuntime(990):     at android.app.ActivityThread.main(ActivityThread.java:5635)

12-03 13:50:05.411: E/AndroidRuntime(990):     ... 5 more

</CODE>

Can someone give me a hand?

Best regard.

Parents Reply Children
  • Sorry I made a mistake during the copy.

    Here is the full build log:

    12-09 20:50:53.167: I/JNIProcessor(1272): @compileKernels

    12-09 20:50:53.267: I/JNIProcessor(1272): @compileKernels error

    12-09 20:50:53.267: E/JNIProcessor(1272): @compileKernels error <source>:13:20: warning: double precision constant requires cl_khr_fp64, casting to single precision

    12-09 20:50:53.267: E/JNIProcessor(1272):     int val = 255-(0.403936*u+0.838316*v+y);

    12-09 20:50:53.267: E/JNIProcessor(1272):        

               ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:13:31: warning: double precision constant requires cl_khr_fp64, casting to single precision
    12-09 20:50:53.267: E/JNIProcessor(1272):     int val = 255-(0.403936*u+0.838316*v+y);
    12-09 20:50:53.267: E/JNIProcessor(1272):                               ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:24:11: error: using invalid qualifier with sampler type
    12-09 20:50:53.267: E/JNIProcessor(1272): sampler_t srcSampler;
    12-09 20:50:53.267: E/JNIProcessor(1272):           ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:44:24: warning: double precision constant requires cl_khr_fp64, casting to single precision
    12-09 20:50:53.267: E/JNIProcessor(1272):     out[inIdx]  = 255-(0.403936*(u-128)+0.838316*(v-128)+(y-16));
    12-09 20:50:53.267: E/JNIProcessor(1272):                        ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:44:41: warning: double precision constant requires cl_khr_fp64, casting to single precision
    12-09 20:50:53.267: E/JNIProcessor(1272):     out[inIdx]  = 255-(0.403936*(u-128)+0.838316*(v-128)+(y-16));
    12-09 20:50:53.267: E/JNIProcessor(1272):                                         ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:57:33: warning: double precision constant requires cl_khr_fp64, casting to single precision
    12-09 20:50:53.267: E/JNIProcessor(1272):     float x0 = src[ix-2+(iy)*w]/16.0;
    12-09 20:50:53.267: E/JNIProcessor(1272):                 
    12-09 20:50:53.267: E/JNIProcessor(1272): @compileKernels error <source>:13:20: warning: double precision constant requires cl_khr_fp64, casting to single precision
    12-09 20:50:53.267: E/JNIProcessor(1272):     int val = 255-(0.403936*u+0.838316*v+y);
    12-09 20:50:53.267: E/JNIProcessor(1272):                    ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:13:31: warning: double precision constant requires cl_khr_fp64, casting to single precision
    12-09 20:50:53.267: E/JNIProcessor(1272):     int val = 255-(0.403936*u+0.838316*v+y);
    12-09 20:50:53.267: E/JNIProcessor(1272):                               ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:24:11: error: using invalid qualifier with sampler type
    12-09 20:50:53.267: E/JNIProcessor(1272): sampler_t srcSampler;
    12-09 20:50:53.267: E/JNIProcessor(1272):           ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:44:24: warning: double precision constant requires cl_khr_fp64, casting to single precision
    12-09 20:50:53.267: E/JNIProcessor(1272):     out[inIdx]  = 255-(0.403936*(u-128)+0.838316*(v-128)+(y-16));
    12-09 20:50:53.267: E/JNIProcessor(1272):                        ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:44:41: warning: double precision constant requires cl_khr_fp64, casting to single precision
    12-09 20:50:53.267: E/JNIProcessor(1272):     out[inIdx]  = 255-(0.403936*(u-128)+0.838316*(v-128)+(y-16));
    12-09 20:50:53.267: E/JNIProcessor(1272):                                         ^
    12-09 20:50:53.267: E/JNIProcessor(1272): <source>:57:33: warning: double precision constant requires cl_khr_fp64, casting to single precision
    12-09 20:50:53.267: E/JNIProcessor(1272):     float x0 = src[ix-2+(iy)*w]/16.0;

  • 12-09 20:50:53.267: E/JNIProcessor(1272): <source>:24:11: error: using invalid qualifier with sampler type

    That's because the sampler has to be constant, for example:

    const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST;

    Regarding the warnings: like I said before you need to add "f" at the end of your float constants otherwise the compiler will think they are double values.

  • It works now.

    Thank you very much.