1*61046927SAndroid Build Coastguard Worker /************************************************************************** 2*61046927SAndroid Build Coastguard Worker * 3*61046927SAndroid Build Coastguard Worker * Copyright 2011 Lauri Kasanen 4*61046927SAndroid Build Coastguard Worker * All Rights Reserved. 5*61046927SAndroid Build Coastguard Worker * 6*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 7*61046927SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the 8*61046927SAndroid Build Coastguard Worker * "Software"), to deal in the Software without restriction, including 9*61046927SAndroid Build Coastguard Worker * without limitation the rights to use, copy, modify, merge, publish, 10*61046927SAndroid Build Coastguard Worker * distribute, sub license, and/or sell copies of the Software, and to 11*61046927SAndroid Build Coastguard Worker * permit persons to whom the Software is furnished to do so, subject to 12*61046927SAndroid Build Coastguard Worker * the following conditions: 13*61046927SAndroid Build Coastguard Worker * 14*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the 15*61046927SAndroid Build Coastguard Worker * next paragraph) shall be included in all copies or substantial portions 16*61046927SAndroid Build Coastguard Worker * of the Software. 17*61046927SAndroid Build Coastguard Worker * 18*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19*61046927SAndroid Build Coastguard Worker * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20*61046927SAndroid Build Coastguard Worker * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21*61046927SAndroid Build Coastguard Worker * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 22*61046927SAndroid Build Coastguard Worker * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23*61046927SAndroid Build Coastguard Worker * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24*61046927SAndroid Build Coastguard Worker * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25*61046927SAndroid Build Coastguard Worker * 26*61046927SAndroid Build Coastguard Worker **************************************************************************/ 27*61046927SAndroid Build Coastguard Worker 28*61046927SAndroid Build Coastguard Worker #ifndef POSTPROCESS_H 29*61046927SAndroid Build Coastguard Worker #define POSTPROCESS_H 30*61046927SAndroid Build Coastguard Worker 31*61046927SAndroid Build Coastguard Worker #include "pipe/p_state.h" 32*61046927SAndroid Build Coastguard Worker 33*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 34*61046927SAndroid Build Coastguard Worker extern "C" { 35*61046927SAndroid Build Coastguard Worker #endif 36*61046927SAndroid Build Coastguard Worker 37*61046927SAndroid Build Coastguard Worker struct cso_context; 38*61046927SAndroid Build Coastguard Worker struct st_context; 39*61046927SAndroid Build Coastguard Worker 40*61046927SAndroid Build Coastguard Worker struct pp_queue_t; /* Forward definition */ 41*61046927SAndroid Build Coastguard Worker struct pp_program; 42*61046927SAndroid Build Coastguard Worker 43*61046927SAndroid Build Coastguard Worker /* Less typing later on */ 44*61046927SAndroid Build Coastguard Worker typedef void (*pp_func) (struct pp_queue_t *, struct pipe_resource *, 45*61046927SAndroid Build Coastguard Worker struct pipe_resource *, unsigned int); 46*61046927SAndroid Build Coastguard Worker 47*61046927SAndroid Build Coastguard Worker typedef void (*pp_st_invalidate_state_func)(struct st_context *st, 48*61046927SAndroid Build Coastguard Worker unsigned flags); 49*61046927SAndroid Build Coastguard Worker 50*61046927SAndroid Build Coastguard Worker /* Main functions */ 51*61046927SAndroid Build Coastguard Worker 52*61046927SAndroid Build Coastguard Worker /** 53*61046927SAndroid Build Coastguard Worker * Note enabled is an array of values, one per filter stage. 54*61046927SAndroid Build Coastguard Worker * Zero indicates the stage is disabled. Non-zero indicates the 55*61046927SAndroid Build Coastguard Worker * stage is enabled. For some stages, the value controls quality. 56*61046927SAndroid Build Coastguard Worker */ 57*61046927SAndroid Build Coastguard Worker struct pp_queue_t *pp_init(struct pipe_context *pipe, 58*61046927SAndroid Build Coastguard Worker const unsigned int *enabled, 59*61046927SAndroid Build Coastguard Worker struct cso_context *, 60*61046927SAndroid Build Coastguard Worker struct st_context *st, 61*61046927SAndroid Build Coastguard Worker pp_st_invalidate_state_func st_invalidate_state); 62*61046927SAndroid Build Coastguard Worker 63*61046927SAndroid Build Coastguard Worker void pp_run(struct pp_queue_t *, struct pipe_resource *, 64*61046927SAndroid Build Coastguard Worker struct pipe_resource *, struct pipe_resource *); 65*61046927SAndroid Build Coastguard Worker void pp_free(struct pp_queue_t *); 66*61046927SAndroid Build Coastguard Worker 67*61046927SAndroid Build Coastguard Worker void pp_init_fbos(struct pp_queue_t *, unsigned int, unsigned int); 68*61046927SAndroid Build Coastguard Worker 69*61046927SAndroid Build Coastguard Worker 70*61046927SAndroid Build Coastguard Worker /* The filters */ 71*61046927SAndroid Build Coastguard Worker 72*61046927SAndroid Build Coastguard Worker void pp_nocolor(struct pp_queue_t *, struct pipe_resource *, 73*61046927SAndroid Build Coastguard Worker struct pipe_resource *, unsigned int); 74*61046927SAndroid Build Coastguard Worker 75*61046927SAndroid Build Coastguard Worker void pp_jimenezmlaa(struct pp_queue_t *, struct pipe_resource *, 76*61046927SAndroid Build Coastguard Worker struct pipe_resource *, unsigned int); 77*61046927SAndroid Build Coastguard Worker void pp_jimenezmlaa_color(struct pp_queue_t *, struct pipe_resource *, 78*61046927SAndroid Build Coastguard Worker struct pipe_resource *, unsigned int); 79*61046927SAndroid Build Coastguard Worker 80*61046927SAndroid Build Coastguard Worker /* The filter init functions */ 81*61046927SAndroid Build Coastguard Worker 82*61046927SAndroid Build Coastguard Worker bool pp_celshade_init(struct pp_queue_t *, unsigned int, unsigned int); 83*61046927SAndroid Build Coastguard Worker 84*61046927SAndroid Build Coastguard Worker bool pp_nored_init(struct pp_queue_t *, unsigned int, unsigned int); 85*61046927SAndroid Build Coastguard Worker bool pp_nogreen_init(struct pp_queue_t *, unsigned int, unsigned int); 86*61046927SAndroid Build Coastguard Worker bool pp_noblue_init(struct pp_queue_t *, unsigned int, unsigned int); 87*61046927SAndroid Build Coastguard Worker 88*61046927SAndroid Build Coastguard Worker bool pp_jimenezmlaa_init(struct pp_queue_t *, unsigned int, unsigned int); 89*61046927SAndroid Build Coastguard Worker bool pp_jimenezmlaa_init_color(struct pp_queue_t *, unsigned int, 90*61046927SAndroid Build Coastguard Worker unsigned int); 91*61046927SAndroid Build Coastguard Worker 92*61046927SAndroid Build Coastguard Worker /* The filter free functions */ 93*61046927SAndroid Build Coastguard Worker 94*61046927SAndroid Build Coastguard Worker void pp_celshade_free(struct pp_queue_t *, unsigned int); 95*61046927SAndroid Build Coastguard Worker void pp_nocolor_free(struct pp_queue_t *, unsigned int); 96*61046927SAndroid Build Coastguard Worker void pp_jimenezmlaa_free(struct pp_queue_t *, unsigned int); 97*61046927SAndroid Build Coastguard Worker 98*61046927SAndroid Build Coastguard Worker 99*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 100*61046927SAndroid Build Coastguard Worker } 101*61046927SAndroid Build Coastguard Worker #endif 102*61046927SAndroid Build Coastguard Worker 103*61046927SAndroid Build Coastguard Worker #endif 104