Hi Chia-I and Luca

you guys are doing great work with the EGL state tracker. So I thought it would be a good time to open up a discussion about the way that the API state trackers talk to the EGL, dri and other co state trackers.

I have attached a proposed interface to be used between the different state trackers. I know that Chia-I and I have talked about it before and nothing much have changed since then. The main point of this API is to eliminate the last references to winsys in the gallium interface, This could be done by just moving update_buffer/ flush_frontbuffer to pipe_screen, but this is not acceptable, since the pipe driver is not the one to take care of those things.

Some things that needs to worked out about this interface is how to handle glViewport vs DRI2, since the code in glViewport needs to force a update of the buffers in DRI2 but not for other state trackers. If we can some how work around the need to force a update in a way that works on old servers that would be great, but I doubt that can be done.

On the topic of EGL I'm wondering if this should be exposed in st_api.h or in some extra api on the side of st_api.h. To check if the API supports EGL one could introduce some sort of ST_CAPS that the api's can communicate between each other. Adding something like below to the st_api struct.

        /**
         * Query an integer-valued capability/parameter/limit
         * \param param  one of ST_CAP_x
         */
        int (*get_param)(struct st_api *api, int param);

And then base classing st_context in a st_egl_context, which is guarded by a ST_CAP_EGL or something:

struct st_egl_context
{
        struct st_context base;

        int egl_func1(params);
        ...
};

Currently there is not a struct that represents the co state tracker in this interface, mostly because there has been no need (other then the flush/validate functions on the framebuffer) to call into the co state tracker. Maybe if exposing caps back to the rendering api we can solve the glViewport issue by having ST_CAP_GL_VIEWPORT_ALWAYS_VALIDATE cap, a bit hacky yes. But I don't think any backwards compatible solution to that problem would be nice.

Thoughts and comments welcome.

Cheers Jakob.

Attachment: st_api.h
Description: Binary data


------------------------------------------------------------------------------
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to