The pipe_context structure is an abstract base class with methods for:
The p_state.h header defines all the state objects (such as polygon rasterization options, blend modes, etc) and resources (drawing surfaces, textures, memory buffers). The pipe interface uses "constant state" objects. That is, state objects are created once and are immutable. State objects are put into effect by binding them. This allows Gallium3D drivers to create corresponding hardware state objects which can be quickly handled.
The p_defines.h header defines numerous constants and tokens (blend modes, texture wrap modes, surface formats, etc.
The p_winsys.h header defines the window system and OS facilities which Gallium3D drivers rely upon. For example, memory allocation is typically a service the OS provides while window size/position information is provided by the window system. Pipe drivers use the winsys interface to handle these things.
By abstracting OS and window system services, pipe drivers are portable to other platforms (e.g. embedded devices).