জিপিইউ ক্রোমিয়ামকে ত্বরান্বিত করেছে


11

আমি জুবুন্টু 12.04-র একটি নতুন ইনস্টল চালাচ্ছি এবং আমি জানতে চাই কীভাবে আমি আমার এনভিডিয়া কার্ডের জিপিইউ ত্বরণকে সর্বশেষ স্থিতিশীল ক্রোমিয়ামের অভ্যন্তরে সক্রিয় করতে পারি। আমি সিপিইউ 100% না করে এমপি 4 ফাইল খেলতে চেয়েছিলাম।

আমি এমপ্লেয়ার এবং ভিডিপিউ ইনস্টল করেছি (এবং তারা ভাল কাজ করে) তবে এখন পর্যন্ত আমি সেগুলি ক্রোমিয়ামের মধ্যে ব্যবহার করতে সক্ষম হইনি। কয়েক বছর আগে, আমি জেকো-মিডিয়াপ্লেয়ার ব্যবহার করেছি তবে প্লাগইনটি কালো তালিকাভুক্ত করা হয়েছে ...

কোন ধারনা?

এর ফলাফল এখানে glxinfo | grep render:

direct rendering: Yes
OpenGL renderer string: GeForce GT 520M/PCIe/SSE2
    GL_NV_blend_square, GL_NV_compute_program5, GL_NV_conditional_render, 
    GL_NV_parameter_buffer_object2, GL_NV_path_rendering, 
    GL_NVX_conditional_render, GL_NVX_gpu_memory_info, 

এবং এখানে ফলাফল lspci | grep -i vga:

02:00.0 VGA compatible controller: NVIDIA Corporation GF119 [GeForce GT 520M] (rev a1)

আমি যখনই পৃষ্ঠাটি খুলব তখন ক্রোমিয়াম প্রচুর সতর্কতা জাগিয়ে তুলছে , আপনি যেমন এখানে দেখতে পারেন এবং আমি কেবল একটি প্রতিশ্রুতিশীল সীসা পেয়েছি, যা পারফরম্যান্স সতর্কতার এক সাগরে হারিয়েছে:

NVIDIA: could not open the device file /dev/nvidia0 (Operation not permitted).

ভিডিও গোষ্ঠীতে ব্যবহারকারীকে যুক্ত করার পরে, ক্রোমিয়াম এখন এমপি 4 গুলি মোটেই খেলতে অক্ষম (ইউপি, এমনকি সিপিইউ ব্যবহার করছে না)। আমি আগের মতো একই ত্রুটি বার্তা পেয়েছি, তবে একটি নতুন পপ আপ হয়েছে:

[4296: 4296: 0827/100001: ERROR: gpu_video_decode_accelerator.cc (208)] অকার্যকর কন্টেন্টে পৌঁছানো হয়নি :: GpuVideoDecodeAccelerator :: आरंभ করুন (মিডিয়া :: ভিডিওকোডাকপ্রাইফাইল, আইপিসি :: বার্তা *) ** এইচডব্লিউ ভিডিও ডিকোড ত্বরণ উপলভ্য নয় **।

আপনার সিপিইউ ব্যবহার 100% এ কেন বৃদ্ধি পায়? এমনকি কোনও এইচডব্লিউএ (জিপিইউ নেই) ছাড়াই আমি গুগল ক্রোমের মাধ্যমে এমপি 4 ভিডিও খেলতে পারি এবং সিপিইউ ব্যবহার <20%।

4
4 বছরের পুরানো, 300 $ কম্পিউটারে 1080p ভিডিও।
জোও পেরেইরা

উত্তর:


7

টিএল; ডিআর: যদি না আপনি নীচের সমস্ত কিছুর চেষ্টা করে থাকেন এবং এখন আপনি এই নির্দিষ্ট স্থির বাগটিকে আঘাত করে একটি কালো স্ক্রিন না পেয়ে থাকেন তবে আপনার সমস্যাটি এখনই সমাধান করা উচিত। আপনি যদি এখন পান:

ERROR:gpu_video_decode_accelerator.cc(208)] Not implemented reached in void content::GpuVideoDecodeAccelerator::Initialize(media::VideoCodecProfile, IPC::Message\*) HW video decode acceleration not available.

নীচের সমস্ত কিছু চেষ্টা করার পরে, তারপরে আপনার Chrome --disable-gpu-sandboxবা ium দিয়ে শুরু করার চেষ্টা করা উচিত --blacklist-accelerated-compositing। যদি সমস্যাটি অব্যাহত থাকে, সমস্ত পরিবর্তনগুলি ফিরিয়ে নিন এবং আপনার সমস্যাটি কী, আপনি কী চেষ্টা করেছেন, এবং সমস্ত ডেটা সম্ভাব্য ডেটা বিশদ সম্পর্কিত একটি বাগের প্রতিবেদন করুন: about:gpu,, about:versionআপনি যে ড্রাইভারগুলি ব্যবহার করছেন, কার্নেল সংস্করণ ইত্যাদি। যা এখনও পরীক্ষা করতে চান তাদের জন্য ভাগ্য, পূর্বে উল্লিখিত স্যুইচটি ব্যবহার করুন, এএমডি কার্ডগুলির সাথে কি সমস্যা রয়েছে, "ক্রোম / আইয়ামকে এইচডাব্লুএ ব্যবহার করতে বাধ্য করা" বিভাগটি আপনার পক্ষে কাজ করে। যারা এনভিডিয়া প্রাইভেটভেটিভ ড্রাইভার বা xorg-ppa- প্রান্ত ব্যবহার করেন তাদের ফায়ারফক্সের সাথে পরীক্ষা করা উচিত এবং সেখানে সমস্যাটি ঘটে কিনা তা দেখতে হবে।

এনভিডিয়া সমস্যার অনুমতি দেয়

এনভিআইডিএ: ডিভাইস ফাইল / dev / nvidia0 খুলতে পারেনি (অপারেশন অনুমোদিত নয়)।

এর অর্থ আপনি videoগ্রুপটির অংশ নন । এটি আপনার হিসাবে যত সহজ সমাধান করা যায়:

sudo adduser Hal video

তারপরে আপনার সেশনটি পুনরায় আরম্ভ করুন এবং আপনি সেখানে আছেন।

সূত্র: http://forums.gentoo.org/viewtopic-p-7232328.html?sid=900a2d59cdb52e1a5f530598dfa1be24#7232328

Chrome / ium কে এইচডাব্লুএ ব্যবহার করতে বাধ্য করছে

আপনার নিজের about:gpuবিভাগটি Chrome / ium এ পরীক্ষা করা উচিত । পুরানো পিসির এইচডব্লিউ এক্সিলারেশনটি ডিফল্টরূপে অক্ষম থাকে এবং আপনি কেবলমাত্র সেটিংসে ওভাররাইড করে এটি সক্ষম করতে পারবেন about:flags

  • about:flagsআপনার ঠিকানা বারে খুলুন
  • সন্ধান ওভাররাইড সফ্টওয়্যার redendering তালিকা
  • "সক্ষম করুন" ক্লিক করুন
  • Chrome / ium পুনরায় চালু করুন

আপনি ক্রোম ব্যবহার chrome --ignore-gpu-blacklistকরেও শুরু করতে পারেন তবে প্রতিবার তাই করা আদর্শ নয়।

এটি আমার জিপিইউ পৃষ্ঠা

এটি আমার পতাকা


1
ঠিক আছে, আমি ক্রোম: // জিপিইউতে "ওভাররাইড সফ্টওয়্যার রেন্ডারিং লিস্ট" সক্ষম করেছি, ক্রোমিয়ামটি আবার খোলে এবং এইচটিএমএল 5 এম্বেড ভিডিও ট্যাগ (উত্সটি একটি এমপি 4) সমেত একটি স্থানীয় পৃষ্ঠা খুলেছে তবে সিপিইউ এখনও 100% এরও বেশি ভাল করছে। তারপরে, আমি জেকো-মিডিয়াপ্লেয়ার ইনস্টল করেছি, উপেক্ষা করা ব্ল্যাকলিস্ট প্যারামিটার দিয়ে পুনরায় বুট করে ক্রোমিয়াম চালু করেছি তবে এর মতো ভাগ্যও নেই। অন্য কোন ধারণা? আমার গ্রাফিক বৈশিষ্ট্যগুলির স্থিতি আপনার মতো।
জোও পেরেইরা

আমি নিশ্চিত না যে ভিডিও ডিকোডিং আসলে কাজ করছে কিনা। আমি উবুন্টু 12.04-এ ক্রোম 29 চালাচ্ছি এবং আমি দেখতে পেয়েছি "ম্যাক এবং লিনাক্সে ত্বরণযুক্ত ভিডিও ডিকোড অনুপলব্ধ রয়েছে: 137247, 133828", তাই আপনি এটি "হার্ডওয়্যার অ্যাকসিলারেটেড" তে পেয়েছি দেখে অবাক হয়েছি।
জার্মটভিডিজক

এখন, যদি আমরা কেবল বানাতে পারে ক্রোমিয়াম তার টাকা যেখানে তার মুখ আছে ... করা
জোয়াও পেরেইরা

1
@ ব্রাইয়াম দুঃখিত, আমি যদি সত্যিই পরিষ্কার না হত - এটি আমার জন্য এটিও দেখায় তবে মনে হয় এটি "সমস্যাগুলি সনাক্ত করা" আউটপুট (যখন অক্ষম বিকল্পগুলি অপশনে) দেখানো হয়েছে তেমন কাজ করছে না। বাগের প্রতিবেদনটিও দেখুন (কোড. google.com/p/chromium/issues/detail?id=137247 )
জার্মটভিডিজক

1
@ জর্জভিডিজক হ্যাঁ, আমি এই প্রতিবেদনটি আগে দেখেছি। প্রকৃতপক্ষে একটি সুন্দর ডার্ন বোবা নীতি: আমরা বাগ রিপোর্টগুলি পছন্দ করি না, সুতরাং আমরা (সত্যই) আমাদের বিশ্বাস করে যে কার্ডগুলি সমস্যা হয় না (যা সংখ্যালঘু) আমরা ধীরে ধীরে সক্রিয় করি এবং যে ব্যবহারকারীদের এমন কার্ড থাকে যা কেবল ঠিক কাজ করতে পারে তাদের বাস্তব পারফরম্যান্সের মাত্র 0.1% দিয়ে চালান।
ব্রায়াম

0

লিনাক্স / ক্রোমিয়ামে ভিডিও ডিকোডিংয়ের সমাধান:

GpuVideoDecodeAccelerator ফাংশনটি কয়েক মাসের জন্য ক্রোমিয়াম লিনাক্স কোডে অক্ষম করা হয়েছে (স্পষ্টতই ChromiumOS ব্যতীত) তাই আপনাকে ক্রোমিয়ামটি এই জাতীয়ভাবে প্যাচ করতে হবে:

https://bazaar.launchpad.net/~saiarcot895/chromium-browser/chromium-browser.utopic.beta/view/head:/debian/patches/enable_vaapi_on_linux.diff

বা এই দুর্দান্ত পিপিএ ব্যবহার করুন:

https://launchpad.net/~saiarcot895/+archive/ubuntu/chromium-beta

H264 এর জন্য ইন্টেল স্যান্ডি ব্রিজে লিব্বার সাথে পরীক্ষিত, দুর্দান্ত কাজ করে। ভিপি 8 সম্পর্কে জানেন না।

অনুরোধ হিসাবে এখানে পূর্ণ প্যাচ:

Index: beta.vivid/content/common/gpu/media/gpu_video_decode_accelerator.cc
===================================================================
--- beta.vivid.orig/content/common/gpu/media/gpu_video_decode_accelerator.cc    2014-12-04 09:32:45.344607112 -0500
+++ beta.vivid/content/common/gpu/media/gpu_video_decode_accelerator.cc 2014-12-04 09:32:45.341607169 -0500
@@ -31,7 +31,7 @@
 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) && defined(USE_X11)
 #include "content/common/gpu/media/v4l2_video_decode_accelerator.h"
 #include "content/common/gpu/media/v4l2_video_device.h"
-#elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) && defined(USE_X11)
+#elif (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY) && defined(USE_X11)
 #include "content/common/gpu/media/vaapi_video_decode_accelerator.h"
 #include "ui/gl/gl_context_glx.h"
 #include "ui/gl/gl_implementation.h"
@@ -272,7 +272,7 @@
       make_context_current_,
       device.Pass(),
       io_message_loop_));
-#elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) && defined(USE_X11)
+#elif (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY) && defined(USE_X11)
   if (gfx::GetGLImplementation() != gfx::kGLImplementationDesktopGL) {
     VLOG(1) << "HW video decode acceleration not available without "
                "DesktopGL (GLX).";
Index: beta.vivid/content/content_common.gypi
===================================================================
--- beta.vivid.orig/content/content_common.gypi 2014-12-04 09:32:45.344607112 -0500
+++ beta.vivid/content/content_common.gypi  2014-12-04 09:32:45.341607169 -0500
@@ -769,7 +769,7 @@
         '<(DEPTH)/third_party/khronos',
       ],
     }],
-    ['target_arch != "arm" and chromeos == 1 and use_x11 == 1', {
+    ['target_arch != "arm" and (chromeos == 1 or desktop_linux == 1) and use_x11 == 1', {
       'dependencies': [
         '../media/media.gyp:media',
         '../third_party/libyuv/libyuv.gyp:libyuv',
Index: beta.vivid/content/content_gpu.gypi
===================================================================
--- beta.vivid.orig/content/content_gpu.gypi    2014-12-04 09:32:45.344607112 -0500
+++ beta.vivid/content/content_gpu.gypi 2014-12-04 09:32:45.341607169 -0500
@@ -40,7 +40,7 @@
         ],
       },
     }],
-    ['target_arch!="arm" and chromeos == 1', {
+    ['target_arch!="arm" and (chromeos == 1 or desktop_linux == 1)', {
       'include_dirs': [
         '<(DEPTH)/third_party/libva',
       ],
Index: beta.vivid/content/content_tests.gypi
===================================================================
--- beta.vivid.orig/content/content_tests.gypi  2014-12-04 09:32:45.344607112 -0500
+++ beta.vivid/content/content_tests.gypi   2014-12-04 09:32:45.342607150 -0500
@@ -1556,7 +1556,7 @@
           },
         ]
     }],
-    ['chromeos==1 and use_x11 == 1 and target_arch != "arm"', {
+    ['(chromeos==1 or desktop_linux==1) and use_x11 == 1 and target_arch != "arm"', {
       'targets': [
           {
             'target_name': 'vaapi_h264_decoder_unittest',
Index: beta.vivid/content/public/common/content_switches.cc
===================================================================
--- beta.vivid.orig/content/public/common/content_switches.cc   2014-12-04 09:32:45.344607112 -0500
+++ beta.vivid/content/public/common/content_switches.cc    2014-12-04 09:32:45.342607150 -0500
@@ -930,7 +930,7 @@
 // Disable web audio API.
 const char kDisableWebAudio[]               = "disable-webaudio";

-#if defined(OS_CHROMEOS)
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
 // Disables panel fitting (used for mirror mode).
 const char kDisablePanelFitting[]           = "disable-panel-fitting";

Index: beta.vivid/content/public/common/content_switches.h
===================================================================
--- beta.vivid.orig/content/public/common/content_switches.h    2014-12-04 09:32:45.344607112 -0500
+++ beta.vivid/content/public/common/content_switches.h 2014-12-04 09:32:45.342607150 -0500
@@ -268,7 +268,7 @@

 CONTENT_EXPORT extern const char kDisableWebAudio[];

-#if defined(OS_CHROMEOS)
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
 CONTENT_EXPORT extern const char kDisablePanelFitting[];
 CONTENT_EXPORT extern const char kDisableVaapiAcceleratedVideoEncode[];
 #endif
Index: beta.vivid/media/media.gyp
===================================================================
--- beta.vivid.orig/media/media.gyp 2014-12-04 09:32:45.344607112 -0500
+++ beta.vivid/media/media.gyp  2014-12-04 09:32:45.342607150 -0500
@@ -672,7 +672,7 @@
           ],
         }],
         # For VaapiVideoEncodeAccelerator.
-        ['target_arch != "arm" and chromeos == 1 and use_x11 == 1', {
+        ['target_arch != "arm" and (chromeos == 1 or desktop_linux == 1) and use_x11 == 1', {
           'sources': [
             'filters/h264_bitstream_buffer.cc',
             'filters/h264_bitstream_buffer.h',
Index: beta.vivid/gpu/config/software_rendering_list_json.cc
===================================================================
--- beta.vivid.orig/gpu/config/software_rendering_list_json.cc  2014-12-04 09:32:45.344607112 -0500
+++ beta.vivid/gpu/config/software_rendering_list_json.cc   2014-12-04 09:32:45.343607131 -0500
@@ -508,8 +508,8 @@
     },
     {
       "id": 48,
-      "description": "Accelerated video decode is unavailable on Mac and Linux",
-      "cr_bugs": [137247, 133828],
+      "description": "Accelerated video decode is unavailable on Mac",
+      "cr_bugs": [133828],
       "exceptions": [
         {
           "os": {
@@ -525,6 +525,11 @@
           "os": {
             "type": "android"
           }
+        },
+        {
+          "os": {
+            "type": "linux"
+          }
         }
       ],
       "features": [
Index: beta.vivid/content/common/sandbox_linux/bpf_gpu_policy_linux.cc
===================================================================
--- beta.vivid.orig/content/common/sandbox_linux/bpf_gpu_policy_linux.cc    2014-12-04 09:32:45.344607112 -0500
+++ beta.vivid/content/common/sandbox_linux/bpf_gpu_policy_linux.cc 2014-12-04 09:32:45.343607131 -0500
@@ -21,6 +21,8 @@
 #include "base/logging.h"
 #include "base/memory/scoped_ptr.h"
 #include "build/build_config.h"
+// Auto-generated for dlopen libva libraries
+#include "content/common/gpu/media/va_stubs.h"
 #include "content/common/sandbox_linux/sandbox_bpf_base_policy_linux.h"
 #include "content/common/sandbox_linux/sandbox_seccomp_bpf_linux.h"
 #include "content/common/set_process_title.h"
@@ -30,6 +32,8 @@
 #include "sandbox/linux/seccomp-bpf-helpers/syscall_sets.h"
 #include "sandbox/linux/services/linux_syscalls.h"
 #include "sandbox/linux/syscall_broker/broker_process.h"
+#include "third_party/libva/va/va.h"
+#include "third_party/libva/va/va_x11.h"

 using sandbox::BrokerProcess;
 using sandbox::SyscallSets;
@@ -38,6 +42,14 @@
 using sandbox::bpf_dsl::ResultExpr;
 using sandbox::bpf_dsl::Trap;

+using content_common_gpu_media::kModuleVa;
+using content_common_gpu_media::InitializeStubs;
+using content_common_gpu_media::StubPathMap;
+
+// libva-x11 depends on libva, so dlopen libva-x11 is enough
+static const base::FilePath::CharType kVaLib[] =
+    FILE_PATH_LITERAL("libva-x11.so.1");
+
 namespace content {

 namespace {
@@ -238,19 +250,38 @@
     // Accelerated video dlopen()'s some shared objects
     // inside the sandbox, so preload them now.
     if (IsAcceleratedVideoEnabled()) {
-      const char* I965DrvVideoPath = NULL;
+      StubPathMap paths;
+      paths[kModuleVa].push_back(kVaLib);
+      if (!InitializeStubs(paths)) {
+        return false;
+      }

-      if (IsArchitectureX86_64()) {
-        I965DrvVideoPath = "/usr/lib64/va/drivers/i965_drv_video.so";
-      } else if (IsArchitectureI386()) {
-        I965DrvVideoPath = "/usr/lib/va/drivers/i965_drv_video.so";
+      // libva drivers won't get loaded even above two libraries get dlopened.
+      // Thus, libva calls will fail after post sandbox stage.
+      //
+      // To get the va driver loadded before sandboxing, upstream simply dlopen
+      // the hard-coded va driver path because ChromeOS is the only platform
+      // that Google want to support libva.
+      //
+      // While generic linux distros ship va driver as anywhere they want.
+      // Fortunately, the va driver will be loadded when vaInitialize() get
+      // called.
+      // So the following code is to call vaInitialize() before sandboxing.
+      Display* x_display = XOpenDisplay(NULL);
+      VADisplay va_display = vaGetDisplay(x_display);
+      if (!vaDisplayIsValid(va_display)) {
+        DVLOG(1) << "Failed to call vaGetDisplay()";
+        return false;
       }

-      dlopen(I965DrvVideoPath, RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE);
-      dlopen("libva.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE);
-      dlopen("libva-x11.so.1", RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE);
-    }
-  }
+      int major_version, minor_version;
+      if (vaInitialize(va_display, &major_version, &minor_version)
+          != VA_STATUS_SUCCESS) {
+        DVLOG(1) << "Failed to call vaInitialize()";
+        return false;
+      }
+    }  // end of IsAcceleratedVideoDecodeEnabled()
+  }  // end of IsArchitectureX86_64() || IsArchitectureI386()

   return true;
 }

1
যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
ম্যাডমাইক

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