Re: Driver call and TGSI IR Bytestream
Brian Paul <[email protected]>
| Newsgroups | gmane.comp.video.mesa3d.user |
|---|---|
| Message-ID | <[email protected]> |
On 07/16/2013 03:04 PM, Daniel Melo Jorge da Cunha wrote:> Hi, I have 3 questions. Please be nice... I'm struggling myself... > > Let's say I am in file src/gallium/auxiliary/cso_cache/cso_context.c. > So, there is a function call pipe->draw_vbo(pipe, info) in the > function cso_draw_vbo(...). > > 1- Is this function call (pipe->draw_vbo(pipe, info)) really calling, > for a NV30 driver, pipe->draw_vbo = nv30_draw_vbo? Or for other driver > like NVC0, is it really calling pipe->draw_vbo = nvc0_draw_vbo? Yes. > 2- If it is so, how could (mesa3d? gallium3d? X? ddx? the responsible) > call the correct one for the correct driver? There's some bootstrap code that finds the right driver and its "create screen" function. In the case of DRI/GLX, look at src/gallium/state_tracker/dri/drm/dri2.c's dri2_init_screen() function. Once we have the create_screen function we can use that to create a pipe_context. When a driver creates a context it plugs its draw_vbo() function into the context along with all the other per-context methods. > 3- Is the pipe and info arguments in the function call mentionated > the encoded TGSI IR Bytestream? If it is not, how and where is it > encoded? I'm not quite clear on your question, but pipe_draw_info only contains the info for what to draw (number of vertices, etc). There are separate functions for creating/binding shaders - that's where TGSI comes in. -Brian