On 03/05/2013 06:58 AM, Henri Verbeet wrote:
On 2 March 2013 00:14, Ian Romanick <i...@freedesktop.org> wrote:
I added some comments, but I think the extension is pretty much fine
for at least Wine's purposes.
GLX_ARB_create_context and GLX_ARB_create_context_profile are required.
It's probably not a big deal since just about everyone implements
these, but I think most of the extension could be implemented without
these.
Right... the extension also adds an attribute that can only be used with
glXCreateContextAttribsARB.
There are also cases where more than one renderer may be available per
display. For example, there is typically a hardware implementation and
a software based implementation. There are cases where an application
may want to pick one over the other. One such situation is when the
software implementation supports more features than the hardware
implementation.
I think that makes sense in some cases (although the more common case
may turn out to be setups like PRIME where you actually have two
different hardware renderers and want to switch between them), but
wouldn't you also want to look at the (GL) extension string before
creating a context in such a case? I realize issue 9 resolves this as
basically "not worth the effort", but doesn't that then contradict the
text above? (For Wine creating the GLX context is no big deal at this
point since we already have that code anyway, but it seems like useful
information for (new) applications that want to avoid that.)
My thinking was that it will be very rare for multiple renderers to
support the same GL versions and different extension strings... at least
in a way that would cause apps to make different context creation decisions.
Additions to the OpenGL / WGL Specifications
None. This specification is written for GLX.
I think we'd like a WGL spec for wined3d, since it's written on top of
Wine's WGL implementation instead of directly on top of GLX. If needed
we could also solve that with a Wine internal extension, but we'd like
to avoid those where possible.
Well... I don't do Windows. :)
To obtain information about the available renderers for a particular
display and screen,
void glXQueryRendererIntegerMESA(Display *dpy, int screen, int
renderer,
int attribute, unsigned int
*value);
This returned a Bool above. I don't see the glXQueryCurrent*()
functions specified at all, but I assume that will be added before the
final version of the spec.
Yes... it seems I neglected to propagate those changes into the body of
the spec. I'll fix that.
GLX_RENDERER_VERSION_MESA 3 Major, minor, and patch level
of
the renderer implementation
I guess the trade-of here is that it avoids having to parse version
strings in the application, but on the other hand it leaves no room
for things like the git sha1 or e.g. "beta" or "rc" that you sometimes
see in version strings. That probably isn't a big deal for
applications themselves, but it may be relevant when a version string
is included in a bug report.
Part of the thinking is that it would force regularity in how the
version is advertised. Otherwise everyone will have a different kind of
string, and the currently annoying situation of parsing implementation
dependent strings continues.
Maybe GLX_RENDERER_VERSION_MESA should also be allowed with
glXQueryRendererStringMESA?
The string returned for GLX_RENDERER_VENDOR_ID_MESA will have the same
format as the string that would be returned by glGetString of GL_VENDOR.
It may, however, have a different value.
The string returned for GLX_RENDERER_DEVICE_ID_MESA will have the same
format as the string that would be returned by glGetString of
GL_RENDERER.
It may, however, have a different value.
But the GL_VENDOR and GL_RENDERER "formats" are implementation
defined, so I'm not sure that wording it like this really adds much
over just saying the format for these are implementation defined.
Fair. :)
1) How should the difference between on-card and GART memory be exposed?
UNRESOLVED.
Somewhat related, dxgi / d3d10 distinguishes between
"DedicatedVideoMemory" and "SharedSystemMemory" (and
"DedicatedSystemMemory"). I'm not sure how much we really care, but I
figured I'd at least mention it.
The feedback that I have received so far is that apps want to know how
much memory they can use without falling off a performance cliff. As
far as I can tell, that means on-card memory. I'm still soliciting
feedback. :) If there is a use for advertising SharedSystemMemory, I'll
gladly add it.
5) How can applications tell the difference between different hardware
renderers for the same device? For example, whether the renderer is the
open-source driver or the closed-source driver.
RESOLVED. Assuming this extension is ever implemented outside Mesa,
applications can query GLX_RENDERER_VENDOR_ID_MESA from
glXQueryRendererStringMESA. This will almost certainly return
different strings for open-source and closed-source drivers.
For what it's worth, internally in wined3d we distinguish between the
GL vendor and the hardware vendor. So you can have e.g. Mesa / AMD,
fglrx / AMD or Apple / AMD for the same hardware. That's all derived
from the VENDOR and RENDERER strings, so that approach is certainly
possible, but on the other hand perhaps it also makes sense to
explicitly make that distinction in the API itself.
I also based this on ISV feedback. Some just wanted to know what the
hardware was, and others wanted to know that and who made the driver. I
was really trying to get away from "just parse this random string" for
as much of the API as possible. It seems like this should only make
things easier for apps... should.
6) What is the value of GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA
for
software renderers?
UNRESOLVED. Video (display) memory and texture memory is not
unified
for software implementations, so it seems reasonable for this to be
False.
Related to that, are e.g. GLX_RENDERER_VENDOR_ID_MESA,
GLX_RENDERER_DEVICE_ID_MESA (integer versions for both) or
GLX_RENDERER_VIDEO_MEMORY_MESA really meaningful for software
renderers?
Probably not... but they should return something. I can imagine apps
doing something really dumb if GLX_RENDERER_VIDEO_MEMORY_MESA returns 0.
The other two probably could (should?) return zero... since anything
else will be misleading. I'll add an issue for that.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev