diff options
Diffstat (limited to 'www/iridium/files/patch-gpu_ipc_service_gpu__init.cc')
-rw-r--r-- | www/iridium/files/patch-gpu_ipc_service_gpu__init.cc | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/www/iridium/files/patch-gpu_ipc_service_gpu__init.cc b/www/iridium/files/patch-gpu_ipc_service_gpu__init.cc new file mode 100644 index 000000000000..2dff9b7c455a --- /dev/null +++ b/www/iridium/files/patch-gpu_ipc_service_gpu__init.cc @@ -0,0 +1,136 @@ +--- gpu/ipc/service/gpu_init.cc.orig 2020-03-16 18:40:32 UTC ++++ gpu/ipc/service/gpu_init.cc +@@ -109,7 +109,7 @@ void InitializePlatformOverlaySettings(GPUInfo* gpu_in + #endif + } + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)) || defined(OS_BSD) + bool CanAccessNvidiaDeviceFile() { + bool res = true; + base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, +@@ -120,7 +120,7 @@ bool CanAccessNvidiaDeviceFile() { + } + return res; + } +-#endif // OS_LINUX && !OS_CHROMEOS && !BUILDFLAG(IS_CHROMECAST) ++#endif // (OS_LINUX && !OS_CHROMEOS && !BUILDFLAG(IS_CHROMECAST)) || defined(OS_BSD) + + class GpuWatchdogInit { + public: +@@ -170,7 +170,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + gpu_info_.subpixel_font_rendering = true; + #endif + +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + if (gpu_info_.gpu.vendor_id == 0x10de && // NVIDIA + gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile()) + return false; +@@ -221,7 +221,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + delayed_watchdog_enable = true; + #endif + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // PreSandbox is mainly for resource handling and not related to the GPU + // driver, it doesn't need the GPU watchdog. The loadLibrary may take long + // time that killing and restarting the GPU process will not help. +@@ -266,7 +266,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + } + + bool attempted_startsandbox = false; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + // On Chrome OS ARM Mali, GPU driver userspace creates threads when + // initializing a GL context, so start the sandbox early. + // TODO(zmo): Need to collect OS version before this. +@@ -275,7 +275,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + watchdog_thread_.get(), &gpu_info_, gpu_preferences_); + attempted_startsandbox = true; + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) && !defined(OS_BSD) + + base::TimeTicks before_initialize_one_off = base::TimeTicks::Now(); + +@@ -299,14 +299,14 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + } + if (gl_initialized && use_swiftshader && + gl::GetGLImplementation() != gl::kGLImplementationSwiftShaderGL) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly " + << "on Linux"; + return false; + #else + gl::init::ShutdownGL(true); + gl_initialized = false; +-#endif // OS_LINUX ++#endif // OS_LINUX || OS_BSD + } + + if (!gl_initialized) { +@@ -332,7 +332,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + } + } + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + // The ContentSandboxHelper is currently the only one implementation of + // gpu::GpuSandboxHelper and it has no dependency. Except on Linux where + // VaapiWrapper checks the GL implementation to determine which display +@@ -370,7 +370,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + command_line, gpu_feature_info_, + gpu_preferences_.disable_software_rasterizer, false); + if (use_swiftshader) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly " + << "on Linux"; + return false; +@@ -384,7 +384,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + << "failed"; + return false; + } +-#endif // OS_LINUX ++#endif // OS_LINUX || OS_BSD + } + } else { // use_swiftshader == true + switch (gpu_preferences_.use_vulkan) { +@@ -440,7 +440,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + + InitializePlatformOverlaySettings(&gpu_info_); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Driver may create a compatibility profile context when collect graphics + // information on Linux platform. Try to collect graphics information + // based on core profile context after disabling platform extensions. +@@ -459,7 +459,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + return false; + } + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + if (use_swiftshader) { + AdjustInfoToSwiftShader(); +@@ -637,7 +637,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c + + InitializePlatformOverlaySettings(&gpu_info_); + +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Driver may create a compatibility profile context when collect graphics + // information on Linux platform. Try to collect graphics information + // based on core profile context after disabling platform extensions. +@@ -657,7 +657,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c + } + } + } +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) + + if (use_swiftshader) { + AdjustInfoToSwiftShader(); |