(Sent after the fact... sorry.) This represents a medling of GL_ARB_viewport_array code written by Courtney Goeltzenleuchter (LunarG) and myself over the last couple months. It implements all of the core Mesa code for the extension and enables it in the i965 driver.
Like layered rendering, this extension depends on geometry shaders, so it is currently only enabled in core profiles. There is one bit of core Mesa code that behaves differently when the extension is enabled (see "mesa: Add new viewport and depth-range entry points for GL_ARB_viewport_array"), so the enable flag is only set by the i965 driver in core profile. When multiple viewports, depth ranges, or scissor rectangles are updated in one API call, the driver is only notified once, at the end. There is also no per-viewport "dirty" tracking. The i965 driver has to send all of the data when anything changes, so it didn't need that feature. If some other hardware could use per-viewport dirty tracking as an optimization, it would be trivial to add that tracking to the gl_context. Then the driver state update (or dd_function_table::Viewport) function could consult the appropriate dirty bits before doing the update. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev