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