【Chromium】Gpu SoftWareRenderList

Chromium Gpu SoftWareRenderList

  • Chrome可以通過訪問 chrome://gpu,查看當前瀏覽器 Gpu特性。信息大體如下
Graphics Feature Status
Canvas: Hardware accelerated
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Out-of-process Rasterization: Disabled
Hardware Protected Video Decode: Unavailable
Rasterization: Hardware accelerated
Skia Deferred Display List: Disabled
Skia Renderer: Disabled
Surface Synchronization: Enabled
Video Decode: Hardware accelerated
Viz Service Display Compositor: Disabled
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
...
  • 可以看出,某些Gpu特性是關閉(Disable)的。
  • 那麼Chrome,是如何判斷關閉哪些GPU特性?
    Chrome使用Chromium內核,Chromium內核的GPU模塊中,定義了一張SoftWareRender表。Chromium通過該表,判斷是否將某些GPU特性加入到黑名單(Disable)中。

SoftWareRenderList

  • 代碼路徑:chromium/src/gpu/config/software_rendering_list.json。該文件中,使用Json,定義了一系列需要加入到黑名單中的GPU特性。
  • 下面爲部分代碼:id53,對於Intel GMA500,關閉flash_stage3d GPU Feature。
{
      "id": 53,
      "description": "The Intel GMA500 is too slow for Stage3D",
      "cr_bugs": [152096],
      "vendor_id": "0x8086",
      "device_id": ["0x8108", "0x8109"],
      "features": [
        "flash_stage3d"
      ]
    },
  • 原理:這裏簡單說一下,這個json文件,Chromium是如何使用的。
  1. Chromium編譯時,根據software_rendering_list.json,編譯生成相關的文件(software_rendering_list_autogen.cc)。
  2. software_rendering_list_autogen.cc中定義了一個名爲“kSoftwareRenderingListEntries”的數組類型。該數組類型中,加入了json文件中定義的規則。
  3. Chromium Gpu模塊的GpuBlacklist(gpu_blacklist.cc),在初始化時,使用kSoftwareRenderingListEntries這個數組。
  4. Chromium中使用GpuBlacklist,進行GPU特性的判斷。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章