Daniel Melo Jorge da Cunha
2016-Apr-19 15:01 UTC
[Nouveau] more one question regarding gl and nouveau
Hi Ilia, you were straight to the point for me in: "src/mesa/vbo will upload it to a vbo. The driver then points the hardware at the vbo and tells it to read from there." But where is it the function that implements this? Is it in nv30_draw_vbo(...)? Please, give me a function name or at least a file name? 2016-04-19 10:04 GMT-04:00 Ilia Mirkin <imirkin at alum.mit.edu>:> On Tue, Apr 19, 2016 at 8:52 AM, Daniel Melo Jorge da Cunha > <dmjcunha at gmail.com> wrote: > > Hi, for example, if I have glVertex3f(0.75, 0.75, 1.0) how the video card > > processes > > these three floats? Does the card work with floats? Does (mesa? gallium? > > driver?) > > process these three input floats before it is sent to the card? Where is > the > > code > > for it? > > src/mesa/vbo will upload it to a vbo. The driver then points the > hardware at the vbo and tells it to read from there. (Under some > circumstances, the vbo data might have to be transformed on the cpu as > well if the driver can't handle the format.) > > > > > If you say the floats are memory mapped as in > > exec->vtx.buffer_map = (GLfloat *)ctx->Driver.MapBufferRange(...) I would > > say > > from what I learned that it has to pass through gallium and that means: > > st_draw_vbo(...) ending up in nv30_draw_vbo(..) but these functions don't > > make > > any reference to those (memory mapped) input floats. So where is the > piece > > of > > code that instructs the card to fetch those three (possibly processed) > input > > floats > > and send them to the card? > > > > Thanks in advance. > > The vbo module converts this to the equivalent of > > glGenBuffers(1, &buf) > glBindBuffer(GL_ARRAY_BUFFER, buf) > glBufferData(GL_ARRAY_BUFFER, ...) > foo = glMapBuffer(buf) > write vertex values to foo > glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0); > draw > > Hope that helps, > > -ilia >-------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20160419/0aa6b9fd/attachment.html>
On Tue, Apr 19, 2016 at 11:01 AM, Daniel Melo Jorge da Cunha <dmjcunha at gmail.com> wrote:> Hi Ilia, you were straight to the point for me in: > > "src/mesa/vbo will upload it to a vbo. The driver then points the > hardware at the vbo and tells it to read from there." > > But where is it the function that implements this? Is it in > nv30_draw_vbo(...)? Please, give me a function name or > at least a file name?Before draw_vbo is called, the vbo will have been set up via pipe->bind_vertex_elements_state and pipe->set_vertex_buffers. The draw call will then validate those, by calling nv30_state_validate (or something along those lines) which will look at all the dirtied state and write that out to hw. There are also funny interactions with translate... for formats that aren't directly supported. -ilia
Daniel Melo Jorge da Cunha
2016-Apr-19 17:28 UTC
[Nouveau] more one question regarding gl and nouveau
Wow! Things go deep... :) Thank you very much. 2016-04-19 11:44 GMT-04:00 Ilia Mirkin <imirkin at alum.mit.edu>:> On Tue, Apr 19, 2016 at 11:01 AM, Daniel Melo Jorge da Cunha > <dmjcunha at gmail.com> wrote: > > Hi Ilia, you were straight to the point for me in: > > > > "src/mesa/vbo will upload it to a vbo. The driver then points the > > hardware at the vbo and tells it to read from there." > > > > But where is it the function that implements this? Is it in > > nv30_draw_vbo(...)? Please, give me a function name or > > at least a file name? > > Before draw_vbo is called, the vbo will have been set up via > pipe->bind_vertex_elements_state and pipe->set_vertex_buffers. The > draw call will then validate those, by calling nv30_state_validate (or > something along those lines) which will look at all the dirtied state > and write that out to hw. > > There are also funny interactions with translate... for formats that > aren't directly supported. > > -ilia >-------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20160419/ea1680ed/attachment.html>