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