[PATCH] [xorg-dev][xserver] Full support of sRGB capable fbconfigs.
Tomasz Lis
listom at gmail.com
Mon Jan 7 08:37:44 PST 2013
2013/1/5 Ian Romanick <idr at freedesktop.org>
> On 12/05/2012 04:17 AM, Tomasz Lis wrote:
>
>> 2012/12/4 Jon TURNEY <jon.turney at dronecode.org.uk
>> <mailto:jon.turney at dronecode.**org.uk <jon.turney at dronecode.org.uk>>>
>>
>>
>> On 04/12/2012 15:28, Tomasz Lis wrote:
>> > These are not all the changes, sorry for that.
>> >
>> > It seems I don't know how to correctly re-send the patch.
>> >
>> > 2012/12/4 <listom-**Re5JQEeQqe8AvxtiuMwx3w at public.**gmane.org<listom-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org>
>> <mailto:listom-**Re5JQEeQqe8AvxtiuMwx3w at public.**gmane.org<listom-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org>
>> >>
>> >
>> >> From: Tomasz Lis
>> <tomasz.lis-**ral2JQCrhuEAvxtiuMwx3w at public.**gmane.org<tomasz.lis-ral2JQCrhuEAvxtiuMwx3w at public.gmane.org>
>> <mailto:tomasz.lis-**ral2JQCrhuEAvxtiuMwx3w at public.**gmane.org<tomasz.lis-ral2JQCrhuEAvxtiuMwx3w at public.gmane.org>
>> >>
>>
>> >>
>> >> Changes to correctly initialize the sRGB capability attribute and
>> >> transfer it between XServer and the client. Modifications include
>> >> extension string, transferring visual config attribs and fbconfig
>> >> attribs. Also, attribute is initialized in the modules which do
>> not
>> >> really use it (xquartz and xwin).
>> >> This version advertises both ARB and EXT strings, and initializes
>> >> the capability to default value of FALSE.
>>
>> Your updated patch doesn't seem to address idr's comment that you
>> must not
>> send the GLX_FRAMEBUFFER_SRGB_CAPABLE_**EXT token to clients that
>> don't
>> understand it.
>>
>> I am not sure of the mechanism for a client to indicate this
>> understanding.
>>
>> This is true, the issue isn't closed yet.
>> Please refer to the discussion over previous version of the patch. It
>> ended with me asking:
>>
>> Do you still think we need a change here? Do you think we should filter
>> whole configs, or only attributes within configs?
>> Do you have a concept on how to implement it?
>> This seem to be a big issue, maybe we could commit the changes as they
>> are, and then think about a solution?
>>
>
> I looked into this a bit more. The problem is that without
> GLX_ARB_create_context, the client doesn't tell the server what extensions
> it supports. That effectively makes it impossible to do this checking
> without that extension.
>
> Since Mesa already supports that extension, I think it's okay to rely on
> it. However, we currently just drop the client's GLX extension list after
> receiving it. We'll have to keep track of it (probably by converting the
> strings to flags, as is done with GL extensions).
>
> I believe we should take the following steps.
>
> 1. For configs that have the default value, do not send the extension
> attribute to the client. This allows the client to just drop configs that
> contain unknown attributes. This also means that some "padding" attributes
> will have to be inserted so that every config has the same number of
> attributes.
>
> 2. Modify Mesa's libGL to drop configs with unknown attributes (and
> back-port the patch to at least the 9.0 release tree).
>
> 3. For now, send extension attributes for configs that have non-default
> values to the client.
>
> 4. Add xserver infrastructure to track the client-supported GLX extensions.
>
> 5. Only send configs with non-default valued extension attributes if the
> client supports the required extension.
>
> Tomasz, can you handle steps 1 and 3 in your patch series?
>
> I don't really think it's a good idea to keep the constant amount of
attributes while not sending some of them - but it's up to you, I can agree
to your solution.
The question is - what should be the padding value? We could use GL_FALSE
or GLX_DONT_CARE as attribute ID, or define our own value. I recommend
null-terminating the list, with either GL_FALSE or our own new define - ie.
GLX_END_LIST. Bringing our own definition requires to add it to a header,
glx.h or glxext.h - so using GL_FALSE is simpler. Also, I think it would be
best if the list was always null-terminated - even if no attributes are
skipped.
Remember that the padding attribute ID must be ignored by MESA (so it
influences step 2 on your list).
Let me know which solution you prefer.
> >>
>> >> Signed-off-by: Tomasz Lis
>> <tomasz.lis-**ral2JQCrhuEAvxtiuMwx3w at public.**gmane.org<tomasz.lis-ral2JQCrhuEAvxtiuMwx3w at public.gmane.org>
>> <mailto:tomasz.lis-**ral2JQCrhuEAvxtiuMwx3w at public.**gmane.org<tomasz.lis-ral2JQCrhuEAvxtiuMwx3w at public.gmane.org>
>> >>
>>
>> >> ---
>> >> glx/extension_string.c | 2 ++
>> >> glx/extension_string.h | 2 ++
>> >> glx/glxcmds.c | 7 +++++--
>> >> glx/glxdri2.c | 7 +++++++
>> >> glx/glxdricommon.c | 4 +++-
>> >> glx/glxscreens.c | 2 ++
>> >> glx/glxscreens.h | 3 +++
>> >> hw/xquartz/GL/visualConfigs.c | 3 +++
>> >> hw/xwin/glx/indirect.c | 2 ++
>> >> 9 files changed, 29 insertions(+), 3 deletions(-)
>> >>
>> >> diff --git a/glx/extension_string.c b/glx/extension_string.c
>> >> index 544ca1f..70dc915 100644
>> >> --- a/glx/extension_string.c
>> >> +++ b/glx/extension_string.c
>> >> @@ -71,9 +71,11 @@ static const struct extension_info
>> >> known_glx_extensions[] = {
>> >> { GLX(ARB_create_context), VER(0,0), N, },
>> >> { GLX(ARB_create_context_**profile), VER(0,0), N, },
>> >> { GLX(ARB_create_context_**robustness), VER(0,0), N, },
>> >> + { GLX(ARB_framebuffer_sRGB), VER(1,1), N, },
>> >> { GLX(ARB_multisample), VER(1,4), Y, },
>> >>
>> >> { GLX(EXT_create_context_es2_**profile), VER(0,0), N, },
>> >> + { GLX(EXT_framebuffer_sRGB), VER(1,1), N, },
>>
>> According to the comments above, writing VER(1,1) here means that this
>> extension is required in GLX 1.1 (although this data is not used in
>> the X
>> server). I don't think that's true, and you should be writing
>> VER(0,0).
>>
>> I'm not entirely sure that this should be reported as a GLX
>> extension at all.
>>
>>
>> The ARB_framebuffer_sRGB spec says it is GLX extension.
>> But you are completely right with the versions - OGL 1.3 has no relation
>> to this extension, so GLX specs up to 1.4 definitely don't require it.
>> Agreed to change required GLX version to (0,0).
>>
>> >> --- a/glx/glxscreens.c
>> >> +++ b/glx/glxscreens.c
>> >> @@ -164,7 +164,9 @@ static char GLXServerVendorName[] = "SGI";
>> >> unsigned glxMajorVersion = SERVER_GLX_MAJOR_VERSION;
>> >> unsigned glxMinorVersion = SERVER_GLX_MINOR_VERSION;
>> >> static char GLXServerExtensions[] =
>> >> + "GLX_ARB_framebuffer_sRGB "
>> >> "GLX_ARB_multisample "
>> >> + "GLX_EXT_framebuffer_sRGB "
>> >> "GLX_EXT_visual_info "
>> >> "GLX_EXT_visual_rating "
>> >> "GLX_EXT_import_context "
>>
>> This is the static list of extensions reported for swrast. I don't
>> think this
>> extension belongs here.
>>
>>
>> You're right. Agreed to remove.
>>
>> ______________________________**_________________
>> xorg-devel at lists.x.org: X.Org development
>> Archives: http://lists.x.org/archives/**xorg-devel<http://lists.x.org/archives/xorg-devel>
>> Info: http://lists.x.org/mailman/**listinfo/xorg-devel<http://lists.x.org/mailman/listinfo/xorg-devel>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20130107/73b58d94/attachment.html>
More information about the xorg-devel
mailing list