17ec681f3Smrg
27ec681f3Smrg#ifndef _DRM_DRIVER_H_
37ec681f3Smrg#define _DRM_DRIVER_H_
47ec681f3Smrg
57ec681f3Smrg#include "pipe/p_compiler.h"
67ec681f3Smrg
77ec681f3Smrg#include "winsys_handle.h"
87ec681f3Smrg
97ec681f3Smrgstruct pipe_screen;
107ec681f3Smrgstruct pipe_screen_config;
117ec681f3Smrgstruct pipe_context;
127ec681f3Smrgstruct pipe_resource;
137ec681f3Smrg
147ec681f3Smrgstruct drm_driver_descriptor
157ec681f3Smrg{
167ec681f3Smrg   /**
177ec681f3Smrg    * Identifying prefix/suffix of the binary, used by the pipe-loader.
187ec681f3Smrg    */
197ec681f3Smrg   const char *driver_name;
207ec681f3Smrg
217ec681f3Smrg   /**
227ec681f3Smrg    * Optional pointer to the array of driOptionDescription describing
237ec681f3Smrg    * driver-specific driconf options.
247ec681f3Smrg    */
257ec681f3Smrg   const struct driOptionDescription *driconf;
267ec681f3Smrg
277ec681f3Smrg   /* Number of entries in the driconf array. */
287ec681f3Smrg   unsigned driconf_count;
297ec681f3Smrg
307ec681f3Smrg   /**
317ec681f3Smrg    * Create a pipe srcreen.
327ec681f3Smrg    *
337ec681f3Smrg    * This function does any wrapping of the screen.
347ec681f3Smrg    * For example wrapping trace or rbug debugging drivers around it.
357ec681f3Smrg    */
367ec681f3Smrg   struct pipe_screen* (*create_screen)(int drm_fd,
377ec681f3Smrg                                        const struct pipe_screen_config *config);
387ec681f3Smrg};
397ec681f3Smrg
407ec681f3Smrgextern const struct drm_driver_descriptor driver_descriptor;
417ec681f3Smrg
427ec681f3Smrg#endif
43