Rob Clark edited this page Aug 8, 2015 · 21 revisions

Here is a list of things needed, in no particular order.


  • misc:
    • MSAA
    • tiled textures
    • Video Encode/Decode
    • Emulate unsupported texture wrap modes in shader - a3xx does not seem to support mirror-clamp, mirror-clamp-to-border, and mirror-clamp-to-edge seems to only work for power-of-two textures.
      • emulation for GL_CLAMP done, for others we have stopped advertising the extensions for now
  • compiler:
    • add relative addressing support to new-compiler (and remove legacy compiler)
    • integer support
    • loops / switch / subroutines
    • note gallium will unroll loops with constant # of iterations, and inline functions, if the gallium driver does not support.. sufficient for simple shaders and gles2.
    • derivative support (TGSI_OPCODE_DDX, TGSI_OPCODE_DDY)
  • gl2 support:
    • occlusion query
    • additionally sRGB texture support will bring us up to gl2.1
  • gles3
    • GLSL version level 130 (integer support, loops, and ??)
    • note non-unrollable loops (which are less common) still missing, but we advertise glsl 130 all the same
    • packed float (PIPE_FORMAT_R11G11B10_FLOAT)
    • EXT_texture_shared_exponent (PIPE_FORMAT_R9G9B9E5_FLOAT)
    • transform feedback
    • sRGB framebuffer support
    • UBO's
    • MRT
  • gl3 support:
    • GLSL version level 130 (integer support and ??)
    • texture compression (PIPE_FORMAT_RGTC{1,2}_{U,S}NORM)
    • packed float (PIPE_FORMAT_R11G11B10_FLOAT)
    • EXT_texture_shared_exponent (PIPE_FORMAT_R9G9B9E5_FLOAT)
    • transform feedback
    • MSAA >= 4
    • 32b float depth (PIPE_FORMAT_Z32_FLOAT and PIPE_FORMAT_Z32_FLOAT_S8X24_UINT)
    • NV_conditional_render (PIPE_CAP_CONDITIONAL_RENDER)
  • gl3.1 support:

NOTE: gl3 is a bit more of a stretch goal.. a2xx will never be able to support gl3, a3xx may be able to but I'm unsure about some features. But at least enabling the features that are possible will enable some gl3 functionality via extensions.


  • add support for EGL_ARM_pixmap_multisample_discard and/or GL_EXT_multisampled_render_to_texture.. either or both of these would be a big win for MSAA on tiler gpu's. Also would be possibly worthwhile to implement a GL/GLX version of the same extensions. Extension needs to be implemented in mesa and multisample-discard attribute passed through to gallium driver.


  • XA composite support
    • NOTE: I still have some work-in-progress patches to XA state tracker to add support more composite operations (eg. solid-fill src or mask, etc), which prevents sw fallbacks in a lot of cases. With this we are actually faster than software.
  • Xv support
    • possibly lower priority, as a lot of apps (totem, media-explorer, xbmc, etc) support gl rendering, but would be nice to have for completeness

drm/msm (kernel):

  • mdp4 (apq8060, apq8064, etc):
    • DSI support
    • LVDS support
    • YUV plane (overlay)
    • plane scaling
  • mdp5 (apq8074, etc):
    • DSI support
    • displayport support
    • YUV plane (overlay)
    • plane scaling
    • hw cursor