Skip to content
Snippets Groups Projects
  1. Jul 19, 2013
    • Tomasz Lis's avatar
      mesa: Dispatch ARB_framebuffer_object and EXT_framebuffer_object differently · 9f07ca11
      Tomasz Lis authored
      
      Almost all of the functions between the ARB and the EXT share the same
      GLX protocol because the functionality is, essentially, identical.
      However, there are some differences between the extensions:
      
      - In the ARB extension, names must come from glGenBuffers.
      
      - In the ARB extension, framebuffer objects are not shared (but they are
        in the EXT).
      
      For these reasons, glBindFramebuffer and glBindRenderbuffer have
      different GLX protocol opcodes than their EXT counterparts.  Currently
      these functions alias each other in the dispatch table.  This makes it
      impossible to be truly spec conformant.
      
      This patch enables fixing the conformance issue by splitting
      glBindFramebuffer / glBindFramebufferEXT and glBindRenderbuffer /
      glBindRenderbufferEXT into separate dispatch table entries.
      
      Patches will be available shortly to:
      
      - Fix the conformance issue.
      
      - Stop advertising the EXT in OpenGL 3.1 (or core profiles).
      
      HOWEVER, this does represent a compatibility break between the loader
      (libGL or the Xserver GLX module) and the driver.  Mesa drivers compiled
      without this change will request a single dispatch table entry for
      glBindFramebuffer and glBindFramebufferEXT.  Since the updated loader
      has different entries for each, the request will fail, and the driver
      will die in a fire.
      
      Drivers built with the change should continue to load fine on loaders
      without the change.  In this case, the driver will separately ask for
      entries for glBindFramebuffer and glBindFramebufferEXT, and the loader
      will tell it the same location.  Since the loader in the server's GLX
      module is not (yet) updated, this should not be a problem.  We also do
      not advertise the ARB extension from the server, so, again, this should
      not be a problem for the server.
      
      HOWEVER, this means that DRI1 drivers (remember mga_dri.so?) will no
      longer load with libGL build hereafter.  That means this patch will need
      to be back ported to the 8.0 branch.
      
      v2 (idr): Added missing GLX protocol opcodes for the EXT functions and
      corrected the opcodes for the ARB functions.  Updated GLX indirect_api
      unit test and dispatch sanity unit test.
      
      Signed-off-by: default avatarTomasz Lis <tomasz.lis@intel.com>
      Signed-off-by: default avatarBartosz Zawistowski <bartosz.l.zawistowski@intel.com>
      Signed-off-by: default avatarIan Romanick <ian.d.romanick@intel.com>
      Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> [v1]
  2. Jul 18, 2013
Loading