1d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson/**************************************************************************
2d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson *
3d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * Copyright 2009 VMware, Inc.
4d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * All Rights Reserved.
5d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson *
6d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * Permission is hereby granted, free of charge, to any person obtaining a
7d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * copy of this software and associated documentation files (the
8d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * "Software"), to deal in the Software without restriction, including
9d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * without limitation the rights to use, copy, modify, merge, publish,
10d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * distribute, sub license, and/or sell copies of the Software, and to
11d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * permit persons to whom the Software is furnished to do so, subject to
12d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * the following conditions:
13d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson *
14d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * The above copyright notice and this permission notice (including the
15d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * next paragraph) shall be included in all copies or substantial portions
16d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * of the Software.
17d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson *
18d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
22d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson *
26d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson **************************************************************************/
27d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
28d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson#ifndef GLHD_CONTEXT_H
29d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson#define GLHD_CONTEXT_H
30d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
317d551eb03df0a732e9e55dd960afffc6a1525377Corbin Simpson#include <stdio.h>
327d551eb03df0a732e9e55dd960afffc6a1525377Corbin Simpson
33d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson#include "pipe/p_state.h"
34d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson#include "pipe/p_context.h"
35d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
363cb994afca4733e75936e6d92f107e87ce019b04José Fonseca#include "util/u_debug.h"
373cb994afca4733e75936e6d92f107e87ce019b04José Fonseca
38d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
39d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpsonstruct galahad_context {
40d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson   struct pipe_context base;  /**< base class */
41d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
42d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson   struct pipe_context *pipe;
43d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson};
44d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
45d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
46d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpsonstruct pipe_context *
47d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpsongalahad_context_create(struct pipe_screen *screen, struct pipe_context *pipe);
48d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
49d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
50d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpsonstatic INLINE struct galahad_context *
51d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpsongalahad_context(struct pipe_context *pipe)
52d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson{
53d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson   return (struct galahad_context *)pipe;
54d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson}
55d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson
567d551eb03df0a732e9e55dd960afffc6a1525377Corbin Simpson#define glhd_warn(...) \
577d551eb03df0a732e9e55dd960afffc6a1525377Corbin Simpsondo { \
583cb994afca4733e75936e6d92f107e87ce019b04José Fonseca    debug_printf("galahad: %s: ", __FUNCTION__); \
593cb994afca4733e75936e6d92f107e87ce019b04José Fonseca    debug_printf(__VA_ARGS__); \
603cb994afca4733e75936e6d92f107e87ce019b04José Fonseca    debug_printf("\n"); \
617d551eb03df0a732e9e55dd960afffc6a1525377Corbin Simpson} while (0)
627d551eb03df0a732e9e55dd960afffc6a1525377Corbin Simpson
63ff8ddf399adb58d7c33863ec9c6eeaa7aed71599José Fonseca#define glhd_check(fmt, value, expr) \
64ff8ddf399adb58d7c33863ec9c6eeaa7aed71599José Fonseca   ((value expr) ? (void)0 : debug_printf("galahad: %s:%u: Expected `%s %s`, got %s == " fmt "\n", __FUNCTION__, __LINE__, #value, #expr, #value, value))
65ff8ddf399adb58d7c33863ec9c6eeaa7aed71599José Fonseca
66aa451d509df844e4652853f08e31bc1ee18c04acCorbin Simpson#define glhd_error(...) \
67aa451d509df844e4652853f08e31bc1ee18c04acCorbin Simpson    glhd_warn(__VA_ARGS__);
68aa451d509df844e4652853f08e31bc1ee18c04acCorbin Simpson
69d3ad6fa579d89d8c3ee27882d5baf8f8d2ecb3eaCorbin Simpson#endif /* GLHD_CONTEXT_H */
70