1872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh/**************************************************************************
2872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh *
3872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * Copyright 2016 Nayan Deshmukh.
4872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * All Rights Reserved.
5872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh *
6872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * Permission is hereby granted, free of charge, to any person obtaining a
7872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * copy of this software and associated documentation files (the
8872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * "Software"), to deal in the Software without restriction, including
9872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * without limitation the rights to use, copy, modify, merge, publish,
10872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * distribute, sub license, and/or sell copies of the Software, and to
11872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * permit persons to whom the Software is furnished to do so, subject to
12872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * the following conditions:
13872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh *
14872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * The above copyright notice and this permission notice (including the
15872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * next paragraph) shall be included in all copies or substantial portions
16872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * of the Software.
17872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh *
18872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
22872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh *
26872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh **************************************************************************/
27872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
28872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh/* implementation of bicubic interpolation filters */
29872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
30872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh#ifndef vl_bicubic_filter_h
31872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh#define vl_bicubic_filter_h
32872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
33872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh#include "pipe/p_state.h"
34872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
35872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukhstruct vl_bicubic_filter
36872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh{
37872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh   struct pipe_context *pipe;
38872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh   struct pipe_vertex_buffer quad;
39872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
40872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh   void *rs_state;
41872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh   void *blend;
42872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh   void *sampler;
43872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh   void *ves;
44872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh   void *vs, *fs;
45872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh};
46872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
47872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukhbool
48872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukhvl_bicubic_filter_init(struct vl_bicubic_filter *filter, struct pipe_context *pipe,
49872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh                      unsigned width, unsigned height);
50872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
51872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukhvoid
52872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukhvl_bicubic_filter_cleanup(struct vl_bicubic_filter *filter);
53872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
54872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
55872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukhvoid
56872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukhvl_bicubic_filter_render(struct vl_bicubic_filter *filter,
57872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh                        struct pipe_sampler_view *src,
58872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh                        struct pipe_surface *dst,
59872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh                        struct u_rect *dst_area,
60872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh                        struct u_rect *dst_clip);
61872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
62872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh
63872dd9ad154b0ef9c91486640f73232a60074292Nayan Deshmukh#endif /* vl_bicubic_filter_h */
64