1/*
2 * Copyright (c) 2016, NVIDIA CORPORATION.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and/or associated documentation files (the
6 * "Materials"), to deal in the Materials without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sublicense, and/or sell copies of the Materials, and to
9 * permit persons to whom the Materials are furnished to do so, subject to
10 * the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included
13 * unaltered in all copies or substantial portions of the Materials.
14 * Any additions, deletions, or changes to the original source files
15 * must be clearly indicated in accompanying documentation.
16 *
17 * If only executable code is distributed, then the accompanying
18 * documentation must state that "this software is based in part on the
19 * work of the Khronos Group."
20 *
21 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
25 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
28 */
29
30#ifndef VND_SERVER_VENDOR_H
31#define VND_SERVER_VENDOR_H
32
33#include <dix-config.h>
34
35#include "glxvndabi.h"
36#include "list.h"
37
38#if defined(__cplusplus)
39extern "C" {
40#endif
41
42/**
43 * Info related to a single vendor library.
44 */
45struct GlxServerVendorRec {
46    GlxServerImports glxvc;
47
48    struct xorg_list entry;
49};
50
51/**
52 * A linked list of vendor libraries.
53 *
54 * Note that this list only includes vendor libraries that were successfully
55 * initialized.
56 */
57extern struct xorg_list GlxVendorList;
58
59GlxServerVendor *GlxCreateVendor(const GlxServerImports *imports);
60void GlxDestroyVendor(GlxServerVendor *vendor);
61
62void GlxVendorExtensionReset(const ExtensionEntry *extEntry);
63
64#if defined(__cplusplus)
65}
66#endif
67
68#endif // VND_SERVER_VENDOR_H
69