Module: Mesa
Branch: master
Commit: 49fb7f9e5cef05182a72b39dea17b43c77f0240b
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=49fb7f9e5cef05182a72b39dea17b43c77f0240b

Author: Adam Jackson <[email protected]>
Date:   Fri Mar 26 15:52:26 2021 -0400

dri: Explicitly handle all the config attributes

The code is broken elsewhere and requires that the attrib map actually
be large enough.

Reviewed-by: Eric Anholt <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9817>

---

 src/mesa/drivers/dri/common/utils.c | 33 +++++++++++++++++++++++++++++----
 1 file changed, 29 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/common/utils.c 
b/src/mesa/drivers/dri/common/utils.c
index 58671d6935a..93b621c56b5 100644
--- a/src/mesa/drivers/dri/common/utils.c
+++ b/src/mesa/drivers/dri/common/utils.c
@@ -449,13 +449,9 @@ static const struct { unsigned int attrib, offset; } 
attribMap[] = {
     __ATTRIB(__DRI_ATTRIB_TRANSPARENT_BLUE_VALUE,      transparentBlue),
     __ATTRIB(__DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE,     transparentAlpha),
     __ATTRIB(__DRI_ATTRIB_RED_MASK,                    redMask),
-    __ATTRIB(__DRI_ATTRIB_RED_SHIFT,                   redShift),
     __ATTRIB(__DRI_ATTRIB_GREEN_MASK,                  greenMask),
-    __ATTRIB(__DRI_ATTRIB_GREEN_SHIFT,                 greenShift),
     __ATTRIB(__DRI_ATTRIB_BLUE_MASK,                   blueMask),
-    __ATTRIB(__DRI_ATTRIB_BLUE_SHIFT,                  blueShift),
     __ATTRIB(__DRI_ATTRIB_ALPHA_MASK,                  alphaMask),
-    __ATTRIB(__DRI_ATTRIB_ALPHA_SHIFT,                 alphaShift),
     __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_WIDTH,           maxPbufferWidth),
     __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_HEIGHT,          maxPbufferHeight),
     __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_PIXELS,          maxPbufferPixels),
@@ -469,12 +465,23 @@ static const struct { unsigned int attrib, offset; } 
attribMap[] = {
     __ATTRIB(__DRI_ATTRIB_YINVERTED,                   yInverted),
     __ATTRIB(__DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE,    sRGBCapable),
     __ATTRIB(__DRI_ATTRIB_MUTABLE_RENDER_BUFFER,       mutableRenderBuffer),
+    __ATTRIB(__DRI_ATTRIB_RED_SHIFT,                   redShift),
+    __ATTRIB(__DRI_ATTRIB_GREEN_SHIFT,                 greenShift),
+    __ATTRIB(__DRI_ATTRIB_BLUE_SHIFT,                  blueShift),
+    __ATTRIB(__DRI_ATTRIB_ALPHA_SHIFT,                 alphaShift),
 
     /* The struct field doesn't matter here, these are handled by the
      * switch in driGetConfigAttribIndex.  We need them in the array
      * so the iterator includes them though.*/
+    __ATTRIB(__DRI_ATTRIB_LUMINANCE_SIZE,               level),
     __ATTRIB(__DRI_ATTRIB_RENDER_TYPE,                 level),
     __ATTRIB(__DRI_ATTRIB_CONFIG_CAVEAT,               level),
+    __ATTRIB(__DRI_ATTRIB_CONFORMANT,                   level),
+    __ATTRIB(__DRI_ATTRIB_FLOAT_MODE,                   level),
+    __ATTRIB(__DRI_ATTRIB_VISUAL_SELECT_GROUP,          level),
+    __ATTRIB(__DRI_ATTRIB_MAX_SWAP_INTERVAL,            level),
+    __ATTRIB(__DRI_ATTRIB_MIN_SWAP_INTERVAL,            level),
+
 };
 
 
@@ -487,6 +494,9 @@ driGetConfigAttribIndex(const __DRIconfig *config,
                        unsigned int index, unsigned int *value)
 {
     switch (attribMap[index].attrib) {
+    case __DRI_ATTRIB_LUMINANCE_SIZE:
+        *value = 0;
+        break;
     case __DRI_ATTRIB_RENDER_TYPE:
         /* no support for color index mode */
        *value = __DRI_ATTRIB_RGBA_BIT;
@@ -501,6 +511,21 @@ driGetConfigAttribIndex(const __DRIconfig *config,
        else
            *value = 0;
        break;
+    case __DRI_ATTRIB_CONFORMANT:
+        *value = GL_TRUE;
+        break;
+    case __DRI_ATTRIB_FLOAT_MODE:
+        *value = config->modes.floatMode;
+        break;
+    case __DRI_ATTRIB_VISUAL_SELECT_GROUP:
+        *value = 0;
+        break;
+    case __DRI_ATTRIB_MAX_SWAP_INTERVAL:
+        *value = INT_MAX;
+        break;
+    case __DRI_ATTRIB_MIN_SWAP_INTERVAL:
+        *value = 0;
+        break;
     default:
         /* any other int-sized field */
        *value = *(unsigned int *)

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to