renderer.h revision 54cb382ea55610688c97465ef048a4990b8fd4d7
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**************************************************************************
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright 2009 VMware, Inc.  All Rights Reserved.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright 2010 LunarG, Inc.  All Rights Reserved.
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Permission is hereby granted, free of charge, to any person obtaining a
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * copy of this software and associated documentation files (the
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * "Software"), to deal in the Software without restriction, including
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * without limitation the rights to use, copy, modify, merge, publish,
10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) * distribute, sub license, and/or sell copies of the Software, and to
11d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) * permit persons to whom the Software is furnished to do so, subject to
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the following conditions:
13d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) *
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The above copyright notice and this permission notice (including the
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * next paragraph) shall be included in all copies or substantial portions
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of the Software.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) **************************************************************************/
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#ifndef RENDERER_H
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define RENDERER_H
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "VG/openvg.h"
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct renderer;
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)struct vg_context;
361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)struct pipe_resource;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct pipe_sampler_view;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct pipe_surface;
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)struct renderer *renderer_create(struct vg_context *owner);
41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void renderer_destroy(struct renderer *);
42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)VGboolean renderer_copy_begin(struct renderer *renderer,
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              struct pipe_surface *dst,
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                              VGboolean y0_top,
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              struct pipe_sampler_view *src);
47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void renderer_copy(struct renderer *renderer,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   VGint x, VGint y, VGint w, VGint h,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   VGint sx, VGint sy, VGint sw, VGint sh);
51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void renderer_copy_end(struct renderer *renderer);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)VGboolean renderer_drawtex_begin(struct renderer *renderer,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 struct pipe_sampler_view *src);
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void renderer_drawtex(struct renderer *renderer,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      VGint x, VGint y, VGint w, VGint h,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      VGint sx, VGint sy, VGint sw, VGint sh);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void renderer_drawtex_end(struct renderer *renderer);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)VGboolean renderer_scissor_begin(struct renderer *renderer,
64a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                                 VGboolean restore_dsa);
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void renderer_scissor(struct renderer *renderer,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      VGint x, VGint y, VGint width, VGint height);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void renderer_scissor_end(struct renderer *renderer);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void renderer_draw_quad(struct renderer *,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        VGfloat x1, VGfloat y1,
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        VGfloat x2, VGfloat y2,
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        VGfloat depth);
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void renderer_draw_texture(struct renderer *,
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                           struct pipe_resource *texture,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat x1offset, VGfloat y1offset,
784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           VGfloat x2offset, VGfloat y2offset,
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat x1, VGfloat y1,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat x2, VGfloat y2);
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void renderer_texture_quad(struct renderer *,
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           struct pipe_resource *texture,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat x1offset, VGfloat y1offset,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat x2offset, VGfloat y2offset,
8558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                           VGfloat x1, VGfloat y1,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat x2, VGfloat y2,
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat x3, VGfloat y3,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat x4, VGfloat y4);
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void renderer_copy_texture(struct renderer *r,
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           struct pipe_sampler_view *src,
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat sx1, VGfloat sy1,
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                           VGfloat sx2, VGfloat sy2,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           struct pipe_resource *dst,
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           VGfloat dx1, VGfloat dy1,
95a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                           VGfloat dx2, VGfloat dy2);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void renderer_copy_surface(struct renderer *r,
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           struct pipe_surface *src,
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           int sx1, int sy1,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           int sx2, int sy2,
100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                           struct pipe_surface *dst,
1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           int dx1, int dy1,
1021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                           int dx2, int dy2,
103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                           float z, unsigned filter);
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)