• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2020 Google LLC
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #include "vkr_common.h"
7 
8 #include "util/u_debug.h"
9 #include "venus-protocol/vn_protocol_renderer_info.h"
10 #include "virglrenderer_hw.h"
11 
12 static const struct debug_named_value vkr_debug_options[] = {
13    { "validate", VKR_DEBUG_VALIDATE, "Force enabling the validation layer" },
14    DEBUG_NAMED_VALUE_END
15 };
16 
17 uint32_t vkr_renderer_flags;
18 uint32_t vkr_debug_flags;
19 
20 size_t
vkr_get_capset(void * capset)21 vkr_get_capset(void *capset)
22 {
23    struct virgl_renderer_capset_venus *c = capset;
24    if (c) {
25       memset(c, 0, sizeof(*c));
26       c->wire_format_version = vn_info_wire_format_version();
27       c->vk_xml_version = vn_info_vk_xml_version();
28       c->vk_ext_command_serialization_spec_version =
29          vn_info_extension_spec_version("VK_EXT_command_serialization");
30       c->vk_mesa_venus_protocol_spec_version =
31          vn_info_extension_spec_version("VK_MESA_venus_protocol");
32    }
33 
34    return sizeof(*c);
35 }
36 
37 int
vkr_renderer_init(uint32_t flags)38 vkr_renderer_init(uint32_t flags)
39 {
40    /* TODO VKR_RENDERER_MULTI_PROCESS hint */
41 
42    if ((vkr_renderer_flags & VKR_RENDERER_ASYNC_FENCE_CB) &&
43        !(vkr_renderer_flags & VKR_RENDERER_THREAD_SYNC))
44       return -EINVAL;
45 
46    vkr_renderer_flags = flags;
47    vkr_debug_flags = debug_get_flags_option("VKR_DEBUG", vkr_debug_options, 0);
48 
49    return 0;
50 }
51 
52 void
vkr_renderer_fini(void)53 vkr_renderer_fini(void)
54 {
55    vkr_renderer_flags = 0;
56    vkr_debug_flags = 0;
57 }
58 
59 void
vkr_renderer_reset(void)60 vkr_renderer_reset(void)
61 {
62 }
63