18ce75f8aSSinclair Yeh /********************************************************** 2*ebc9ac7cSZack Rusin * Copyright 2007-2021 VMware, Inc. 3*ebc9ac7cSZack Rusin * SPDX-License-Identifier: GPL-2.0 OR MIT 48ce75f8aSSinclair Yeh * 58ce75f8aSSinclair Yeh * Permission is hereby granted, free of charge, to any person 68ce75f8aSSinclair Yeh * obtaining a copy of this software and associated documentation 78ce75f8aSSinclair Yeh * files (the "Software"), to deal in the Software without 88ce75f8aSSinclair Yeh * restriction, including without limitation the rights to use, copy, 98ce75f8aSSinclair Yeh * modify, merge, publish, distribute, sublicense, and/or sell copies 108ce75f8aSSinclair Yeh * of the Software, and to permit persons to whom the Software is 118ce75f8aSSinclair Yeh * furnished to do so, subject to the following conditions: 128ce75f8aSSinclair Yeh * 138ce75f8aSSinclair Yeh * The above copyright notice and this permission notice shall be 148ce75f8aSSinclair Yeh * included in all copies or substantial portions of the Software. 158ce75f8aSSinclair Yeh * 168ce75f8aSSinclair Yeh * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 178ce75f8aSSinclair Yeh * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 188ce75f8aSSinclair Yeh * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 198ce75f8aSSinclair Yeh * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 208ce75f8aSSinclair Yeh * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 218ce75f8aSSinclair Yeh * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 228ce75f8aSSinclair Yeh * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 238ce75f8aSSinclair Yeh * SOFTWARE. 248ce75f8aSSinclair Yeh * 258ce75f8aSSinclair Yeh **********************************************************/ 268ce75f8aSSinclair Yeh 278ce75f8aSSinclair Yeh /* 288ce75f8aSSinclair Yeh * svga_overlay.h -- 298ce75f8aSSinclair Yeh * 308ce75f8aSSinclair Yeh * Definitions for video-overlay support. 318ce75f8aSSinclair Yeh */ 328ce75f8aSSinclair Yeh 33*ebc9ac7cSZack Rusin 34*ebc9ac7cSZack Rusin 358ce75f8aSSinclair Yeh #ifndef _SVGA_OVERLAY_H_ 368ce75f8aSSinclair Yeh #define _SVGA_OVERLAY_H_ 378ce75f8aSSinclair Yeh 388ce75f8aSSinclair Yeh #include "svga_reg.h" 398ce75f8aSSinclair Yeh 40*ebc9ac7cSZack Rusin #if defined __cplusplus 41*ebc9ac7cSZack Rusin extern "C" { 42*ebc9ac7cSZack Rusin #endif 438ce75f8aSSinclair Yeh 44*ebc9ac7cSZack Rusin #define VMWARE_FOURCC_YV12 0x32315659 45*ebc9ac7cSZack Rusin #define VMWARE_FOURCC_YUY2 0x32595559 46*ebc9ac7cSZack Rusin #define VMWARE_FOURCC_UYVY 0x59565955 478ce75f8aSSinclair Yeh 488ce75f8aSSinclair Yeh typedef enum { 498ce75f8aSSinclair Yeh SVGA_OVERLAY_FORMAT_INVALID = 0, 508ce75f8aSSinclair Yeh SVGA_OVERLAY_FORMAT_YV12 = VMWARE_FOURCC_YV12, 518ce75f8aSSinclair Yeh SVGA_OVERLAY_FORMAT_YUY2 = VMWARE_FOURCC_YUY2, 528ce75f8aSSinclair Yeh SVGA_OVERLAY_FORMAT_UYVY = VMWARE_FOURCC_UYVY, 538ce75f8aSSinclair Yeh } SVGAOverlayFormat; 548ce75f8aSSinclair Yeh 558ce75f8aSSinclair Yeh #define SVGA_VIDEO_COLORKEY_MASK 0x00ffffff 568ce75f8aSSinclair Yeh 578ce75f8aSSinclair Yeh #define SVGA_ESCAPE_VMWARE_VIDEO 0x00020000 588ce75f8aSSinclair Yeh 598ce75f8aSSinclair Yeh #define SVGA_ESCAPE_VMWARE_VIDEO_SET_REGS 0x00020001 608ce75f8aSSinclair Yeh 618ce75f8aSSinclair Yeh #define SVGA_ESCAPE_VMWARE_VIDEO_FLUSH 0x00020002 628ce75f8aSSinclair Yeh 63*ebc9ac7cSZack Rusin typedef struct SVGAEscapeVideoSetRegs { 648ce75f8aSSinclair Yeh struct { 658ce75f8aSSinclair Yeh uint32 cmdType; 668ce75f8aSSinclair Yeh uint32 streamId; 678ce75f8aSSinclair Yeh } header; 688ce75f8aSSinclair Yeh 698ce75f8aSSinclair Yeh struct { 708ce75f8aSSinclair Yeh uint32 registerId; 718ce75f8aSSinclair Yeh uint32 value; 728ce75f8aSSinclair Yeh } items[1]; 738ce75f8aSSinclair Yeh } SVGAEscapeVideoSetRegs; 748ce75f8aSSinclair Yeh 75*ebc9ac7cSZack Rusin typedef struct SVGAEscapeVideoFlush { 768ce75f8aSSinclair Yeh uint32 cmdType; 778ce75f8aSSinclair Yeh uint32 streamId; 788ce75f8aSSinclair Yeh } SVGAEscapeVideoFlush; 798ce75f8aSSinclair Yeh 80*ebc9ac7cSZack Rusin #pragma pack(push, 1) 81*ebc9ac7cSZack Rusin typedef struct { 828ce75f8aSSinclair Yeh uint32 command; 838ce75f8aSSinclair Yeh uint32 overlay; 848ce75f8aSSinclair Yeh } SVGAFifoEscapeCmdVideoBase; 85*ebc9ac7cSZack Rusin #pragma pack(pop) 868ce75f8aSSinclair Yeh 87*ebc9ac7cSZack Rusin #pragma pack(push, 1) 88*ebc9ac7cSZack Rusin typedef struct { 898ce75f8aSSinclair Yeh SVGAFifoEscapeCmdVideoBase videoCmd; 908ce75f8aSSinclair Yeh } SVGAFifoEscapeCmdVideoFlush; 91*ebc9ac7cSZack Rusin #pragma pack(pop) 928ce75f8aSSinclair Yeh 93*ebc9ac7cSZack Rusin #pragma pack(push, 1) 94*ebc9ac7cSZack Rusin typedef struct { 958ce75f8aSSinclair Yeh SVGAFifoEscapeCmdVideoBase videoCmd; 968ce75f8aSSinclair Yeh struct { 978ce75f8aSSinclair Yeh uint32 regId; 988ce75f8aSSinclair Yeh uint32 value; 998ce75f8aSSinclair Yeh } items[1]; 1008ce75f8aSSinclair Yeh } SVGAFifoEscapeCmdVideoSetRegs; 101*ebc9ac7cSZack Rusin #pragma pack(pop) 1028ce75f8aSSinclair Yeh 103*ebc9ac7cSZack Rusin #pragma pack(push, 1) 104*ebc9ac7cSZack Rusin typedef struct { 1058ce75f8aSSinclair Yeh SVGAFifoEscapeCmdVideoBase videoCmd; 1068ce75f8aSSinclair Yeh struct { 1078ce75f8aSSinclair Yeh uint32 regId; 1088ce75f8aSSinclair Yeh uint32 value; 1098ce75f8aSSinclair Yeh } items[SVGA_VIDEO_NUM_REGS]; 1108ce75f8aSSinclair Yeh } SVGAFifoEscapeCmdVideoSetAllRegs; 111*ebc9ac7cSZack Rusin #pragma pack(pop) 1128ce75f8aSSinclair Yeh 113*ebc9ac7cSZack Rusin #if defined __cplusplus 1148ce75f8aSSinclair Yeh } 115*ebc9ac7cSZack Rusin #endif 1168ce75f8aSSinclair Yeh 117*ebc9ac7cSZack Rusin #endif 118