[Mesa-dev] [PATCH 1/2] mesa: fix up GLSL version when computing GL version

Ilia Mirkin imirkin at alum.mit.edu
Mon Apr 27 07:41:23 PDT 2015


On Mon, Apr 27, 2015 at 10:22 AM, Brian Paul <brianp at vmware.com> wrote:
> On 04/27/2015 08:05 AM, Ilia Mirkin wrote:
>>
>> On Mon, Apr 27, 2015 at 9:58 AM, Brian Paul <brianp at vmware.com> wrote:
>>>
>>> On 04/27/2015 07:39 AM, Ilia Mirkin wrote:
>>>>
>>>>
>>>> On Mon, Apr 27, 2015 at 9:38 AM, Brian Paul <brianp at vmware.com> wrote:
>>>>>
>>>>>
>>>>> On 04/27/2015 07:23 AM, Ilia Mirkin wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Some required extension might be missing, and we may expose a GLSL
>>>>>> version that does not match up with the GL version. Fix that up when
>>>>>> computing the GL version.
>>>>>>
>>>>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>>>>> ---
>>>>>>     src/mesa/main/version.c | 11 ++++++++++-
>>>>>>     1 file changed, 10 insertions(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
>>>>>> index a65ace0..bf0a1cf 100644
>>>>>> --- a/src/mesa/main/version.c
>>>>>> +++ b/src/mesa/main/version.c
>>>>>> @@ -207,7 +207,7 @@ _mesa_override_glsl_version(struct gl_constants
>>>>>> *consts)
>>>>>>      */
>>>>>>     static GLuint
>>>>>>     compute_version(const struct gl_extensions *extensions,
>>>>>> -                const struct gl_constants *consts, gl_api api)
>>>>>> +                struct gl_constants *consts, gl_api api)
>>>>>>     {
>>>>>>        GLuint major, minor, version;
>>>>>>
>>>>>> @@ -330,38 +330,47 @@ compute_version(const struct gl_extensions
>>>>>> *extensions,
>>>>>>        if (ver_4_2) {
>>>>>>           major = 4;
>>>>>>           minor = 2;
>>>>>> +      consts->GLSLVersion = 420;
>>>>>>        }
>>>>>>        else if (ver_4_1) {
>>>>>>           major = 4;
>>>>>>           minor = 1;
>>>>>> +      consts->GLSLVersion = 410;
>>>>>>        }
>>>>>>        else if (ver_4_0) {
>>>>>>           major = 4;
>>>>>>           minor = 0;
>>>>>> +      consts->GLSLVersion = 400;
>>>>>>        }
>>>>>>        else if (ver_3_3) {
>>>>>>           major = 3;
>>>>>>           minor = 3;
>>>>>> +      consts->GLSLVersion = 330;
>>>>>>        }
>>>>>>        else if (ver_3_2) {
>>>>>>           major = 3;
>>>>>>           minor = 2;
>>>>>> +      consts->GLSLVersion = 150;
>>>>>>        }
>>>>>>        else if (ver_3_1) {
>>>>>>           major = 3;
>>>>>>           minor = 1;
>>>>>> +      consts->GLSLVersion = 140;
>>>>>>        }
>>>>>>        else if (ver_3_0) {
>>>>>>           major = 3;
>>>>>>           minor = 0;
>>>>>> +      consts->GLSLVersion = 130;
>>>>>>        }
>>>>>>        else if (ver_2_1) {
>>>>>>           major = 2;
>>>>>>           minor = 1;
>>>>>> +      consts->GLSLVersion = 120;
>>>>>>        }
>>>>>>        else if (ver_2_0) {
>>>>>>           major = 2;
>>>>>>           minor = 0;
>>>>>> +      consts->GLSLVersion = 110;
>>>>>>        }
>>>>>>        else if (ver_1_5) {
>>>>>>           major = 1;
>>>>>>
>>>>>
>>>>> This looks OK, but another approach might be to have a new function
>>>>> which
>>>>> returns the GLSL version for a given GL version (could be encoded in a
>>>>> small
>>>>> table).  Then, use that function to clamp/set consts->GLSLVersion.
>>>>> That
>>>>> way
>>>>> we can keep the nice const-ness of the compute_version() parameters.
>>>>
>>>>
>>>>
>>>> Where do you envision the clamping be done?
>>>
>>>
>>>
>>> How about _mesa_compute_version()?
>>
>>
>> ... which is the only caller of compute_version().
>
>
> Via _mesa_get_version() which also called from st_manager.c which seems to
> be unconcerned with GLSL stuff.
>
>
>> You just want it
>> split up into a separate switch statement or something?
>
>
> As I said, I thought a table would work, but a switch would be fine too.
>
> If you feel this is too much work, it's not that big of deal.  I just
> thought it would be cleaner.

Nope, not too much work, just trying to tease out what you want me to
do. I got confused between _mesa_compute_version and
_mesa_get_version. It does seem like a switch is simpler than a table
though. (The table would have to be indexed by GL version, which is
pretty sparse if you do versions like 20, 33 and 40.)

  -ilia


More information about the mesa-dev mailing list