svga_overlay.h (2860B)
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 41extern "C" { 42#endif 43 44#define VMWARE_FOURCC_YV12 0x32315659 45#define VMWARE_FOURCC_YUY2 0x32595559 46#define VMWARE_FOURCC_UYVY 0x59565955 47 48typedef 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 63typedef 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 75typedef struct SVGAEscapeVideoFlush { 76 uint32 cmdType; 77 uint32 streamId; 78} SVGAEscapeVideoFlush; 79 80#pragma pack(push, 1) 81typedef struct { 82 uint32 command; 83 uint32 overlay; 84} SVGAFifoEscapeCmdVideoBase; 85#pragma pack(pop) 86 87#pragma pack(push, 1) 88typedef struct { 89 SVGAFifoEscapeCmdVideoBase videoCmd; 90} SVGAFifoEscapeCmdVideoFlush; 91#pragma pack(pop) 92 93#pragma pack(push, 1) 94typedef 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) 104typedef 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