]> Git Repo - J-linux.git/blob - drivers/gpu/drm/vmwgfx/device_include/svga_reg.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / drivers / gpu / drm / vmwgfx / device_include / svga_reg.h
1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
2 /*
3  * Copyright 1998-2021 VMware, Inc.
4  *
5  * Permission is hereby granted, free of charge, to any person
6  * obtaining a copy of this software and associated documentation
7  * files (the "Software"), to deal in the Software without
8  * restriction, including without limitation the rights to use, copy,
9  * modify, merge, publish, distribute, sublicense, and/or sell copies
10  * of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
20  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
21  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23  * SOFTWARE.
24  *
25  */
26
27 /*
28  * svga_reg.h --
29  *
30  *    Virtual hardware definitions for the VMware SVGA II device.
31  */
32
33
34
35 #ifndef _SVGA_REG_H_
36 #define _SVGA_REG_H_
37
38 #include "vm_basic_types.h"
39
40 typedef enum {
41         SVGA_REG_ENABLE_DISABLE = 0,
42         SVGA_REG_ENABLE_ENABLE = (1 << 0),
43         SVGA_REG_ENABLE_HIDE = (1 << 1),
44 } SvgaRegEnable;
45
46 typedef uint32 SVGAMobId;
47
48 #define SVGA_MAX_WIDTH 2560
49 #define SVGA_MAX_HEIGHT 1600
50
51 #define SVGA_MAX_BITS_PER_PIXEL 32
52 #define SVGA_MAX_DEPTH 24
53 #define SVGA_MAX_DISPLAYS 10
54 #define SVGA_MAX_SCREEN_SIZE 8192
55 #define SVGA_SCREEN_ROOT_LIMIT (SVGA_MAX_SCREEN_SIZE * SVGA_MAX_DISPLAYS)
56
57 #define SVGA_CURSOR_ON_HIDE 0x0
58 #define SVGA_CURSOR_ON_SHOW 0x1
59
60 #define SVGA_CURSOR_ON_REMOVE_FROM_FB 0x2
61
62 #define SVGA_CURSOR_ON_RESTORE_TO_FB 0x3
63
64 #define SVGA_FB_MAX_TRACEABLE_SIZE 0x1000000
65
66 #define SVGA_MAX_PSEUDOCOLOR_DEPTH 8
67 #define SVGA_MAX_PSEUDOCOLORS (1 << SVGA_MAX_PSEUDOCOLOR_DEPTH)
68 #define SVGA_NUM_PALETTE_REGS (3 * SVGA_MAX_PSEUDOCOLORS)
69
70 #define SVGA_MAGIC 0x900000UL
71 #define SVGA_MAKE_ID(ver) (SVGA_MAGIC << 8 | (ver))
72
73 #define SVGA_VERSION_3 3
74 #define SVGA_ID_3 SVGA_MAKE_ID(SVGA_VERSION_3)
75
76 #define SVGA_VERSION_2 2
77 #define SVGA_ID_2 SVGA_MAKE_ID(SVGA_VERSION_2)
78
79 #define SVGA_VERSION_1 1
80 #define SVGA_ID_1 SVGA_MAKE_ID(SVGA_VERSION_1)
81
82 #define SVGA_VERSION_0 0
83 #define SVGA_ID_0 SVGA_MAKE_ID(SVGA_VERSION_0)
84
85 #define SVGA_ID_INVALID 0xFFFFFFFF
86
87 #define SVGA_INDEX_PORT 0x0
88 #define SVGA_VALUE_PORT 0x1
89 #define SVGA_BIOS_PORT 0x2
90 #define SVGA_IRQSTATUS_PORT 0x8
91
92 #define SVGA_IRQFLAG_ANY_FENCE (1 << 0)
93 #define SVGA_IRQFLAG_FIFO_PROGRESS (1 << 1)
94 #define SVGA_IRQFLAG_FENCE_GOAL (1 << 2)
95 #define SVGA_IRQFLAG_COMMAND_BUFFER (1 << 3)
96 #define SVGA_IRQFLAG_ERROR (1 << 4)
97 #define SVGA_IRQFLAG_REG_FENCE_GOAL (1 << 5)
98 #define SVGA_IRQFLAG_MAX (1 << 6)
99
100 #define SVGA_MAX_CURSOR_CMD_BYTES (40 * 1024)
101 #define SVGA_MAX_CURSOR_CMD_DIMENSION 1024
102
103 enum {
104         SVGA_REG_ID = 0,
105         SVGA_REG_ENABLE = 1,
106         SVGA_REG_WIDTH = 2,
107         SVGA_REG_HEIGHT = 3,
108         SVGA_REG_MAX_WIDTH = 4,
109         SVGA_REG_MAX_HEIGHT = 5,
110         SVGA_REG_DEPTH = 6,
111         SVGA_REG_BITS_PER_PIXEL = 7,
112         SVGA_REG_PSEUDOCOLOR = 8,
113         SVGA_REG_RED_MASK = 9,
114         SVGA_REG_GREEN_MASK = 10,
115         SVGA_REG_BLUE_MASK = 11,
116         SVGA_REG_BYTES_PER_LINE = 12,
117         SVGA_REG_FB_START = 13,
118         SVGA_REG_FB_OFFSET = 14,
119         SVGA_REG_VRAM_SIZE = 15,
120         SVGA_REG_FB_SIZE = 16,
121
122         SVGA_REG_ID_0_TOP = 17,
123
124         SVGA_REG_CAPABILITIES = 17,
125         SVGA_REG_MEM_START = 18,
126         SVGA_REG_MEM_SIZE = 19,
127         SVGA_REG_CONFIG_DONE = 20,
128         SVGA_REG_SYNC = 21,
129         SVGA_REG_BUSY = 22,
130         SVGA_REG_GUEST_ID = 23,
131         SVGA_REG_DEAD = 24,
132         SVGA_REG_CURSOR_X = 25,
133         SVGA_REG_CURSOR_Y = 26,
134         SVGA_REG_CURSOR_ON = 27,
135         SVGA_REG_HOST_BITS_PER_PIXEL = 28,
136         SVGA_REG_SCRATCH_SIZE = 29,
137         SVGA_REG_MEM_REGS = 30,
138         SVGA_REG_NUM_DISPLAYS = 31,
139         SVGA_REG_PITCHLOCK = 32,
140         SVGA_REG_IRQMASK = 33,
141
142         SVGA_REG_NUM_GUEST_DISPLAYS = 34,
143         SVGA_REG_DISPLAY_ID = 35,
144         SVGA_REG_DISPLAY_IS_PRIMARY = 36,
145         SVGA_REG_DISPLAY_POSITION_X = 37,
146         SVGA_REG_DISPLAY_POSITION_Y = 38,
147         SVGA_REG_DISPLAY_WIDTH = 39,
148         SVGA_REG_DISPLAY_HEIGHT = 40,
149
150         SVGA_REG_GMR_ID = 41,
151         SVGA_REG_GMR_DESCRIPTOR = 42,
152         SVGA_REG_GMR_MAX_IDS = 43,
153         SVGA_REG_GMR_MAX_DESCRIPTOR_LENGTH = 44,
154
155         SVGA_REG_TRACES = 45,
156         SVGA_REG_GMRS_MAX_PAGES = 46,
157         SVGA_REG_MEMORY_SIZE = 47,
158         SVGA_REG_COMMAND_LOW = 48,
159         SVGA_REG_COMMAND_HIGH = 49,
160
161         SVGA_REG_MAX_PRIMARY_MEM = 50,
162
163         SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB = 51,
164
165         SVGA_REG_DEV_CAP = 52,
166         SVGA_REG_CMD_PREPEND_LOW = 53,
167         SVGA_REG_CMD_PREPEND_HIGH = 54,
168         SVGA_REG_SCREENTARGET_MAX_WIDTH = 55,
169         SVGA_REG_SCREENTARGET_MAX_HEIGHT = 56,
170         SVGA_REG_MOB_MAX_SIZE = 57,
171         SVGA_REG_BLANK_SCREEN_TARGETS = 58,
172         SVGA_REG_CAP2 = 59,
173         SVGA_REG_DEVEL_CAP = 60,
174
175         SVGA_REG_GUEST_DRIVER_ID = 61,
176         SVGA_REG_GUEST_DRIVER_VERSION1 = 62,
177         SVGA_REG_GUEST_DRIVER_VERSION2 = 63,
178         SVGA_REG_GUEST_DRIVER_VERSION3 = 64,
179
180         SVGA_REG_CURSOR_MOBID = 65,
181         SVGA_REG_CURSOR_MAX_BYTE_SIZE = 66,
182         SVGA_REG_CURSOR_MAX_DIMENSION = 67,
183
184         SVGA_REG_FIFO_CAPS = 68,
185         SVGA_REG_FENCE = 69,
186
187         SVGA_REG_CURSOR4_ON = 70,
188         SVGA_REG_CURSOR4_X = 71,
189         SVGA_REG_CURSOR4_Y = 72,
190         SVGA_REG_CURSOR4_SCREEN_ID = 73,
191         SVGA_REG_CURSOR4_SUBMIT = 74,
192
193         SVGA_REG_SCREENDMA = 75,
194
195         SVGA_REG_GBOBJECT_MEM_SIZE_KB = 76,
196
197         SVGA_REG_REGS_START_HIGH32 = 77,
198         SVGA_REG_REGS_START_LOW32 = 78,
199         SVGA_REG_FB_START_HIGH32 = 79,
200         SVGA_REG_FB_START_LOW32 = 80,
201
202         SVGA_REG_MSHINT = 81,
203
204         SVGA_REG_IRQ_STATUS = 82,
205
206         SVGA_REG_DIRTY_TRACKING = 83,
207         SVGA_REG_FENCE_GOAL = 84,
208
209         SVGA_REG_TOP = 85,
210
211         SVGA_PALETTE_BASE = 1024,
212
213         SVGA_SCRATCH_BASE = SVGA_PALETTE_BASE + SVGA_NUM_PALETTE_REGS
214
215 };
216
217 typedef enum SVGARegGuestDriverId {
218         SVGA_REG_GUEST_DRIVER_ID_UNKNOWN = 0,
219         SVGA_REG_GUEST_DRIVER_ID_WDDM = 1,
220         SVGA_REG_GUEST_DRIVER_ID_LINUX = 2,
221         SVGA_REG_GUEST_DRIVER_ID_MAX,
222
223         SVGA_REG_GUEST_DRIVER_ID_SUBMIT = MAX_UINT32,
224 } SVGARegGuestDriverId;
225
226 typedef enum SVGARegMSHint {
227         SVGA_REG_MSHINT_DISABLED = 0,
228         SVGA_REG_MSHINT_FULL = 1,
229         SVGA_REG_MSHINT_RESOLVED = 2,
230 } SVGARegMSHint;
231
232 typedef enum SVGARegDirtyTracking {
233         SVGA_REG_DIRTY_TRACKING_PER_IMAGE = 0,
234         SVGA_REG_DIRTY_TRACKING_PER_SURFACE = 1,
235 } SVGARegDirtyTracking;
236
237 #define SVGA_GMR_NULL ((uint32)-1)
238 #define SVGA_GMR_FRAMEBUFFER ((uint32)-2)
239
240 #pragma pack(push, 1)
241 typedef struct SVGAGuestMemDescriptor {
242         uint32 ppn;
243         uint32 numPages;
244 } SVGAGuestMemDescriptor;
245 #pragma pack(pop)
246
247 #pragma pack(push, 1)
248 typedef struct SVGAGuestPtr {
249         uint32 gmrId;
250         uint32 offset;
251 } SVGAGuestPtr;
252 #pragma pack(pop)
253
254 #define SVGA_CB_MAX_SIZE_DEFAULT (KBYTES_2_BYTES(512))
255 #define SVGA_CB_MAX_SIZE_4MB (MBYTES_2_BYTES(4))
256 #define SVGA_CB_MAX_SIZE SVGA_CB_MAX_SIZE_4MB
257 #define SVGA_CB_MAX_QUEUED_PER_CONTEXT 32
258 #define SVGA_CB_MAX_COMMAND_SIZE (32 * 1024)
259
260 #define SVGA_CB_CONTEXT_MASK 0x3f
261 typedef enum {
262         SVGA_CB_CONTEXT_DEVICE = 0x3f,
263         SVGA_CB_CONTEXT_0 = 0x0,
264         SVGA_CB_CONTEXT_1 = 0x1,
265         SVGA_CB_CONTEXT_MAX = 0x2,
266 } SVGACBContext;
267
268 typedef enum {
269
270         SVGA_CB_STATUS_NONE = 0,
271
272         SVGA_CB_STATUS_COMPLETED = 1,
273
274         SVGA_CB_STATUS_QUEUE_FULL = 2,
275
276         SVGA_CB_STATUS_COMMAND_ERROR = 3,
277
278         SVGA_CB_STATUS_CB_HEADER_ERROR = 4,
279
280         SVGA_CB_STATUS_PREEMPTED = 5,
281
282         SVGA_CB_STATUS_SUBMISSION_ERROR = 6,
283
284         SVGA_CB_STATUS_PARTIAL_COMPLETE = 7,
285 } SVGACBStatus;
286
287 typedef enum {
288         SVGA_CB_FLAG_NONE = 0,
289         SVGA_CB_FLAG_NO_IRQ = 1 << 0,
290         SVGA_CB_FLAG_DX_CONTEXT = 1 << 1,
291         SVGA_CB_FLAG_MOB = 1 << 2,
292 } SVGACBFlags;
293
294 #pragma pack(push, 1)
295 typedef struct {
296         volatile SVGACBStatus status;
297         volatile uint32 errorOffset;
298         uint64 id;
299         SVGACBFlags flags;
300         uint32 length;
301         union {
302                 PA pa;
303                 struct {
304                         SVGAMobId mobid;
305                         uint32 mobOffset;
306                 } mob;
307         } ptr;
308         uint32 offset;
309         uint32 dxContext;
310         uint32 mustBeZero[6];
311 } SVGACBHeader;
312 #pragma pack(pop)
313
314 typedef enum {
315         SVGA_DC_CMD_NOP = 0,
316         SVGA_DC_CMD_START_STOP_CONTEXT = 1,
317         SVGA_DC_CMD_PREEMPT = 2,
318         SVGA_DC_CMD_START_QUEUE = 3,
319         SVGA_DC_CMD_ASYNC_STOP_QUEUE = 4,
320         SVGA_DC_CMD_EMPTY_CONTEXT_QUEUE = 5,
321         SVGA_DC_CMD_MAX = 6
322 } SVGADeviceContextCmdId;
323
324 typedef struct SVGADCCmdStartStop {
325         uint32 enable;
326         SVGACBContext context;
327 } SVGADCCmdStartStop;
328
329 typedef struct SVGADCCmdPreempt {
330         SVGACBContext context;
331         uint32 ignoreIDZero;
332 } SVGADCCmdPreempt;
333
334 typedef struct SVGADCCmdStartQueue {
335         SVGACBContext context;
336 } SVGADCCmdStartQueue;
337
338 typedef struct SVGADCCmdAsyncStopQueue {
339         SVGACBContext context;
340 } SVGADCCmdAsyncStopQueue;
341
342 typedef struct SVGADCCmdEmptyQueue {
343         SVGACBContext context;
344 } SVGADCCmdEmptyQueue;
345
346 typedef struct SVGAGMRImageFormat {
347         union {
348                 struct {
349                         uint32 bitsPerPixel : 8;
350                         uint32 colorDepth : 8;
351                         uint32 reserved : 16;
352                 };
353
354                 uint32 value;
355         };
356 } SVGAGMRImageFormat;
357
358 #pragma pack(push, 1)
359 typedef struct SVGAGuestImage {
360         SVGAGuestPtr ptr;
361
362         uint32 pitch;
363 } SVGAGuestImage;
364 #pragma pack(pop)
365
366 typedef struct SVGAColorBGRX {
367         union {
368                 struct {
369                         uint32 b : 8;
370                         uint32 g : 8;
371                         uint32 r : 8;
372                         uint32 x : 8;
373                 };
374
375                 uint32 value;
376         };
377 } SVGAColorBGRX;
378
379 #pragma pack(push, 1)
380 typedef struct {
381         int32 left;
382         int32 top;
383         int32 right;
384         int32 bottom;
385 } SVGASignedRect;
386 #pragma pack(pop)
387
388 #pragma pack(push, 1)
389 typedef struct {
390         int32 x;
391         int32 y;
392 } SVGASignedPoint;
393 #pragma pack(pop)
394
395 #pragma pack(push, 1)
396 typedef struct {
397         uint32 x;
398         uint32 y;
399 } SVGAUnsignedPoint;
400 #pragma pack(pop)
401
402 #define SVGA_CAP_NONE 0x00000000
403 #define SVGA_CAP_RECT_COPY 0x00000002
404 #define SVGA_CAP_CURSOR 0x00000020
405 #define SVGA_CAP_CURSOR_BYPASS 0x00000040
406 #define SVGA_CAP_CURSOR_BYPASS_2 0x00000080
407 #define SVGA_CAP_8BIT_EMULATION 0x00000100
408 #define SVGA_CAP_ALPHA_CURSOR 0x00000200
409 #define SVGA_CAP_3D 0x00004000
410 #define SVGA_CAP_EXTENDED_FIFO 0x00008000
411 #define SVGA_CAP_MULTIMON 0x00010000
412 #define SVGA_CAP_PITCHLOCK 0x00020000
413 #define SVGA_CAP_IRQMASK 0x00040000
414 #define SVGA_CAP_DISPLAY_TOPOLOGY 0x00080000
415 #define SVGA_CAP_GMR 0x00100000
416 #define SVGA_CAP_TRACES 0x00200000
417 #define SVGA_CAP_GMR2 0x00400000
418 #define SVGA_CAP_SCREEN_OBJECT_2 0x00800000
419 #define SVGA_CAP_COMMAND_BUFFERS 0x01000000
420 #define SVGA_CAP_DEAD1 0x02000000
421 #define SVGA_CAP_CMD_BUFFERS_2 0x04000000
422 #define SVGA_CAP_GBOBJECTS 0x08000000
423 #define SVGA_CAP_DX 0x10000000
424 #define SVGA_CAP_HP_CMD_QUEUE 0x20000000
425 #define SVGA_CAP_NO_BB_RESTRICTION 0x40000000
426 #define SVGA_CAP_CAP2_REGISTER 0x80000000
427
428 #define SVGA_CAP2_NONE 0x00000000
429 #define SVGA_CAP2_GROW_OTABLE 0x00000001
430 #define SVGA_CAP2_INTRA_SURFACE_COPY 0x00000002
431 #define SVGA_CAP2_DX2 0x00000004
432 #define SVGA_CAP2_GB_MEMSIZE_2 0x00000008
433 #define SVGA_CAP2_SCREENDMA_REG 0x00000010
434 #define SVGA_CAP2_OTABLE_PTDEPTH_2 0x00000020
435 #define SVGA_CAP2_NON_MS_TO_MS_STRETCHBLT 0x00000040
436 #define SVGA_CAP2_CURSOR_MOB 0x00000080
437 #define SVGA_CAP2_MSHINT 0x00000100
438 #define SVGA_CAP2_CB_MAX_SIZE_4MB 0x00000200
439 #define SVGA_CAP2_DX3 0x00000400
440 #define SVGA_CAP2_FRAME_TYPE 0x00000800
441 #define SVGA_CAP2_COTABLE_COPY 0x00001000
442 #define SVGA_CAP2_TRACE_FULL_FB 0x00002000
443 #define SVGA_CAP2_EXTRA_REGS 0x00004000
444 #define SVGA_CAP2_LO_STAGING 0x00008000
445 #define SVGA_CAP2_VIDEO_BLT 0x00010000
446 #define SVGA_CAP2_RESERVED 0x80000000
447
448 typedef enum {
449         SVGABackdoorCapDeviceCaps = 0,
450         SVGABackdoorCapFifoCaps = 1,
451         SVGABackdoorCap3dHWVersion = 2,
452         SVGABackdoorCapDeviceCaps2 = 3,
453         SVGABackdoorCapDevelCaps = 4,
454         SVGABackdoorCapDevCaps = 5,
455         SVGABackdoorDevelRenderer = 6,
456         SVGABackdoorDevelUsingISB = 7,
457         SVGABackdoorCapMax = 8,
458 } SVGABackdoorCapType;
459
460 enum {
461
462         SVGA_FIFO_MIN = 0,
463         SVGA_FIFO_MAX,
464         SVGA_FIFO_NEXT_CMD,
465         SVGA_FIFO_STOP,
466
467         SVGA_FIFO_CAPABILITIES = 4,
468         SVGA_FIFO_FLAGS,
469
470         SVGA_FIFO_FENCE,
471
472         SVGA_FIFO_3D_HWVERSION,
473
474         SVGA_FIFO_PITCHLOCK,
475
476         SVGA_FIFO_CURSOR_ON,
477         SVGA_FIFO_CURSOR_X,
478         SVGA_FIFO_CURSOR_Y,
479         SVGA_FIFO_CURSOR_COUNT,
480         SVGA_FIFO_CURSOR_LAST_UPDATED,
481
482         SVGA_FIFO_RESERVED,
483
484         SVGA_FIFO_CURSOR_SCREEN_ID,
485
486         SVGA_FIFO_DEAD,
487
488         SVGA_FIFO_3D_HWVERSION_REVISED,
489
490         SVGA_FIFO_3D_CAPS = 32,
491         SVGA_FIFO_3D_CAPS_LAST = 32 + 255,
492
493         SVGA_FIFO_GUEST_3D_HWVERSION,
494         SVGA_FIFO_FENCE_GOAL,
495         SVGA_FIFO_BUSY,
496
497         SVGA_FIFO_NUM_REGS
498 };
499
500 #define SVGA_FIFO_3D_CAPS_SIZE (SVGA_FIFO_3D_CAPS_LAST - SVGA_FIFO_3D_CAPS + 1)
501
502 #define SVGA3D_FIFO_CAPS_RECORD_DEVCAPS 0x100
503 typedef uint32 SVGA3dFifoCapsRecordType;
504
505 typedef uint32 SVGA3dFifoCapPair[2];
506
507 #pragma pack(push, 1)
508 typedef struct SVGA3dFifoCapsRecordHeader {
509         uint32 length;
510         SVGA3dFifoCapsRecordType type;
511
512 } SVGA3dFifoCapsRecordHeader;
513 #pragma pack(pop)
514
515 #define SVGA_FIFO_EXTENDED_MANDATORY_REGS (SVGA_FIFO_3D_CAPS_LAST + 1)
516
517 #define SVGA_FIFO_CAP_NONE 0
518 #define SVGA_FIFO_CAP_FENCE (1 << 0)
519 #define SVGA_FIFO_CAP_ACCELFRONT (1 << 1)
520 #define SVGA_FIFO_CAP_PITCHLOCK (1 << 2)
521 #define SVGA_FIFO_CAP_VIDEO (1 << 3)
522 #define SVGA_FIFO_CAP_CURSOR_BYPASS_3 (1 << 4)
523 #define SVGA_FIFO_CAP_ESCAPE (1 << 5)
524 #define SVGA_FIFO_CAP_RESERVE (1 << 6)
525 #define SVGA_FIFO_CAP_SCREEN_OBJECT (1 << 7)
526 #define SVGA_FIFO_CAP_GMR2 (1 << 8)
527 #define SVGA_FIFO_CAP_3D_HWVERSION_REVISED SVGA_FIFO_CAP_GMR2
528 #define SVGA_FIFO_CAP_SCREEN_OBJECT_2 (1 << 9)
529 #define SVGA_FIFO_CAP_DEAD (1 << 10)
530
531 #define SVGA_FIFO_FLAG_NONE 0
532 #define SVGA_FIFO_FLAG_ACCELFRONT (1 << 0)
533 #define SVGA_FIFO_FLAG_RESERVED (1 << 31)
534
535 #define SVGA_FIFO_RESERVED_UNKNOWN 0xffffffff
536
537 #define SVGA_SCREENDMA_REG_UNDEFINED 0
538 #define SVGA_SCREENDMA_REG_NOT_PRESENT 1
539 #define SVGA_SCREENDMA_REG_PRESENT 2
540 #define SVGA_SCREENDMA_REG_MAX 3
541
542 #define SVGA_NUM_OVERLAY_UNITS 32
543
544 #define SVGA_VIDEO_FLAG_COLORKEY 0x0001
545
546 enum {
547         SVGA_VIDEO_ENABLED = 0,
548         SVGA_VIDEO_FLAGS,
549         SVGA_VIDEO_DATA_OFFSET,
550         SVGA_VIDEO_FORMAT,
551         SVGA_VIDEO_COLORKEY,
552         SVGA_VIDEO_SIZE,
553         SVGA_VIDEO_WIDTH,
554         SVGA_VIDEO_HEIGHT,
555         SVGA_VIDEO_SRC_X,
556         SVGA_VIDEO_SRC_Y,
557         SVGA_VIDEO_SRC_WIDTH,
558         SVGA_VIDEO_SRC_HEIGHT,
559         SVGA_VIDEO_DST_X,
560         SVGA_VIDEO_DST_Y,
561         SVGA_VIDEO_DST_WIDTH,
562         SVGA_VIDEO_DST_HEIGHT,
563         SVGA_VIDEO_PITCH_1,
564         SVGA_VIDEO_PITCH_2,
565         SVGA_VIDEO_PITCH_3,
566         SVGA_VIDEO_DATA_GMRID,
567         SVGA_VIDEO_DST_SCREEN_ID,
568         SVGA_VIDEO_NUM_REGS
569 };
570
571 #pragma pack(push, 1)
572 typedef struct SVGAOverlayUnit {
573         uint32 enabled;
574         uint32 flags;
575         uint32 dataOffset;
576         uint32 format;
577         uint32 colorKey;
578         uint32 size;
579         uint32 width;
580         uint32 height;
581         uint32 srcX;
582         uint32 srcY;
583         uint32 srcWidth;
584         uint32 srcHeight;
585         int32 dstX;
586         int32 dstY;
587         uint32 dstWidth;
588         uint32 dstHeight;
589         uint32 pitches[3];
590         uint32 dataGMRId;
591         uint32 dstScreenId;
592 } SVGAOverlayUnit;
593 #pragma pack(pop)
594
595 #define SVGA_INVALID_DISPLAY_ID ((uint32)-1)
596
597 typedef struct SVGADisplayTopology {
598         uint16 displayId;
599         uint16 isPrimary;
600         uint32 width;
601         uint32 height;
602         uint32 positionX;
603         uint32 positionY;
604 } SVGADisplayTopology;
605
606 #define SVGA_SCREEN_MUST_BE_SET (1 << 0)
607 #define SVGA_SCREEN_HAS_ROOT SVGA_SCREEN_MUST_BE_SET
608 #define SVGA_SCREEN_IS_PRIMARY (1 << 1)
609 #define SVGA_SCREEN_FULLSCREEN_HINT (1 << 2)
610
611 #define SVGA_SCREEN_DEACTIVATE (1 << 3)
612
613 #define SVGA_SCREEN_BLANKING (1 << 4)
614
615 #pragma pack(push, 1)
616 typedef struct {
617         uint32 structSize;
618         uint32 id;
619         uint32 flags;
620         struct {
621                 uint32 width;
622                 uint32 height;
623         } size;
624         struct {
625                 int32 x;
626                 int32 y;
627         } root;
628
629         SVGAGuestImage backingStore;
630
631         uint32 cloneCount;
632 } SVGAScreenObject;
633 #pragma pack(pop)
634
635 typedef enum {
636         SVGA_CMD_INVALID_CMD = 0,
637         SVGA_CMD_UPDATE = 1,
638         SVGA_CMD_RECT_COPY = 3,
639         SVGA_CMD_RECT_ROP_COPY = 14,
640         SVGA_CMD_DEFINE_CURSOR = 19,
641         SVGA_CMD_DEFINE_ALPHA_CURSOR = 22,
642         SVGA_CMD_UPDATE_VERBOSE = 25,
643         SVGA_CMD_FRONT_ROP_FILL = 29,
644         SVGA_CMD_FENCE = 30,
645         SVGA_CMD_ESCAPE = 33,
646         SVGA_CMD_DEFINE_SCREEN = 34,
647         SVGA_CMD_DESTROY_SCREEN = 35,
648         SVGA_CMD_DEFINE_GMRFB = 36,
649         SVGA_CMD_BLIT_GMRFB_TO_SCREEN = 37,
650         SVGA_CMD_BLIT_SCREEN_TO_GMRFB = 38,
651         SVGA_CMD_ANNOTATION_FILL = 39,
652         SVGA_CMD_ANNOTATION_COPY = 40,
653         SVGA_CMD_DEFINE_GMR2 = 41,
654         SVGA_CMD_REMAP_GMR2 = 42,
655         SVGA_CMD_DEAD = 43,
656         SVGA_CMD_DEAD_2 = 44,
657         SVGA_CMD_NOP = 45,
658         SVGA_CMD_NOP_ERROR = 46,
659         SVGA_CMD_MAX
660 } SVGAFifoCmdId;
661
662 #define SVGA_CMD_MAX_DATASIZE (256 * 1024)
663 #define SVGA_CMD_MAX_ARGS 64
664
665 #pragma pack(push, 1)
666 typedef struct {
667         uint32 x;
668         uint32 y;
669         uint32 width;
670         uint32 height;
671 } SVGAFifoCmdUpdate;
672 #pragma pack(pop)
673
674 #pragma pack(push, 1)
675 typedef struct {
676         uint32 srcX;
677         uint32 srcY;
678         uint32 destX;
679         uint32 destY;
680         uint32 width;
681         uint32 height;
682 } SVGAFifoCmdRectCopy;
683 #pragma pack(pop)
684
685 #pragma pack(push, 1)
686 typedef struct {
687         uint32 srcX;
688         uint32 srcY;
689         uint32 destX;
690         uint32 destY;
691         uint32 width;
692         uint32 height;
693         uint32 rop;
694 } SVGAFifoCmdRectRopCopy;
695 #pragma pack(pop)
696
697 #pragma pack(push, 1)
698 typedef struct {
699         uint32 id;
700         uint32 hotspotX;
701         uint32 hotspotY;
702         uint32 width;
703         uint32 height;
704         uint32 andMaskDepth;
705         uint32 xorMaskDepth;
706
707 } SVGAFifoCmdDefineCursor;
708 #pragma pack(pop)
709
710 #pragma pack(push, 1)
711 typedef struct {
712         uint32 id;
713         uint32 hotspotX;
714         uint32 hotspotY;
715         uint32 width;
716         uint32 height;
717
718 } SVGAFifoCmdDefineAlphaCursor;
719 #pragma pack(pop)
720
721 #pragma pack(push, 1)
722 typedef struct {
723         uint32 hotspotX;
724         uint32 hotspotY;
725         uint32 width;
726         uint32 height;
727         uint32 andMaskDepth;
728         uint32 xorMaskDepth;
729
730 } SVGAGBColorCursorHeader;
731 #pragma pack(pop)
732
733 #pragma pack(push, 1)
734 typedef struct {
735         uint32 hotspotX;
736         uint32 hotspotY;
737         uint32 width;
738         uint32 height;
739
740 } SVGAGBAlphaCursorHeader;
741 #pragma pack(pop)
742
743 typedef enum {
744         SVGA_COLOR_CURSOR = 0,
745         SVGA_ALPHA_CURSOR = 1,
746 } SVGAGBCursorType;
747
748 #pragma pack(push, 1)
749 typedef struct {
750         SVGAGBCursorType type;
751         union {
752                 SVGAGBColorCursorHeader colorHeader;
753                 SVGAGBAlphaCursorHeader alphaHeader;
754         } header;
755         uint32 sizeInBytes;
756
757 } SVGAGBCursorHeader;
758 #pragma pack(pop)
759
760 #pragma pack(push, 1)
761 typedef struct {
762         uint32 x;
763         uint32 y;
764         uint32 width;
765         uint32 height;
766         uint32 reason;
767 } SVGAFifoCmdUpdateVerbose;
768 #pragma pack(pop)
769
770 #pragma pack(push, 1)
771 typedef struct {
772         uint32 color;
773         uint32 x;
774         uint32 y;
775         uint32 width;
776         uint32 height;
777         uint32 rop;
778 } SVGAFifoCmdFrontRopFill;
779 #pragma pack(pop)
780
781 #pragma pack(push, 1)
782 typedef struct {
783         uint32 fence;
784 } SVGAFifoCmdFence;
785 #pragma pack(pop)
786
787 #pragma pack(push, 1)
788 typedef struct {
789         uint32 nsid;
790         uint32 size;
791
792 } SVGAFifoCmdEscape;
793 #pragma pack(pop)
794
795 #pragma pack(push, 1)
796 typedef struct {
797         SVGAScreenObject screen;
798 } SVGAFifoCmdDefineScreen;
799 #pragma pack(pop)
800
801 #pragma pack(push, 1)
802 typedef struct {
803         uint32 screenId;
804 } SVGAFifoCmdDestroyScreen;
805 #pragma pack(pop)
806
807 #pragma pack(push, 1)
808 typedef struct {
809         SVGAGuestPtr ptr;
810         uint32 bytesPerLine;
811         SVGAGMRImageFormat format;
812 } SVGAFifoCmdDefineGMRFB;
813 #pragma pack(pop)
814
815 #pragma pack(push, 1)
816 typedef struct {
817         SVGASignedPoint srcOrigin;
818         SVGASignedRect destRect;
819         uint32 destScreenId;
820 } SVGAFifoCmdBlitGMRFBToScreen;
821 #pragma pack(pop)
822
823 #pragma pack(push, 1)
824 typedef struct {
825         SVGASignedPoint destOrigin;
826         SVGASignedRect srcRect;
827         uint32 srcScreenId;
828 } SVGAFifoCmdBlitScreenToGMRFB;
829 #pragma pack(pop)
830
831 #pragma pack(push, 1)
832 typedef struct {
833         SVGAColorBGRX color;
834 } SVGAFifoCmdAnnotationFill;
835 #pragma pack(pop)
836
837 #pragma pack(push, 1)
838 typedef struct {
839         SVGASignedPoint srcOrigin;
840         uint32 srcScreenId;
841 } SVGAFifoCmdAnnotationCopy;
842 #pragma pack(pop)
843
844 #pragma pack(push, 1)
845 typedef struct {
846         uint32 gmrId;
847         uint32 numPages;
848 } SVGAFifoCmdDefineGMR2;
849 #pragma pack(pop)
850
851 typedef enum {
852         SVGA_REMAP_GMR2_PPN32 = 0,
853         SVGA_REMAP_GMR2_VIA_GMR = (1 << 0),
854         SVGA_REMAP_GMR2_PPN64 = (1 << 1),
855         SVGA_REMAP_GMR2_SINGLE_PPN = (1 << 2),
856 } SVGARemapGMR2Flags;
857
858 #pragma pack(push, 1)
859 typedef struct {
860         uint32 gmrId;
861         SVGARemapGMR2Flags flags;
862         uint32 offsetPages;
863         uint32 numPages;
864
865 } SVGAFifoCmdRemapGMR2;
866 #pragma pack(pop)
867
868 #define SVGA_VRAM_MIN_SIZE (4 * 640 * 480)
869 #define SVGA_VRAM_MIN_SIZE_3D (16 * 1024 * 1024)
870 #define SVGA_VRAM_MAX_SIZE (128 * 1024 * 1024)
871 #define SVGA_MEMORY_SIZE_MAX (1024 * 1024 * 1024)
872 #define SVGA_FIFO_SIZE_MAX (2 * 1024 * 1024)
873 #define SVGA_GRAPHICS_MEMORY_KB_MIN (32 * 1024)
874 #define SVGA_GRAPHICS_MEMORY_KB_MAX_2GB (2 * 1024 * 1024)
875 #define SVGA_GRAPHICS_MEMORY_KB_MAX_3GB (3 * 1024 * 1024)
876 #define SVGA_GRAPHICS_MEMORY_KB_MAX_4GB (4 * 1024 * 1024)
877 #define SVGA_GRAPHICS_MEMORY_KB_MAX_8GB (8 * 1024 * 1024)
878 #define SVGA_GRAPHICS_MEMORY_KB_DEFAULT (256 * 1024)
879
880 #define SVGA_VRAM_SIZE_W2K (64 * 1024 * 1024)
881
882 #if defined(VMX86_SERVER)
883 #define SVGA_VRAM_SIZE (4 * 1024 * 1024)
884 #define SVGA_VRAM_SIZE_3D (64 * 1024 * 1024)
885 #define SVGA_FIFO_SIZE (256 * 1024)
886 #define SVGA_FIFO_SIZE_3D (516 * 1024)
887 #define SVGA_MEMORY_SIZE_DEFAULT (160 * 1024 * 1024)
888 #define SVGA_AUTODETECT_DEFAULT FALSE
889 #else
890 #define SVGA_VRAM_SIZE (16 * 1024 * 1024)
891 #define SVGA_VRAM_SIZE_3D SVGA_VRAM_MAX_SIZE
892 #define SVGA_FIFO_SIZE (2 * 1024 * 1024)
893 #define SVGA_FIFO_SIZE_3D SVGA_FIFO_SIZE
894 #define SVGA_MEMORY_SIZE_DEFAULT (768 * 1024 * 1024)
895 #define SVGA_AUTODETECT_DEFAULT TRUE
896 #endif
897
898 #define SVGA_FIFO_SIZE_GBOBJECTS (256 * 1024)
899 #define SVGA_VRAM_SIZE_GBOBJECTS (4 * 1024 * 1024)
900
901 #endif
This page took 0.086326 seconds and 4 git commands to generate.