[GPU] FlexRendering (Hybrid Deferred and Direct Rendering Mode)

며칠 전에 작성한 Tile-based Rendering을 공부하다가 Qualcomm Developer Guide에서 찾은 내용인데 Tile-based와 Immediate Mode Rendering을 자동으로 선택해주는 방법이 있는 것 같다. 해당 부분은 ARM Mali GPU에서는 지원하는지 모르겠다. Qualcomm (QTI) 의 경우 자동으로 Tile-based Rendering 또는 Immediate Mode Rendering을 선택하는 것 같다. 출처 1에 따르면 Tile-based Rendering을 Binned Rendering이라 표현하였고, Immediate Mode Rendering의 경우 Direct Rendering이라고 표현하였다.  Tile-based Rendering과 Binned Rendering은 거의 흡사한 개념인 것 같다.

FlexRender (Hybrid Deferred and Direct Rendering Mode)

QTI는 Adreno 3x, 4x, 5x, 아마도 6x에서 FlexRender기법을 지원한다. FlexRender은 간단히 Tile-based Rendering (Indirect Rendering, Binning, or Deferred Rendering) 또는 Immediate Mode Rendering (Direct Rendering) 모드를 자동으로 전환하는 것이다. 며칠 전 작성한 블로그 글에서 설명한 것과 같이 각 Rendering 모드는 Advantage가 존재한다. Adreno 3x, 4x, 5x (아마도 6x)에서는 최적의 시나리오를 찾아서 자동으로 Rendering Mode를 선택한다.

더 이상의 설명은 없는데 아마도 Driver가 선택을 해줘야 하는 게 아닌가 판단된다. 하드웨어 입장에서 단순히 드라이버가 보내는 Work만을 수행하기 때문에 어떤 Rendering 방법이 더 좋다고 판단하기 어려울 것 같다. 이와 더불어 최적의 시나리오 선택을 하나의 Draw Call 단위로 정하는지, 아니면 Rendering Pass 단위로 정하는지, 아님 Framebuffer을 그리는 단위로 정하는지 알지 못한다.

출처

  1. https://developer.arm.com/graphics/developer-guides/tile-based-rendering
  2. https://www.qualcomm.com/videos/flexrender

 

Leave a Comment