1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */ 2 /* 3 * Copyright 2007-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_overlay.h -- 29 * 30 * Definitions for video-overlay support. 31 */ 32 33 34 35 #ifndef _SVGA_OVERLAY_H_ 36 #define _SVGA_OVERLAY_H_ 37 38 #include "svga_reg.h" 39 40 #if defined __cplusplus 41 extern "C" { 42 #endif 43 44 #define VMWARE_FOURCC_YV12 0x32315659 45 #define VMWARE_FOURCC_YUY2 0x32595559 46 #define VMWARE_FOURCC_UYVY 0x59565955 47 48 typedef enum { 49 SVGA_OVERLAY_FORMAT_INVALID = 0, 50 SVGA_OVERLAY_FORMAT_YV12 = VMWARE_FOURCC_YV12, 51 SVGA_OVERLAY_FORMAT_YUY2 = VMWARE_FOURCC_YUY2, 52 SVGA_OVERLAY_FORMAT_UYVY = VMWARE_FOURCC_UYVY, 53 } SVGAOverlayFormat; 54 55 #define SVGA_VIDEO_COLORKEY_MASK 0x00ffffff 56 57 #define SVGA_ESCAPE_VMWARE_VIDEO 0x00020000 58 59 #define SVGA_ESCAPE_VMWARE_VIDEO_SET_REGS 0x00020001 60 61 #define SVGA_ESCAPE_VMWARE_VIDEO_FLUSH 0x00020002 62 63 typedef struct SVGAEscapeVideoSetRegs { 64 struct { 65 uint32 cmdType; 66 uint32 streamId; 67 } header; 68 69 struct { 70 uint32 registerId; 71 uint32 value; 72 } items[1]; 73 } SVGAEscapeVideoSetRegs; 74 75 typedef struct SVGAEscapeVideoFlush { 76 uint32 cmdType; 77 uint32 streamId; 78 } SVGAEscapeVideoFlush; 79 80 #pragma pack(push, 1) 81 typedef struct { 82 uint32 command; 83 uint32 overlay; 84 } SVGAFifoEscapeCmdVideoBase; 85 #pragma pack(pop) 86 87 #pragma pack(push, 1) 88 typedef struct { 89 SVGAFifoEscapeCmdVideoBase videoCmd; 90 } SVGAFifoEscapeCmdVideoFlush; 91 #pragma pack(pop) 92 93 #pragma pack(push, 1) 94 typedef struct { 95 SVGAFifoEscapeCmdVideoBase videoCmd; 96 struct { 97 uint32 regId; 98 uint32 value; 99 } items[1]; 100 } SVGAFifoEscapeCmdVideoSetRegs; 101 #pragma pack(pop) 102 103 #pragma pack(push, 1) 104 typedef struct { 105 SVGAFifoEscapeCmdVideoBase videoCmd; 106 struct { 107 uint32 regId; 108 uint32 value; 109 } items[SVGA_VIDEO_NUM_REGS]; 110 } SVGAFifoEscapeCmdVideoSetAllRegs; 111 #pragma pack(pop) 112 113 #if defined __cplusplus 114 } 115 #endif 116 117 #endif 118