1632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz/**********************************************************
2632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * Copyright 2007-2009 VMware, Inc.  All rights reserved.
3632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
4632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * Permission is hereby granted, free of charge, to any person
5632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * obtaining a copy of this software and associated documentation
6632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * files (the "Software"), to deal in the Software without
7632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * restriction, including without limitation the rights to use, copy,
8632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * modify, merge, publish, distribute, sublicense, and/or sell copies
9632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * of the Software, and to permit persons to whom the Software is
10632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * furnished to do so, subject to the following conditions:
11632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
12632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * The above copyright notice and this permission notice shall be
13632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * included in all copies or substantial portions of the Software.
14632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
15632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * SOFTWARE.
23632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
24632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz **********************************************************/
25632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
26632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz/*
27632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * svga_escape.h --
28632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
29632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *    Definitions for our own (vendor-specific) SVGA Escape commands.
30632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz */
31632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
32632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz#ifndef _SVGA_ESCAPE_H_
33632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz#define _SVGA_ESCAPE_H_
34632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
35632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
36632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz/*
37632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * Namespace IDs for the escape command
38632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz */
39632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
40632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz#define SVGA_ESCAPE_NSID_VMWARE 0x00000000
41632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz#define SVGA_ESCAPE_NSID_DEVEL  0xFFFFFFFF
42632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
43632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
44632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz/*
45632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * Within SVGA_ESCAPE_NSID_VMWARE, we multiplex commands according to
46632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * the first DWORD of escape data (after the nsID and size). As a
47632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * guideline we're using the high word and low word as a major and
48632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * minor command number, respectively.
49632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
50632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * Major command number allocation:
51632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
52632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *   0000: Reserved
53632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *   0001: SVGA_ESCAPE_VMWARE_LOG (svga_binary_logger.h)
54632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *   0002: SVGA_ESCAPE_VMWARE_VIDEO (svga_overlay.h)
55632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *   0003: SVGA_ESCAPE_VMWARE_HINT (svga_escape.h)
56632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz */
57632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
58632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz#define SVGA_ESCAPE_VMWARE_MAJOR_MASK  0xFFFF0000
59632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
60632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
61632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz/*
62632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * SVGA Hint commands.
63632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
64632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * These escapes let the SVGA driver provide optional information to
65632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * he host about the state of the guest or guest applications. The
66632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * host can use these hints to make user interface or performance
67632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * decisions.
68632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
69632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz * Notes:
70632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *
71632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *   - SVGA_ESCAPE_VMWARE_HINT_FULLSCREEN is deprecated for guests
72632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *     that use the SVGA Screen Object extension. Instead of sending
73632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *     this escape, use the SVGA_SCREEN_FULLSCREEN_HINT flag on your
74632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz *     Screen Object.
75632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz */
76632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
77632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz#define SVGA_ESCAPE_VMWARE_HINT               0x00030000
788d3713ea9ef305ec89b265633dcfb977885adf66Jakob Bornecrantz#define SVGA_ESCAPE_VMWARE_HINT_FULLSCREEN    0x00030001  /* Deprecated */
79632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
80632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantztypedef
81632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantzstruct {
82632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz   uint32 command;
83632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz   uint32 fullscreen;
84632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz   struct {
85632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz      int32 x, y;
86632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz   } monitorPosition;
87632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz} SVGAEscapeHintFullscreen;
88632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz
89632f61178d0473861ba77e774bb654b37bc7ecccJakob Bornecrantz#endif /* _SVGA_ESCAPE_H_ */
90