summaryrefslogtreecommitdiffstats
path: root/src/glx/glxglvnd.c
Commit message (Collapse)AuthorAgeFilesLines
* Avoid overflow in 'last' variable of FindGLXFunction(...)Stefan Dirsch2016-07-201-3/+3
| | | | | | | | | | | | | | This 'last' variable used in FindGLXFunction(...) may become negative, but has been defined as unsigned int resulting in an overflow, finally resulting in a segfault when accessing _glXDispatchTableStrings[...]. Fixed this by definining it as signed int. 'first' variable also needs to be defined as signed int. Otherwise condition for while loop fails due to C implicitly converting signed to unsigned values before comparison. Cc: <[email protected]> Signed-off-by: Stefan Dirsch <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* glx/glvnd: rework dispatch functions/indices tables lookupEmil Velikov2016-05-301-11/+8
| | | | | | | | | | | Rather than checking if the function name maps to a valid entry in the respective table, just create a dummy entry at the end of each table. This allows us to remove some unnessesary "index >= 0" checks, which get executed quite often. Reviewed-by: Adam Jackson <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* glx/glvnd: Use strcmp() based binary search in FindGLXFunction()Emil Velikov2016-05-301-5/+14
| | | | | | | | | | It will allows us to find the function within 6 attempts, out of the ~80 entry long table. v2: calculate middle on each iteration, correctly set the lower limit. Reviewed-by: Adam Jackson <[email protected]> (v1) Signed-off-by: Emil Velikov <[email protected]>
* glx: Implement the libglvnd interface.Kyle Brenneman2016-05-301-0/+75
With reference to the libglvnd branch: https://cgit.freedesktop.org/mesa/mesa/log/?h=libglvnd This is a squashed commit containing all of Kyle's commits, all but two of Emil's commits (to follow), and a small fixup from myself to mark the rest of the glX* functions as _GLX_PUBLIC so they are not exported when building for libglvnd. I (ajax) squashed them together both for ease of review, and because most of the changes are un-useful intermediate states representing the evolution of glvnd's internal API. Co-author: Emil Velikov <[email protected]> Reviewed-by: Adam Jackson <[email protected]>