303 lines
17 KiB
Plaintext
303 lines
17 KiB
Plaintext
|
|
Episode: 833
|
||
|
|
Title: HPR0833: Ian Romanick Interview at X.Org Developer Conference (XDC) 2011
|
||
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0833/hpr0833.mp3
|
||
|
|
Transcribed: 2025-10-08 03:12:49
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
This is Marcus again. This is my third interview at the XORG Developers Conference with
|
||
|
|
Ian Romanick. He works on Mesa. So this is the third interview at XORG. Is this XDS or
|
||
|
|
XDC? You know, I think people are starting to just call it ZORG-Con. ZORG-Con. OK, ZORG-Con
|
||
|
|
2011. I'm here with Romanick. Ian Romanick. Romanick.
|
||
|
|
OK, so. And I guess, so who are you? Tell us a little about yourself. I think X, what
|
||
|
|
you work on. So I'm Ian Romanick. I've been working on X-related things since I want to
|
||
|
|
say 2002. I originally got into Mesa development back when I was working at IBM and in the Linux
|
||
|
|
Technology Center there where we had sort of this back in those very hidey early days, we
|
||
|
|
had this sort of nebulous goal of of make Linux better. And so one of the big problems that
|
||
|
|
we encountered was graphics and in particular 3D on Linux was a disaster. So I had sort
|
||
|
|
of open rain to just jump in and work on stuff wherever things were bad to try to make things
|
||
|
|
better. So I spent a lot of time working on new features and trying to fix bugs and existing
|
||
|
|
drivers and just get involved and improve the state of things. And so that's what I did
|
||
|
|
there for quite a long time before moving over to Intel three years ago and where I've been
|
||
|
|
working on the various drivers for the Intel integrated graphics chipsets. Primarily still
|
||
|
|
in Mesa and now I'm the, I guess I'm the architect of our 3D driver for those parts. So what is
|
||
|
|
Mesa? I was talking about that a little bit before but it's, what is it? So technically speaking
|
||
|
|
Mesa is an implementation of an open GL-like programming interface and we have to call it
|
||
|
|
that for trademark reasons. You can't call it, you can't just call it open GL or something like that?
|
||
|
|
We can't call it open GL because it's never passed the conformance tests and no one's
|
||
|
|
paid the licensing fees. So call it Mesa. We'll call it Mesa. All right. So it's, so they
|
||
|
|
have a software programmer right against to open GL API anyway and anything that the
|
||
|
|
card doesn't hardware accelerate, it falls back to Mesa, is that how that works? Well, so, so basically
|
||
|
|
Mesa converts the things that the application calls tracks state and sends commands to the
|
||
|
|
driver which then either sends commands to the hardware or if it's trying to do something
|
||
|
|
that the hardware can't do, we'll fall back to doing rendering in software but hopefully
|
||
|
|
you never have to fall back to rendering in software because that's super, super slow. So
|
||
|
|
how much of an average application now is hardware accelerated versus using Mesa versus
|
||
|
|
well, so it's all using Mesa, right? I mean it all goes through Mesa and because the
|
||
|
|
driver lives inside of Mesa, it's part of it. So how, this part of the XM not familiar
|
||
|
|
with that at all. So Mesa is just the overall, so the OpenGL XM the hardware accelerated stuff
|
||
|
|
is inside of Mesa, right? Yeah, it's, so there's a lot of device specific code that's inside
|
||
|
|
of Mesa. And so when you build, so when you build the the DRI drivers, which DRI is the
|
||
|
|
direct rendering infrastructure, that's the interfaces that we use in X to arbitrate access
|
||
|
|
to the hardware. When you build one of these DRI drivers, you have, you build the blob of
|
||
|
|
device specific code for whatever driver you are and then all of the state and data
|
||
|
|
tracking code that's part of what we call core Mesa, which is just the device independent
|
||
|
|
parts of it, the stuff that that handles sort of the, you know, taking care of things
|
||
|
|
that are just part of the API and that aren't really specific to a piece of hardware.
|
||
|
|
How does LibDRM and DRM tie into all that? So LibDRM, so DRM, which is the direct rendering manager
|
||
|
|
is the kernel portion of this. So when you, you set up all these commands and need to submit
|
||
|
|
them off to the hardware, well, we can't just have anyone banging on the hardware that
|
||
|
|
would be all kinds of security holes. So we have to have the kernel do that for us.
|
||
|
|
So we submit buffers containing commands to the kernel. Most of the kernel modules for the
|
||
|
|
different drivers will then look at those command buffers and make sure that you're not doing
|
||
|
|
something, trying to do something hinky and then we'll send the commands off to the hardware
|
||
|
|
and then most hardware works where it, after it's completed commands or has done different
|
||
|
|
things that will generate interrupts and the kernel module will handle that part of it.
|
||
|
|
Okay. Then LibDRM is a set of wrappers on top of the raw kernel interfaces. So both,
|
||
|
|
so at least for the Intel driver and I believe most of the other drivers work like this,
|
||
|
|
both the 3D driver and the 2D driver link with LibDRM to send so they can send in commands to the kernel.
|
||
|
|
And that's especially true in when you have KMS to do to a kernel mode setting.
|
||
|
|
Okay. And that's that allows you don't have that flicker when you start our hardware
|
||
|
|
goes from text mode to QE. Well, so I mean the big advantage of KMS is that it pulls a bunch of
|
||
|
|
code out of the user mode driver so we can do a bunch of different kinds of arbitration of things
|
||
|
|
and we can do page flipping and different kinds of memory allocation.
|
||
|
|
It's one of those things that has, it's death by a thousand cuts or life by a thousand,
|
||
|
|
I'm not sure what. It has a whole bunch of little benefits that all pile up to be extremely useful.
|
||
|
|
Okay, so it's not just the text mode. Right, right. That's that's kind of the icing on the cake.
|
||
|
|
Okay. So DRM and DRI and all this is all that is within Mesa itself. Mesa is the overall.
|
||
|
|
Well, yeah, there's a lot of the DRI stuff is in Mesa. A lot of it also lives in the X server.
|
||
|
|
Part of of DRI itself is when you try to run a 3D application, it needs to arbitrate some access to the hardware
|
||
|
|
and some permissions and some buffer management that it has to coordinate with the X server.
|
||
|
|
And DRI defines that protocol between the client and the X server.
|
||
|
|
So that for example, when you want to get the buffer so that you can do 3D rendering to a window,
|
||
|
|
some communication happens with the X server. When you want to, if you're done rendering to the off screen buffer
|
||
|
|
and you want to flip to make that visible, there's some protocol that happens with the X server to make that buffer swap happen.
|
||
|
|
Okay. And a bunch of that protocol changed and got revised and changed around when compositors started becoming more common.
|
||
|
|
And we had to revamp it quite a lot and that's what ended up becoming DRI 2.
|
||
|
|
The old way that we did it was, let's do a quick hack to get some stuff working so that we can actually have 3D
|
||
|
|
and then we lived with that for five or six years and then finally said, this quick hack needs to die.
|
||
|
|
We need to do it right. And that's what DRI 2 is.
|
||
|
|
And that's, yeah, DRI 2. So when you draw, so the 3D is used for 2D stuff as well, or just 3D.
|
||
|
|
Yeah, just for 3D. So if you're trying to accelerate like a normal window on a screen, like a normal application,
|
||
|
|
does that do any kind of hardware acceleration?
|
||
|
|
Yeah, there's acceleration for render, but all that lives in the 2D driver.
|
||
|
|
Oh, okay. So there are various people who have big dreams of being able to make that live on top,
|
||
|
|
have a generic set of render acceleration that can live on top of OpenGL.
|
||
|
|
But there's some limitations of how 3D hardware works that make that challenge.
|
||
|
|
Was it the EGL stuff that looted way several years ago?
|
||
|
|
So EGL is kind of an orthogonal issue.
|
||
|
|
This was the stuff. It's had a couple names. I think the name of the most recent project trying to do that is,
|
||
|
|
I want to say glamour. I believe it's the most recent project to try to do 2D acceleration on top of OpenGL.
|
||
|
|
But for the most part, it sounds like the 2D stuff, the regular, the windows and buttons and all that stuff.
|
||
|
|
That's not really hardware accelerated?
|
||
|
|
No, it is. It just goes through a completely different channel to do it.
|
||
|
|
That's what the X-Render extension is.
|
||
|
|
So X-Render...
|
||
|
|
I thought X-Render was going away, or did I miss any misunderstanding?
|
||
|
|
There's a lot I don't understand here.
|
||
|
|
Yeah, it's going away just like X is going away.
|
||
|
|
People say, oh, it's going to go away in a couple of years and they've been saying that forever.
|
||
|
|
Okay, so it's not like Wayland's going to... Well, maybe that's a separate topic.
|
||
|
|
That's a future that's not here yet. You've still got all these?
|
||
|
|
Yeah, something like that.
|
||
|
|
Alright.
|
||
|
|
So part of my thing is I'm trying to get people to come into X and Mesa being part of that.
|
||
|
|
I mean, how can people get involved in Mesa?
|
||
|
|
I mean, is it basically learning curve like a vertical wall, like a clip they got to climb up,
|
||
|
|
or is there anything they can do to help?
|
||
|
|
So the way that most people end up getting involved,
|
||
|
|
and I think actually the way that I got involved, too, is find some particular thing
|
||
|
|
in that piece of software.
|
||
|
|
And I think this applies to getting involved with most pieces of open-source software.
|
||
|
|
Find one particular thing that it either doesn't do, or that it doesn't do right,
|
||
|
|
and start asking questions and looking at the code and trying to figure out
|
||
|
|
either why it doesn't do it right or what it would take to make it do the thing that you want.
|
||
|
|
And just start pulling at that one little thread.
|
||
|
|
And one of two things happens.
|
||
|
|
You get frustrated and go away, because it turns out that it's a hard problem or a hard project or whatever
|
||
|
|
that you don't have the time or inclination or whatever to do.
|
||
|
|
Or you start to learn about the project and get involved with it,
|
||
|
|
and gradually you pull at that thread long enough, and you completely unravel the whole sweater,
|
||
|
|
and then you realize that you have a thousand patches submitted in that project,
|
||
|
|
and you're one of the core developers.
|
||
|
|
When it feels like six months ago you didn't know anything about it.
|
||
|
|
So this is the expected, you start out, you have no idea what's going on,
|
||
|
|
you're actually in a dart.
|
||
|
|
Oh yeah.
|
||
|
|
All right.
|
||
|
|
And as far as I know, that's the way pretty much I'll go out on a limb,
|
||
|
|
and I'll say that's how every single active developer on this got involved.
|
||
|
|
There was either some piece of functionality that they wanted that was missing
|
||
|
|
or something that was there, but that didn't work right for some particular scenario,
|
||
|
|
and they just started trying to figure out why,
|
||
|
|
and asking people questions, and looking at source code, tracing through things,
|
||
|
|
and looking at how data or execution flows through the code base for that one particular microfeature
|
||
|
|
that they cared about, and eventually they just learned enough to be able to accomplish
|
||
|
|
that one small thing, and then, you know, at that point most people are hooked.
|
||
|
|
So there's still, could you even do a mace all while then?
|
||
|
|
Is there still like little threads that you don't fully understand now these days?
|
||
|
|
Oh yeah.
|
||
|
|
I mean it's a giant code base.
|
||
|
|
I mean there's, so a few weeks ago we removed support for a bunch of deprecated old drivers
|
||
|
|
and gutted out, I think, 127,000 lines of code.
|
||
|
|
And there's still half a million lines of code left.
|
||
|
|
I mean it's a big piece of software.
|
||
|
|
So yeah, there's a lot of it.
|
||
|
|
A lot of code in there I've never seen and have no clue how it works,
|
||
|
|
but you still work the main guys.
|
||
|
|
It comes to me, so.
|
||
|
|
Yeah.
|
||
|
|
I'm still, at this point, I'm, yeah, I'm one of the people that most people go to with questions.
|
||
|
|
Like, how does this, this part work?
|
||
|
|
And a lot of times I know, sometimes I don't know, but in those cases I will almost always know who to ask.
|
||
|
|
Okay.
|
||
|
|
Okay.
|
||
|
|
So then you'd be good to ask this.
|
||
|
|
So is there anything that's happened recently or will happen very shortly in mace that people will start seeing,
|
||
|
|
like six months, the next, just those come out or anything.
|
||
|
|
I think it's really cool.
|
||
|
|
127,000 lines of code is pretty cool.
|
||
|
|
Yeah.
|
||
|
|
Well, unless you happen to have one of those, you know, eight year old pieces of graphics,
|
||
|
|
if you have a G200, you may be sad.
|
||
|
|
But if you have a G200 and you're trying to run modern 3D applications on it, you're already sad.
|
||
|
|
Well, so like we presented earlier today at the conference where my team and other people in the community
|
||
|
|
are working full steam ahead towards OpenGL3.0.
|
||
|
|
So that will be exciting on that.
|
||
|
|
I think on that spot, I think I saw eight total things we're still missing.
|
||
|
|
I know those other things were underneath the cover huge, but yeah.
|
||
|
|
So there's eight, I think there's like eight primary feature groups that still remain to be done.
|
||
|
|
And a couple of those.
|
||
|
|
So there was one of the items that when we went through and figured out what it was going to take to implement it,
|
||
|
|
it was like five person months worth of work.
|
||
|
|
Wow.
|
||
|
|
Eight things seems like a solo list.
|
||
|
|
Well, so one of them was like five person months and one of the other things on that list,
|
||
|
|
I think we figured was two weeks.
|
||
|
|
So there's some variation in the size of it.
|
||
|
|
Trying to see the light at the end of the tunnel when 3.0 will be...
|
||
|
|
Yeah, I think we're going to...
|
||
|
|
You know, I'm always reluctant to say anything about dates because I'm not asking for one.
|
||
|
|
Well, because it's software.
|
||
|
|
And it's how it goes.
|
||
|
|
But yeah, we're getting close.
|
||
|
|
I think we're going to have it.
|
||
|
|
We're going to have it.
|
||
|
|
Very cool.
|
||
|
|
So if you're working on 3.0, does that mean like two or two one are done?
|
||
|
|
Or are they basically separate questions?
|
||
|
|
Yeah, I mean, we've supported 2.1 for quite some time.
|
||
|
|
So the way that Mesa numbers its releases the major number,
|
||
|
|
roughly corresponds to some GL version.
|
||
|
|
So the entire Mesa 7.X has been OpenGL 2.1.
|
||
|
|
Oh, OK.
|
||
|
|
And 6.X was OpenGL 2.0 and 5 was OpenGL 1.5, etc.
|
||
|
|
This is Mesa 8.0?
|
||
|
|
So it will be 8.0 when we have 3.0 support.
|
||
|
|
Assuming that we keep that numbering scheme,
|
||
|
|
and I don't see any particular reason to change.
|
||
|
|
OK.
|
||
|
|
So I have to ask about OpenGL 4.
|
||
|
|
Is it, what's the story with it?
|
||
|
|
Not that I'm pushing because I'm happy that you always come here.
|
||
|
|
You know, someday.
|
||
|
|
It's definitely a goal.
|
||
|
|
But there's a lot of work to be done before that.
|
||
|
|
How many of you are working on Mesa?
|
||
|
|
So right now, my team at Intel is 6.
|
||
|
|
6 people who are mostly full-time working on Mesa?
|
||
|
|
OK.
|
||
|
|
Do you know about like this, AMD, such HDI, happy working on it?
|
||
|
|
Yeah.
|
||
|
|
So AMD has, I want to say two guys,
|
||
|
|
and then they had an intern over the summer,
|
||
|
|
who had been previously involved with the Mesa project,
|
||
|
|
and they decided to give him money over the summer
|
||
|
|
to keep doing the same work.
|
||
|
|
And then who else did you ask about?
|
||
|
|
Oh, just anyone in general.
|
||
|
|
Because I know Intel.
|
||
|
|
You said that.
|
||
|
|
I just wonder if it's the overall...
|
||
|
|
So primarily corporate wise,
|
||
|
|
there's Intel and AMD.
|
||
|
|
Red Hat has a couple of people who do a bunch of stuff for Mesa,
|
||
|
|
and then VMware has a number of people.
|
||
|
|
I don't know how many people they have.
|
||
|
|
All of their people were previously the tungsten graphics people.
|
||
|
|
Oh, exactly.
|
||
|
|
They got a lot of work.
|
||
|
|
Yeah.
|
||
|
|
Zach, and then Brian Paul,
|
||
|
|
who started the Mesa project,
|
||
|
|
a project at college.
|
||
|
|
Keith, well, I'm totally blanking on names.
|
||
|
|
Jacob Bornecrands.
|
||
|
|
I'm blanking on names.
|
||
|
|
They have a bunch of people who do various amounts of open source
|
||
|
|
and closed source work related to Mesa and a bunch of their projects.
|
||
|
|
Okay.
|
||
|
|
Sorry.
|
||
|
|
It's about 10 to 15 and I'm not part of it.
|
||
|
|
Yeah, I think maybe closer to 8 or 10 total.
|
||
|
|
Cool.
|
||
|
|
So 3 out of 10 will happen.
|
||
|
|
Yeah, although it seems like it's mostly us and the AMD guys
|
||
|
|
and one of the guys at Red Hat,
|
||
|
|
who are really pushing to get to it.
|
||
|
|
We're certainly the most enthusiastic about it,
|
||
|
|
but we'll have a big popcorn party minutes done.
|
||
|
|
All right.
|
||
|
|
Very cool.
|
||
|
|
All right.
|
||
|
|
So I got the same list I was asking the other guys about.
|
||
|
|
I guess I asked if people can get involved.
|
||
|
|
I mean, something you're always looking for people to try to help.
|
||
|
|
I know it's not the easiest thing to get in.
|
||
|
|
Yeah, yeah.
|
||
|
|
I mean, you know, over the last year we've had three or four new people
|
||
|
|
come to the project who've kind of gone about the process that I described before.
|
||
|
|
They had one particular thing they were interested in and they just started pulling at that thread
|
||
|
|
and now they're trapped.
|
||
|
|
Very cool.
|
||
|
|
All right.
|
||
|
|
Hopefully we can get some hopefully this podcast to the listeners.
|
||
|
|
Well, I get some more people that come help you guys out.
|
||
|
|
That'd be cool.
|
||
|
|
Anything else you want to say?
|
||
|
|
Mention chat?
|
||
|
|
I don't know how people actually listen to my podcast,
|
||
|
|
but at least two, you know, I have a couple of friends all this.
|
||
|
|
Yeah, just if you're interested, you know,
|
||
|
|
come read the mailing list, hang out on the IRC channel.
|
||
|
|
Is that Mace?
|
||
|
|
What?
|
||
|
|
Freeno.net.
|
||
|
|
Freeno.net.
|
||
|
|
I believe I want to say it's actually hashed DRI.
|
||
|
|
DevL, I think?
|
||
|
|
DRI.
|
||
|
|
DevL?
|
||
|
|
Yeah.
|
||
|
|
I believe that's correct.
|
||
|
|
Very cool.
|
||
|
|
All right.
|
||
|
|
Thank you for your time, Ian.
|
||
|
|
The conference is now over, so I'm guessing it's your time or whatever.
|
||
|
|
Yes, it is.
|
||
|
|
All right.
|
||
|
|
Well, cool.
|
||
|
|
Thanks again.
|
||
|
|
You have been listening to Hacker Public Radio,
|
||
|
|
where Hacker Public Radio does our.
|
||
|
|
We are a community podcast network that releases shows every weekday on DevL.
|
||
|
|
Friday.
|
||
|
|
Today's show, like all our shows, was contributed by an HPR listener like yourself.
|
||
|
|
If you ever consider recording a podcast, then visit our website to find out how easy it really is.
|
||
|
|
Hacker Public Radio was founded by the digital dark pound and the infonomicom computer club.
|
||
|
|
HPR is funded by the binary revolution at BingRef.com.
|
||
|
|
All BingRef projects are crowd-responsive by linear pages.
|
||
|
|
From shared hosting to custom private clouds, go to lunarpages.com for all your hosting needs.
|
||
|
|
Unless otherwise stasis, today's show is released under a creative commons,
|
||
|
|
attribution, share alike, details or license.
|