Home | History | Annotate | Download | only in vega
      1 /*
      2  * Mesa 3-D graphics library
      3  * Version:  7.9
      4  *
      5  * Copyright (C) 2010 LunarG Inc.
      6  *
      7  * Permission is hereby granted, free of charge, to any person obtaining a
      8  * copy of this software and associated documentation files (the "Software"),
      9  * to deal in the Software without restriction, including without limitation
     10  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     11  * and/or sell copies of the Software, and to permit persons to whom the
     12  * Software is furnished to do so, subject to the following conditions:
     13  *
     14  * The above copyright notice and this permission notice shall be included
     15  * in all copies or substantial portions of the Software.
     16  *
     17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     20  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     22  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
     23  * DEALINGS IN THE SOFTWARE.
     24  *
     25  * Authors:
     26  *    Chia-I Wu <olv (at) lunarg.com>
     27  */
     28 
     29 #include "mapi/mapi.h"
     30 
     31 /* define vega_spec and vega_procs for use with mapi */
     32 #define API_TMP_DEFINE_SPEC
     33 #include "api.h"
     34 
     35 static void api_init(void)
     36 {
     37    static boolean initialized = FALSE;
     38    if (!initialized) {
     39       mapi_init(vega_spec);
     40       initialized = TRUE;
     41    }
     42 }
     43 
     44 struct mapi_table *api_create_dispatch(void)
     45 {
     46    struct mapi_table *tbl;
     47 
     48    api_init();
     49 
     50    tbl = mapi_table_create();
     51    if (tbl)
     52       mapi_table_fill(tbl, vega_procs);
     53 
     54    return tbl;
     55 }
     56 
     57 void api_destroy_dispatch(struct mapi_table *tbl)
     58 {
     59    mapi_table_destroy(tbl);
     60 }
     61 
     62 void api_make_dispatch_current(const struct mapi_table *tbl)
     63 {
     64    mapi_table_make_current(tbl);
     65 }
     66 
     67 mapi_proc api_get_proc_address(const char *proc_name)
     68 {
     69    if (!proc_name || proc_name[0] != 'v' || proc_name[1] != 'g')
     70       return NULL;
     71    proc_name += 2;
     72 
     73    api_init();
     74    return mapi_get_proc_address(proc_name);
     75 }
     76