dequeueBuffer: বাফার গণনাটি নির্ধারণ না করে একাধিক বাফার সনাক্ত করতে পারে না


123

আমি নীচের ত্রুটিটি পেয়ে করছি Android 4.4.2 Moto X 2013একটি Rhomobile 5.0.2ওয়েব দর্শন অ্যাপ্লিকেশান। অ্যাপটি সহ SDK 19এবং সংকলিত হয়েছে minAPI 17

কিছু গবেষণার পরে মনে হচ্ছে এটি একটি সমস্যা Snapdragon 800 / Adreno GPU devices:

গুগল ইস্যু ট্র্যাকারে এই সমস্যাটির লিঙ্কগুলি এখানে এবং এখানে রয়েছে

হার্ডওয়্যার ত্বরণকে অক্ষম করা আসলে কোনও বিকল্প নয়, কারণ এটি ওয়েবভিউকে খুব স্বচ্ছল করে তোলে।

যেহেতু ত্রুটিটি হ'ল:

dequeueBuffer: can't dequeue multiple buffers without setting the buffer count

আমি কিভাবে com.rhomobile.rhodes.RhodesActivity- এ বাফার গণনা সেট করতে পারি?

11-08 18:28:31.227: I/SFPerfTracer(238):      triggers: (rate: 0:0) (423387 sw vsyncs) (0 skipped) (0:361861 vsyncs) (2:863582)
11-08 18:28:31.328: W/Adreno-EGLSUB(4749): <DequeueBuffer:593>: dequeue native buffer fail: Unknown error 2147483646, buffer=0x61213afc, handle=0x0
11-08 18:28:31.331: W/Adreno-EGLSUB(4749): <SwapBuffers:1343>: Invalid native buffer. Failed to queueBuffer
11-08 18:28:31.331: W/Adreno-EGLSUB(4749): <updater_thread:456>: native buffer is NULL
11-08 18:28:31.346: E/BufferQueue(238): [com.myapp.myapp/com.rhomobile.rhodes.RhodesActivity] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count
11-08 18:28:31.346: W/Adreno-EGLSUB(4749): <DequeueBuffer:593>: dequeue native buffer fail: Invalid argument, buffer=0x61213afc, handle=0x0
11-08 18:28:31.347: W/Adreno-ES20(4749): <gl2_surface_swap:43>: GL_OUT_OF_MEMORY
11-08 18:28:31.347: W/Adreno-EGL(4749): <qeglDrvAPI_eglSwapBuffers:3596>: EGL_BAD_SURFACE
11-08 18:28:31.347: W/HardwareRenderer(4749): EGL error: EGL_BAD_SURFACE
11-08 18:28:31.352: W/HardwareRenderer(4749): Mountain View, we've had a problem here. Switching back to software rendering.
11-08 18:28:31.478: D/qdgralloc(4749): Invalid gralloc handle (at 0x0): ver(-1/12) ints(-1/12) fds(-1/2) magic(????/gmsm)
11-08 18:28:31.478: W/GraphicBufferMapper(4749): lock(...) failed -22 (Invalid argument)
11-08 18:28:31.478: W/Surface(4749): failed locking buffer (handle = 0x0)
11-08 18:28:31.531: E/ViewRootImpl(4749): Could not lock surface
11-08 18:28:31.531: E/ViewRootImpl(4749): java.lang.IllegalArgumentException
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.Surface.nativeLockCanvas(Native Method)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.Surface.lockCanvas(Surface.java:243)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2466)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.ViewRootImpl.draw(ViewRootImpl.java:2440)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2284)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1914)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1024)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5796)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.Choreographer.doCallbacks(Choreographer.java:574)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.Choreographer.doFrame(Choreographer.java:544)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.os.Handler.handleCallback(Handler.java:733)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.os.Handler.dispatchMessage(Handler.java:95)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.os.Looper.loop(Looper.java:136)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at android.app.ActivityThread.main(ActivityThread.java:5102)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at java.lang.reflect.Method.invokeNative(Native Method)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at java.lang.reflect.Method.invoke(Method.java:515)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
11-08 18:28:31.531: E/ViewRootImpl(4749):      at dalvik.system.NativeStart.main(Native Method)

1
আপনি কি এই সমস্যার সমাধান খুঁজে পেয়েছেন?
ম্যাসিমো

6
না, তবে ধন্যবাদ, অ্যান্ড্রয়েড 5+ এর সাথে ওয়েবভিউ এখন গুগলপ্লে-এর মাধ্যমে আপডেট হয়েছে এবং এই সমস্যাটি ধীরে ধীরে চলে যাচ্ছে away
fnllc

উত্তর:


1

এটি এখানে মেমরির সমস্যার বাইরে থাকার কারণ হিসাবে ইঙ্গিত করা হয়েছে:

11-08 18: 28: 31.347: ডাব্লু / অ্যাড্রেনো-ইএস 20 (4749):: জিএল_উউ_অফ_মেমোরি

android.view.Surfaceআরও আপডেট করা হচ্ছে তখন জিপিইউ হ্যান্ডেল করতে পারে। আমি নিশ্চিত না যে আপনি এটির চেষ্টাও করতে পারেন।
আমি আরও বিশ্বাস করি যে অনেকগুলি ডিভাইসে যেখানে ক্রাশ নেই সেখানে ব্যবহারকারীরা মাঝে মাঝে ইউআই পা অনুভব করবেন।

কয়েক বছর আগেও আমি একই ধরণের সমস্যার মুখোমুখি হয়েছি। আমার ক্ষেত্রে এটি প্রাথমিকভাবে পা ছিল তবে আমি বিশ্বাস করি যে সমস্যাটি একই।

এটি সমাধান করার জন্য আমি ফ্রেমের হার পরিমাপ করার জন্য একটি কাউন্টার যুক্ত করেছি। আমি দেখেছি ফ্রেমের হার বেশি তবে হঠাৎ করেই এটি খারাপভাবে পড়ে যায়, তাই আমি সর্বোচ্চ এফপিএস সন্ধান করতে একটি ভারসাম্য-যুক্তি প্রয়োগ করেছি যা লেগবে না।

  • 60 এফপিএস দিয়ে শুরু করুন
  • এর পা থাকলে এফপিএসকে 2 দিয়ে ভাগ করুন
  • যদি এটি না হয়, তবে এটি সর্বশেষ মান এবং বর্তমানের মধ্যে গড়ের সাথে সেট করুন।
  • আপনি খুশি না হওয়া পর্যন্ত পুনরাবৃত্তি করুন;)

এটি মূলত নিখুঁত FPS এর জন্য বাইনারি অনুসন্ধান।

আপনার ক্ষেত্রে এটি কিছুটা জটিল, যেহেতু আপনি ক্র্যাশগুলি অনুভব করছেন, তাই আপনাকে এফপিএস কাউন্টার চালিয়ে যেতে হবে, এবং অনুসন্ধানে আরও যত্নবান হতে হবে।

আপনার সার্ভারে এফপিএস লগ প্রেরণ করুন। একবার আপনার পর্যাপ্ত ডেটা হয়ে গেলে, আপনি ডিভাইস মডিউল প্রতি FPS স্টারিং পয়েন্টের সাথে আরও স্মার্ট হতে পারেন।

যতক্ষণ না আপনার ওয়েবভিউ সারফেসভিউয়ে আপনার হাত রেখে আমি অনুমান করি এটিও তুচ্ছ নয়, তবে আমরা অ্যান্ড্রয়েড ৪.৪.২ নিয়ে কথা বলছি, তাই প্রতিচ্ছবি নিয়ে আপনি কিছুই করতে পারবেন না :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.