VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm/VBoxDispVrdpBmp.h

Last change on this file was 98103, checked in by vboxsync, 17 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.6 KB
Line 
1/* $Id: VBoxDispVrdpBmp.h 98103 2023-01-17 14:15:46Z vboxsync $ */
2/** @file
3 * VBox XPDM Display driver
4 */
5
6/*
7 * Copyright (C) 2011-2023 Oracle and/or its affiliates.
8 *
9 * This file is part of VirtualBox base platform packages, as
10 * available from https://www.virtualbox.org.
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation, in version 3 of the
15 * License.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, see <https://www.gnu.org/licenses>.
24 *
25 * SPDX-License-Identifier: GPL-3.0-only
26 */
27
28#ifndef GA_INCLUDED_SRC_WINNT_Graphics_Video_disp_xpdm_VBoxDispVrdpBmp_h
29#define GA_INCLUDED_SRC_WINNT_Graphics_Video_disp_xpdm_VBoxDispVrdpBmp_h
30#ifndef RT_WITHOUT_PRAGMA_ONCE
31# pragma once
32#endif
33
34/* RDP cache holds about 350 tiles 64x64. Therefore
35 * the driver does not have to cache more then the
36 * RDP capacity. Most of bitmaps will be tiled, so
37 * number of RDP tiles will be greater than number of
38 * bitmaps. Also the number of bitmaps must be a power
39 * of 2. So the 256 is a good number.
40 */
41#define VRDPBMP_N_CACHED_BITMAPS (256)
42
43#define VRDPBMP_RC_NOT_CACHED (0x0000)
44#define VRDPBMP_RC_CACHED (0x0001)
45#define VRDPBMP_RC_ALREADY_CACHED (0x0002)
46
47#define VRDPBMP_RC_F_DELETED (0x10000)
48
49/* Bitmap hash. */
50#pragma pack (1)
51typedef struct _VRDPBCHASH
52{
53 /* A 64 bit hash value of pixels. */
54 uint64_t hash64;
55
56 /* Bitmap width. */
57 uint16_t cx;
58
59 /* Bitmap height. */
60 uint16_t cy;
61
62 /* Bytes per pixel at the bitmap. */
63 uint8_t bytesPerPixel;
64
65 /* Padding to 16 bytes. */
66 uint8_t padding[3];
67} VRDPBCHASH;
68#pragma pack ()
69
70#define VRDP_BC_ENTRY_STATUS_EMPTY 0
71#define VRDP_BC_ENTRY_STATUS_TEMPORARY 1
72#define VRDP_BC_ENTRY_STATUS_CACHED 2
73
74typedef struct _VRDPBCENTRY
75{
76 struct _VRDPBCENTRY *next;
77 struct _VRDPBCENTRY *prev;
78 VRDPBCHASH hash;
79 uint32_t u32Status;
80} VRDPBCENTRY;
81
82typedef struct _VRDPBC
83{
84 VRDPBCENTRY *headTmp;
85 VRDPBCENTRY *tailTmp;
86 VRDPBCENTRY *headCached;
87 VRDPBCENTRY *tailCached;
88 VRDPBCENTRY aEntries[VRDPBMP_N_CACHED_BITMAPS];
89} VRDPBC;
90
91void vrdpbmpReset (VRDPBC *pCache);
92int vrdpbmpCacheSurface (VRDPBC *pCache, const SURFOBJ *pso, VRDPBCHASH *phash, VRDPBCHASH *phashDeleted, BOOL bForce);
93
94#endif /* !GA_INCLUDED_SRC_WINNT_Graphics_Video_disp_xpdm_VBoxDispVrdpBmp_h */
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use