1d92223eaSZack Rusin /* SPDX-License-Identifier: GPL-2.0 OR MIT */
2d92223eaSZack Rusin /**************************************************************************
3d92223eaSZack Rusin *
4d92223eaSZack Rusin * Copyright 2021 VMware, Inc., Palo Alto, CA., USA
5d92223eaSZack Rusin *
6d92223eaSZack Rusin * Permission is hereby granted, free of charge, to any person obtaining a
7d92223eaSZack Rusin * copy of this software and associated documentation files (the
8d92223eaSZack Rusin * "Software"), to deal in the Software without restriction, including
9d92223eaSZack Rusin * without limitation the rights to use, copy, modify, merge, publish,
10d92223eaSZack Rusin * distribute, sub license, and/or sell copies of the Software, and to
11d92223eaSZack Rusin * permit persons to whom the Software is furnished to do so, subject to
12d92223eaSZack Rusin * the following conditions:
13d92223eaSZack Rusin *
14d92223eaSZack Rusin * The above copyright notice and this permission notice (including the
15d92223eaSZack Rusin * next paragraph) shall be included in all copies or substantial portions
16d92223eaSZack Rusin * of the Software.
17d92223eaSZack Rusin *
18d92223eaSZack Rusin * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19d92223eaSZack Rusin * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20d92223eaSZack Rusin * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
21d92223eaSZack Rusin * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
22d92223eaSZack Rusin * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23d92223eaSZack Rusin * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24d92223eaSZack Rusin * USE OR OTHER DEALINGS IN THE SOFTWARE.
25d92223eaSZack Rusin *
26d92223eaSZack Rusin **************************************************************************/
27d92223eaSZack Rusin
28d92223eaSZack Rusin #ifndef _VMWGFX_DEVCAPS_H_
29d92223eaSZack Rusin #define _VMWGFX_DEVCAPS_H_
30d92223eaSZack Rusin
31d92223eaSZack Rusin #include "vmwgfx_drv.h"
32d92223eaSZack Rusin
33*ebc9ac7cSZack Rusin #include "device_include/svga_reg.h"
34d92223eaSZack Rusin
35d92223eaSZack Rusin int vmw_devcaps_create(struct vmw_private *vmw);
36d92223eaSZack Rusin void vmw_devcaps_destroy(struct vmw_private *vmw);
37d92223eaSZack Rusin uint32_t vmw_devcaps_size(const struct vmw_private *vmw, bool gb_aware);
38d92223eaSZack Rusin int vmw_devcaps_copy(struct vmw_private *vmw, bool gb_aware,
39d92223eaSZack Rusin void *dst, uint32_t dst_size);
40d92223eaSZack Rusin
vmw_devcap_get(struct vmw_private * vmw,uint32_t devcap)41d92223eaSZack Rusin static inline uint32_t vmw_devcap_get(struct vmw_private *vmw,
42d92223eaSZack Rusin uint32_t devcap)
43d92223eaSZack Rusin {
44d92223eaSZack Rusin bool gb_objects = !!(vmw->capabilities & SVGA_CAP_GBOBJECTS);
45d92223eaSZack Rusin if (gb_objects)
46d92223eaSZack Rusin return vmw->devcaps[devcap];
47d92223eaSZack Rusin return 0;
48d92223eaSZack Rusin }
49d92223eaSZack Rusin
50d92223eaSZack Rusin #endif
51