/** * This is the first entrypoint in the driver called by the DRI driver loader * after dlopen()ing it. * * It's used to create global state for the driver across contexts on the same * Display. */ __DRIscreen * driCreateNewScreen3(int scrn, int fd, const __DRIextension **loader_extensions, enum dri_screen_type type, const __DRIconfig ***driver_configs, bool driver_name_is_inferred, bool has_multibuffer, void *data)
flowchart TD
A["__glXInitialize()"]
B["AllocAndFetchScreenConfigs()"]
C["dri3_create_screen()"]
D["`**driCreateNewScreen3()**`"]
E["dri2_init_screen()"]
F["pipe_loader_create_screen()"]
G["pipe_loader_create_screen_vk()"]
H["pipe_loader_drm_create_screen()"]
I["pipe_xxx_create_screen()"]
J["`**xxx_create_screen()**`"]
A --> B --> C --> D --> E --> F --> G --> H --> I --> J
Gallium API
resource_copy_region
1 2 3 4 5 6 7 8 9 10 11 12
/** * Copy a block of pixels from one resource to another. * The resource must be of the same format. * Resources with nr_samples > 1 are not allowed. */ void (*resource_copy_region)(struct pipe_context *pipe, struct pipe_resource *dst, unsigned dst_level, unsigned dstx, unsigned dsty, unsigned dstz, struct pipe_resource *src, unsigned src_level, conststruct pipe_box *src_box);
Names are identifiers of data sources which will be drawn as graphs in panes. Multiple graphs can be drawn in the same pane. There can be multiple panes placed in rows and columns.
'+' separates names which will share a pane. ':[value]' specifies the initial maximum value of the Y axis for the given pane. ',' creates a new pane below the last one. ';' creates a new pane at the top of the next column. '=' followed by a string, changes the name of the last data source to that string
Additionally, by prepending '.[identifier][value]' modifiers to a name, it is possible to explicitly set the location and size of a pane, along with limiting overall maximum value of the Y axis and activating dynamic readjustment of the Y axis. Several modifiers may be applied to the same pane simultaneously.
'x[value]' sets the location of the pane on the x axis relative to the upper-left corner of the viewport, in pixels. 'y[value]' sets the location of the pane on the y axis relative to the upper-left corner of the viewport, in pixels. 'w[value]' sets width of the graph pixels. 'h[value]' sets height of the graph in pixels. 'c[value]' sets the ceiling of the value of the Y axis. If the graph needs to draw values higher than the ceiling allows, the value is clamped. 'd' activates dynamic Y axis readjustment to set the value of the Y axis to match the highest value still visible in the graph. 'r' resets the color counter (the next color will be green) 's' sort items below graphs in descending order
If 'c' and 'd' modifiers are used simultaneously, both are in effect: the Y axis does not go above the restriction imposed by 'c' while still adjusting the value of the Y axis down when appropriate.
You can change behavior of the whole HUD by adding these options at the beginning of the environment variable: 'simple,' disables all the fancy stuff and only draws text.
Available names: stdout (prints the counters value to stdout) csv (prints the counter values to stdout as CSV, use + to separate names) fps frametime cpu cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7 cpu8 cpu9 cpu10 cpu11 samples-passed primitives-generated render-passes