googlesamples/android-vulkan-tutorials

App fails with "FAILED BINDER TRANSACTION" when run in emulator

cirosantilli opened this issue · 7 comments

Moved to: http://stackoverflow.com/questions/42581120/how-to-create-and-run-an-example-vulkan-app-that-on-the-android-emulator

After #12 I have SDK 24 preview 4, NDK 12 and either a Nexus 6P or Nexus One image.

Tutorial 1 builds and installs, but when I try to run it it breaks immediately with:

06-26 23:39:03.583 F/libc    ( 3225): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x2 in tid 3239 (n.tutorials.one)
06-26 23:39:03.639 F/DEBUG   ( 3240): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-26 23:39:03.639 F/DEBUG   ( 3240): Build fingerprint: 'Android/sdk_google_phone_x86/generic_x86:N/NPD56O/2964822:userdebug/test-keys'
06-26 23:39:03.639 F/DEBUG   ( 3240): Revision: '0'
06-26 23:39:03.639 F/DEBUG   ( 3240): ABI: 'x86'
06-26 23:39:03.639 F/DEBUG   ( 3240): pid: 3225, tid: 3239, name: n.tutorials.one  >>> com.google.vulkan.tutorials.one <<<
06-26 23:39:03.639 F/DEBUG   ( 3240): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x2
06-26 23:39:03.639 F/DEBUG   ( 3240):     eax a11ef468  ebx a8a60e94  ecx a11ef2c0  edx a11ef39c
06-26 23:39:03.639 F/DEBUG   ( 3240):     esi a6d34384  edi a8a493d0
06-26 23:39:03.639 F/DEBUG   ( 3240):     xcs 00000073  xds 0000007b  xes 0000007b  xfs 0000003b  xss 0000007b
06-26 23:39:03.639 F/DEBUG   ( 3240):     eip 00000002  ebp a11ef258  esp a11ef22c  flags 00010292
06-26 23:39:03.639 F/DEBUG   ( 3240): 
06-26 23:39:03.639 F/DEBUG   ( 3240): backtrace:
06-26 23:39:03.639 F/DEBUG   ( 3240):     #00 pc 00000002  <unknown>
06-26 23:39:04.159 E/JavaBinder( 1483): !!! FAILED BINDER TRANSACTION !!!  (parcel size = 104)
06-26 23:39:04.184 E/lowmemorykiller( 1225): Error writing /proc/3225/oom_score_adj; errno=22
06-26 23:39:04.193 E/InputDispatcher( 1483): channel '3c6d05b com.google.vulkan.tutorials.one/android.app.NativeActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
ggfan commented

emulator may not have the vulkan support, they only support openGL.

@ggfan hmmm, ping me if you find a link on that.

So the only way to play with Vulkan on Android without enterprise internal tools is to get Galaxy S7? 😢

ggfan commented

I do not have any link to myself. my emulator will not work. If it works that is a pleasant surprise.
a list of device is posted here:
https://developer.android.com/ndk/guides/graphics/getting-started.html?utm_campaign=android_launch_vulkan_041316&utm_source=anddev&utm_medium=blog

it might be useful to you. you might also debug and trace into code to see where it fails, mostly it should failed at find no vulkan device [ my guess ]. Closing this one, feel free re-open if needed. Thanks

@ggfan I debug into code, it shows that gpuCount is still zero after vkEnumeratePhysicalDevices was called.

  // Find one GPU to use:
  // On Android, every GPU device is equal -- supporting graphics/compute/present
  // for this sample, we use the very first GPU device found on the system
  uint32_t  gpuCount = 0;
  CALL_VK(vkEnumeratePhysicalDevices(device.instance_, &gpuCount, nullptr));

I use Nexus 5X API level 25, and My computer GPU is nvidia geforce gtx 1050, it supports vulkan.

I think maybe there is something wrong in the android vulkan implement for emulator, or something wrong with the emulator.
Because vkEnumeratePhysicalDevices is a function pointer, i can't debug into it.
gpu-count-is-zero

ggfan commented

There is no emulator for Vulkan: I have not heard any even for stand alone emulator on desktop, would not image vulkan in Android emulator.

ggfan commented

confirmed: no vulkan in emulator now. Hopefully there will be one in the future, need to find a vulkan enabled device before that.

Could you add your source which says that the emulator doesn't support vulkan?
Is a support planned?
Maybe add this information (or be a bit more specific) to the Readme?

A emulator check in the code and a more descriptive error message would be also cool.