On 31/03/16 17:26, Emil Velikov wrote:
On 31 March 2016 at 12:21, Jose Fonseca <[email protected]> wrote:
On 31/03/16 00:44, Emil Velikov wrote:

On 30 March 2016 at 21:54, Jose Fonseca <[email protected]> wrote:

On 30/03/16 11:14, Emil Velikov wrote:


On 29 March 2016 at 23:53, Ilia Mirkin <[email protected]> wrote:


Isn't this backwards? Shouldn't waffle just work without the
ARB_create_context or whatever ext and just create a context and see
what version it is?

It isn't, imho.

Waffle follows the GL winsys semantics, as such it should not do more
(create a context, make it current, etc) unless explicitly asked. It
translates the winsys/platform specifics, not the GL crazy. Although I
can see how one would want both to be hidden/handled in waffle.

That's my take on it, at least. If people familiar with waffle think
I've misunderstood things, please shout.

-Emil



FWIW, I agree with Ilia.  Ideally Waffle should abstract away these sort
of
behavioral differences.

On Mac, there isn't even WGL/GLX_ARB_create_context equivalent.

Indeed that's correct. I'm afraid I don't get how that's applicable here
:-(

Furthermore, not setting WAFFLE_CONTEXT_DEBUG for 2.x context is IMO a
functionality regression here. Many implementations support debug for 2.x
contexts, and it can be quite useful for diagnosing issues.

Can you please elaborate - are you talking about a 3.0+ capable
driver, where the user requests a debug context and version 2.x via
ARB_create_context ? It does sound a bit strange, but sure.


Yes, if somebody wants to debug a 2.x OpenGL application, there's no other
way to do it.

apitrace does this for the record.  By default it will enable debug context
on every context.  Even if it was a 1.x context.

There's nothing strange about it.

"Strange" being - one is actually working out how to request a debug
context and at the same time they're not using any of the 'performance
enhancing' GL 3.0+ goodies.

Note https://www.opengl.org/registry/specs/KHR/debug.txt says the minimum
required is OpenGL 1.1.  Not 3.0.  Allowing debugging 1.x 2.x was a design
goal from the start.



So when a app requests a context <= 3.0

Am I loosing my mind here or the comparison is the wrong way around ?
It should be requested_context >= 3.0, right ?


No, I wrote what I meant...

I don't think anynody is arguing what needs to be done for context > 3.0 --
the host should support WGL/GLX_ARB_create_context anyway and we should use
it.


My focus here is how to handle requests for 1.x/2.x context.  You propose
always use GLXCreateContext, I say that's throwing away the baby with the
water.

Arr there seems to be a misscomunication here - the this is exactly
what I was thinking/talking about (a few lines below).



: if the OpenGL implementation
supports WGL/GLX_ARB_create_context waffle should use it.  If not, it
should
request a ordinary context, and check the version matches the requested.


Waffle can use ARB_create_context for 3.0+/debug/fwd compat context,
although it cannot do the make_current and alike for on behalf of the
user. It doesn't need to either - piglit already checks the version
:-)

Does this sound like a good middle ground ?


I don't really understand what you're proposing.  I suspect we're talking
about different things.


Let me see if I can explain this differently.  Here is what I'd expect from
Waffle as app developer:

- If my app requests a 2.1 context and WGL/GLX_ARB_create_context is not
supported, Waffle should still create a context using
wglCreateContext/glxCreateContext.  (The point of using wrappers like Waffle
is hide away that complexity, otherwise one's better off talking the GLX/WGL
directly.)

- If an app requests a 2.1 debug context, Waffle should just honour it if
WGL/GLX_ARB_create_context.

Minor clarification:

  - If an app requests a 2.1 debug context, Waffle should just honour it if
WGL/GLX_ARB_create_context or error otherwise.

Right ?

Right.


This is precisely what I was saying earlier... so I believe I
understood you the first time ;-)
Just in case in an alternative form:

(somewhere in waffle)

if (requested_version > 3.0 ||
     requested_debug ||
     requested_fwd_compat)
    use_arb_create_context
else
    use_legacy_create_context

Sounds good!



This is BTW, what other similar wrappers do:

- https://github.com/raedwulf/glfw/blob/master/src/glx_context.c#L401

- https://github.com/apitrace/apitrace/blob/master/retrace/glws_glx.cpp#L345

Afaics there is a small (but significant) difference between waffle
and the above two. If you want a debug context and there's no way to
create one waffle will give you an error, as opposed to silently
ignoring you and creating a non-debug one ;-)

In fact, looking at waffle src/waffle/glx/glx_context.c , it already
fallbacks to glXCreateNewContext when it's not supported.


So I don't understand why is Patch 6/6 necessary at all.

Because seemingly things don't work. As mentioned previously we can
tweak waffle and drop the patch. Does that mean that the first 5 are
ok ?

Yes, the first 5 LGTM.  And are

Reviewed-by: Jose Fonseca <[email protected]>



_______________________________________________
Piglit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to