1d7db6343dd330cb8eb70e65190adb24dd350faccChristian König/************************************************************************** 2d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * 3d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * Copyright 2012 Christian König. 4d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * All Rights Reserved. 5d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * 6d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * Permission is hereby granted, free of charge, to any person obtaining a 7d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * copy of this software and associated documentation files (the 8d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * "Software"), to deal in the Software without restriction, including 9d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * without limitation the rights to use, copy, modify, merge, publish, 10d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * distribute, sub license, and/or sell copies of the Software, and to 11d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * permit persons to whom the Software is furnished to do so, subject to 12d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * the following conditions: 13d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * 14d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * The above copyright notice and this permission notice (including the 15d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * next paragraph) shall be included in all copies or substantial portions 16d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * of the Software. 17d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * 18d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25d7db6343dd330cb8eb70e65190adb24dd350faccChristian König * 26d7db6343dd330cb8eb70e65190adb24dd350faccChristian König **************************************************************************/ 27d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 28d7db6343dd330cb8eb70e65190adb24dd350faccChristian König/* implementation of all matrix based filters like 29d7db6343dd330cb8eb70e65190adb24dd350faccChristian König gaussian, mean, laplacian, emboss, sharpness etc.. */ 30d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 31d7db6343dd330cb8eb70e65190adb24dd350faccChristian König#ifndef vl_matrix_filter_h 32d7db6343dd330cb8eb70e65190adb24dd350faccChristian König#define vl_matrix_filter_h 33d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 34d7db6343dd330cb8eb70e65190adb24dd350faccChristian König#include "pipe/p_state.h" 35d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 36d7db6343dd330cb8eb70e65190adb24dd350faccChristian Königstruct vl_matrix_filter 37d7db6343dd330cb8eb70e65190adb24dd350faccChristian König{ 38d7db6343dd330cb8eb70e65190adb24dd350faccChristian König struct pipe_context *pipe; 39d7db6343dd330cb8eb70e65190adb24dd350faccChristian König struct pipe_vertex_buffer quad; 40d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 41d7db6343dd330cb8eb70e65190adb24dd350faccChristian König void *rs_state; 42d7db6343dd330cb8eb70e65190adb24dd350faccChristian König void *blend; 43d7db6343dd330cb8eb70e65190adb24dd350faccChristian König void *sampler; 44d7db6343dd330cb8eb70e65190adb24dd350faccChristian König void *ves; 45d7db6343dd330cb8eb70e65190adb24dd350faccChristian König void *vs, *fs; 46d7db6343dd330cb8eb70e65190adb24dd350faccChristian König}; 47d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 48d7db6343dd330cb8eb70e65190adb24dd350faccChristian Königbool 49d7db6343dd330cb8eb70e65190adb24dd350faccChristian Königvl_matrix_filter_init(struct vl_matrix_filter *filter, struct pipe_context *pipe, 50d7db6343dd330cb8eb70e65190adb24dd350faccChristian König unsigned video_width, unsigned video_height, 51d7db6343dd330cb8eb70e65190adb24dd350faccChristian König unsigned matrix_width, unsigned matrix_height, 52d7db6343dd330cb8eb70e65190adb24dd350faccChristian König const float *matrix_values); 53d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 54d7db6343dd330cb8eb70e65190adb24dd350faccChristian Königvoid 55d7db6343dd330cb8eb70e65190adb24dd350faccChristian Königvl_matrix_filter_cleanup(struct vl_matrix_filter *filter); 56d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 57d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 58d7db6343dd330cb8eb70e65190adb24dd350faccChristian Königvoid 59d7db6343dd330cb8eb70e65190adb24dd350faccChristian Königvl_matrix_filter_render(struct vl_matrix_filter *filter, 60d7db6343dd330cb8eb70e65190adb24dd350faccChristian König struct pipe_sampler_view *src, 61d7db6343dd330cb8eb70e65190adb24dd350faccChristian König struct pipe_surface *dst); 62d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 63d7db6343dd330cb8eb70e65190adb24dd350faccChristian König 64d7db6343dd330cb8eb70e65190adb24dd350faccChristian König#endif /* vl_matrix_filter_h */ 65