xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

glamor_transform.h (3826B)


      1 /*
      2  * Copyright © 2014 Keith Packard
      3  *
      4  * Permission to use, copy, modify, distribute, and sell this software and its
      5  * documentation for any purpose is hereby granted without fee, provided that
      6  * the above copyright notice appear in all copies and that both that copyright
      7  * notice and this permission notice appear in supporting documentation, and
      8  * that the name of the copyright holders not be used in advertising or
      9  * publicity pertaining to distribution of the software without specific,
     10  * written prior permission.  The copyright holders make no representations
     11  * about the suitability of this software for any purpose.  It is provided "as
     12  * is" without express or implied warranty.
     13  *
     14  * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
     15  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
     16  * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
     17  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
     18  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
     19  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
     20  * OF THIS SOFTWARE.
     21  */
     22 
     23 #ifndef _GLAMOR_TRANSFORM_H_
     24 #define _GLAMOR_TRANSFORM_H_
     25 
     26 Bool
     27 glamor_set_destination_drawable(DrawablePtr     drawable,
     28                                 int             box_index,
     29                                 Bool            do_drawable_translate,
     30                                 Bool            center_offset,
     31                                 GLint           matrix_uniform_location,
     32                                 int             *p_off_x,
     33                                 int             *p_off_y);
     34 
     35 void
     36 glamor_set_color_depth(ScreenPtr      pScreen,
     37                        int            depth,
     38                        CARD32         pixel,
     39                        GLint          uniform);
     40 
     41 static inline void
     42 glamor_set_color(PixmapPtr      pixmap,
     43                  CARD32         pixel,
     44                  GLint          uniform)
     45 {
     46     glamor_set_color_depth(pixmap->drawable.pScreen,
     47                            pixmap->drawable.depth, pixel, uniform);
     48 }
     49 
     50 Bool
     51 glamor_set_texture_pixmap(PixmapPtr     texture,
     52                           Bool          destination_red);
     53 
     54 Bool
     55 glamor_set_texture(PixmapPtr    texture,
     56                    Bool         destination_red,
     57                    int          off_x,
     58                    int          off_y,
     59                    GLint        offset_uniform,
     60                    GLint        size_uniform);
     61 
     62 Bool
     63 glamor_set_solid(PixmapPtr      pixmap,
     64                  GCPtr          gc,
     65                  Bool           use_alu,
     66                  GLint          uniform);
     67 
     68 Bool
     69 glamor_set_tiled(PixmapPtr      pixmap,
     70                  GCPtr          gc,
     71                  GLint          offset_uniform,
     72                  GLint          size_uniform);
     73 
     74 Bool
     75 glamor_set_stippled(PixmapPtr      pixmap,
     76                     GCPtr          gc,
     77                     GLint          fg_uniform,
     78                     GLint          offset_uniform,
     79                     GLint          size_uniform);
     80 
     81 /*
     82  * Vertex shader bits that transform X coordinates to pixmap
     83  * coordinates using the matrix computed above
     84  */
     85 
     86 #define GLAMOR_DECLARE_MATRIX   "uniform vec4 v_matrix;\n"
     87 #define GLAMOR_X_POS(x) #x " *v_matrix.x + v_matrix.y"
     88 #define GLAMOR_Y_POS(y) #y " *v_matrix.z + v_matrix.w"
     89 #if 0
     90 #define GLAMOR_POS(dst,src) \
     91     "       " #dst ".x = " #src ".x * v_matrix.x + v_matrix.y;\n" \
     92     "       " #dst ".y = " #src ".y * v_matrix.z + v_matrix.w;\n" \
     93     "       " #dst ".z = 0.0;\n" \
     94     "       " #dst ".w = 1.0;\n"
     95 #endif
     96 #define GLAMOR_POS(dst,src) \
     97     "       " #dst ".xy = " #src ".xy * v_matrix.xz + v_matrix.yw;\n" \
     98     "       " #dst ".zw = vec2(0.0,1.0);\n"
     99 
    100 #endif /* _GLAMOR_TRANSFORM_H_ */