2
virtual_crtc_dpms(xf86CrtcPtr intel_crtc, int mode)
8
virtual_crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
9
Rotation rotation, int x, int y)
15
virtual_crtc_set_cursor_colors(xf86CrtcPtr crtc, int bg, int fg)
21
virtual_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
26
virtual_crtc_load_cursor_argb(xf86CrtcPtr crtc, CARD32 *image)
31
virtual_crtc_hide_cursor(xf86CrtcPtr crtc)
36
virtual_crtc_show_cursor(xf86CrtcPtr crtc)
41
virtual_crtc_shadow_allocate(xf86CrtcPtr crtc, int width, int height)
47
virtual_crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height)
53
virtual_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data)
58
virtual_crtc_gamma_set(xf86CrtcPtr crtc,
59
CARD16 *red, CARD16 *green, CARD16 *blue, int size)
64
virtual_crtc_destroy(xf86CrtcPtr crtc)
66
struct intel_crtc *intel_crtc = crtc->driver_private;
68
list_del(&intel_crtc->link);
71
crtc->driver_private = NULL;
74
static const xf86CrtcFuncsRec virtual_crtc_funcs = {
75
.dpms = virtual_crtc_dpms,
76
.set_mode_major = virtual_crtc_set_mode_major,
77
.set_cursor_colors = virtual_crtc_set_cursor_colors,
78
.set_cursor_position = virtual_crtc_set_cursor_position,
79
.show_cursor = virtual_crtc_show_cursor,
80
.hide_cursor = virtual_crtc_hide_cursor,
81
.load_cursor_argb = virtual_crtc_load_cursor_argb,
82
.shadow_create = virtual_crtc_shadow_create,
83
.shadow_allocate = virtual_crtc_shadow_allocate,
84
.shadow_destroy = virtual_crtc_shadow_destroy,
85
.gamma_set = virtual_crtc_gamma_set,
86
.destroy = virtual_crtc_destroy,
90
virtual_crtc_init(ScrnInfoPtr scrn, struct intel_mode *mode)
93
struct intel_crtc *intel_crtc;
95
intel_crtc = calloc(sizeof(struct intel_crtc), 1);
96
if (intel_crtc == NULL)
99
crtc = xf86CrtcCreate(scrn, &virtual_crtc_funcs);
105
intel_crtc->mode = mode;
106
intel_crtc->crtc = crtc;
107
crtc->driver_private = intel_crtc;
108
list_add(&intel_crtc->link, &mode->crtcs);
111
static xf86OutputStatus
112
virtual_output_detect(xf86OutputPtr output)
114
// return XF86OutputStatusConnected;
115
// return XF86OutputStatusDisconnected;
116
return XF86OutputStatusUnknown;
120
virtual_output_mode_valid(xf86OutputPtr output, DisplayModePtr pModes)
125
static DisplayModePtr
126
virtual_output_get_modes(xf86OutputPtr output)
128
DisplayModePtr i, m, p = NULL;
129
int max_x = 1920, max_y = 1200;
130
float max_vrefresh = 60.0;
132
#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,6,99,0,0)
133
m = xf86GetDefaultModes();
135
m = xf86GetDefaultModes(0,0);
138
xf86ValidateModesSize(output->scrn, m, max_x, max_y, 0);
140
for (i = m; i; i = i->next) {
141
if (xf86ModeVRefresh(i) > max_vrefresh)
142
i->status = MODE_VSYNC;
143
if (p && i->HDisplay >= p->HDisplay &&
144
i->VDisplay >= p->VDisplay &&
145
xf86ModeVRefresh(i) >= xf86ModeVRefresh(p))
146
i->status = MODE_VSYNC;
149
xf86PruneInvalidModes(output->scrn, &m, FALSE);
155
virtual_output_destroy(xf86OutputPtr output)
157
struct intel_output *intel_output = output->driver_private;
159
list_del(&intel_output->link);
162
output->driver_private = NULL;
166
virtual_output_dpms(xf86OutputPtr output, int dpms)
171
virtual_output_create_resources(xf86OutputPtr output)
176
virtual_output_set_property(xf86OutputPtr output, Atom property,
177
RRPropertyValuePtr value)
183
virtual_output_get_property(xf86OutputPtr output, Atom property)
188
static const xf86OutputFuncsRec virtual_output_funcs = {
189
.create_resources = virtual_output_create_resources,
190
#ifdef RANDR_12_INTERFACE
191
.set_property = virtual_output_set_property,
192
.get_property = virtual_output_get_property,
194
.dpms = virtual_output_dpms,
195
.detect = virtual_output_detect,
196
.mode_valid = virtual_output_mode_valid,
198
.get_modes = virtual_output_get_modes,
199
.destroy = virtual_output_destroy
203
virtual_output_init(ScrnInfoPtr scrn, struct intel_mode *mode)
205
xf86OutputPtr output;
206
struct intel_output *intel_output;
207
char name[32] = "VIRTUAL";
209
output = xf86OutputCreate (scrn, &virtual_output_funcs, name);
214
intel_output = calloc(sizeof(struct intel_output), 1);
216
xf86OutputDestroy(output);
220
output->subpixel_order = SubPixelHorizontalRGB;
221
output->possible_crtcs = (1 << mode->mode_res->count_crtcs);
222
output->driver_private = intel_output;
223
intel_output->output = output;
224
intel_output->mode = mode;
226
list_add(&intel_output->link, &mode->outputs);
230
is_virtual(struct intel_mode *mode, int i)
232
return i >= mode->mode_res->count_crtcs;