Add --enable-glamor to configure flags

This commit is contained in:
Hans de Goede 2014-04-23 18:00:37 +02:00
parent f967779363
commit 74c3cbe0f7
4 changed files with 244 additions and 2 deletions

49
glamor_font.h Normal file
View File

@ -0,0 +1,49 @@
/*
* Copyright © 2014 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting documentation, and
* that the name of the copyright holders not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. The copyright holders make no representations
* about the suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _GLAMOR_FONT_H_
#define _GLAMOR_FONT_H_
typedef struct {
Bool realized;
CharInfoPtr default_char;
CARD8 default_row;
CARD8 default_col;
GLuint texture_id;
CARD16 glyph_width_bytes;
CARD16 glyph_width_pixels;
CARD16 glyph_height;
} glamor_font_t;
glamor_font_t *
glamor_font_get(ScreenPtr screen, FontPtr font);
Bool
glamor_font_init(ScreenPtr screen);
void
glamor_fini_glyph_shader(ScreenPtr screen);
#endif /* _GLAMOR_FONT_H_ */

94
glamor_program.h Normal file
View File

@ -0,0 +1,94 @@
/*
* Copyright © 2014 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting documentation, and
* that the name of the copyright holders not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. The copyright holders make no representations
* about the suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _GLAMOR_PROGRAM_H_
#define _GLAMOR_PROGRAM_H_
typedef enum {
glamor_program_location_none = 0,
glamor_program_location_fg = 1,
glamor_program_location_bg = 2,
glamor_program_location_fill = 4,
glamor_program_location_font = 8,
} glamor_program_location;
typedef enum {
glamor_program_flag_none = 0,
} glamor_program_flag;
typedef struct _glamor_program glamor_program;
typedef Bool (*glamor_use) (PixmapPtr pixmap, GCPtr gc, glamor_program *prog, void *arg);
typedef struct {
const char *name;
const int version;
const char *vs_vars;
const char *vs_exec;
const char *fs_vars;
const char *fs_exec;
const glamor_program_location locations;
const glamor_program_flag flags;
const char *source_name;
glamor_use use;
} glamor_facet;
struct _glamor_program {
GLint prog;
GLint failed;
GLint matrix_uniform;
GLint fg_uniform;
GLint bg_uniform;
GLint fill_size_uniform;
GLint fill_offset_uniform;
GLint font_uniform;
glamor_program_location locations;
glamor_program_flag flags;
glamor_use prim_use;
glamor_use fill_use;
};
typedef struct {
glamor_program progs[4];
} glamor_program_fill;
extern const glamor_facet glamor_fill_solid;
Bool
glamor_build_program(ScreenPtr screen,
glamor_program *prog,
const glamor_facet *prim,
const glamor_facet *fill);
Bool
glamor_use_program(PixmapPtr pixmap,
GCPtr gc,
glamor_program *prog,
void *arg);
glamor_program *
glamor_use_program_fill(PixmapPtr pixmap,
GCPtr gc,
glamor_program_fill *program_fill,
const glamor_facet *prim);
#endif /* _GLAMOR_PROGRAM_H_ */

87
glamor_transform.h Normal file
View File

@ -0,0 +1,87 @@
/*
* Copyright © 2014 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting documentation, and
* that the name of the copyright holders not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. The copyright holders make no representations
* about the suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _GLAMOR_TRANSFORM_H_
#define _GLAMOR_TRANSFORM_H_
void
glamor_set_destination_drawable(DrawablePtr drawable,
int box_x,
int box_y,
Bool do_drawable_translate,
Bool center_offset,
GLint matrix_uniform_location,
int *p_off_x,
int *p_off_y);
void
glamor_set_color(PixmapPtr pixmap,
CARD32 pixel,
GLint uniform);
Bool
glamor_set_texture(PixmapPtr pixmap,
PixmapPtr texture,
int off_x,
int off_y,
GLint offset_uniform,
GLint size_uniform);
Bool
glamor_set_solid(PixmapPtr pixmap,
GCPtr gc,
Bool use_alu,
GLint uniform);
Bool
glamor_set_tiled(PixmapPtr pixmap,
GCPtr gc,
GLint offset_uniform,
GLint size_uniform);
Bool
glamor_set_stippled(PixmapPtr pixmap,
GCPtr gc,
GLint fg_uniform,
GLint offset_uniform,
GLint size_uniform);
/*
* Vertex shader bits that transform X coordinates to pixmap
* coordinates using the matrix computed above
*/
#define GLAMOR_DECLARE_MATRIX "uniform vec4 v_matrix;\n"
#define GLAMOR_X_POS(x) #x " *v_matrix.x + v_matrix.y"
#define GLAMOR_Y_POS(y) #y " *v_matrix.z + v_matrix.w"
#if 0
#define GLAMOR_POS(dst,src) \
" " #dst ".x = " #src ".x * v_matrix.x + v_matrix.y;\n" \
" " #dst ".y = " #src ".y * v_matrix.z + v_matrix.w;\n" \
" " #dst ".z = 0.0;\n" \
" " #dst ".w = 1.0;\n"
#endif
#define GLAMOR_POS(dst,src) \
" " #dst ".xy = " #src ".xy * v_matrix.xz + v_matrix.yw;\n" \
" " #dst ".zw = vec2(0.0,1.0);\n"
#endif /* _GLAMOR_TRANSFORM_H_ */

View File

@ -42,7 +42,7 @@
Summary: X.Org X11 X server
Name: xorg-x11-server
Version: 1.15.99.902
Release: 1%{?gitdate:.%{gitdate}}%{dist}
Release: 2%{?gitdate:.%{gitdate}}%{dist}
URL: http://www.x.org
License: MIT
Group: User Interface/X
@ -77,6 +77,9 @@ Source40: driver-abi-rebuild.sh
# workaround for make dist bug in 1.15.99.902, remove once fixed
Source50: Xorg.wrap.man
Source51: Xwrapper.config.man
Source52: glamor_font.h
Source53: glamor_program.h
Source54: glamor_transform.h
# Trivial things to never merge upstream ever:
# This really could be done prettier.
@ -204,6 +207,8 @@ Provides: xserver-abi(videodrv-%{git_videodrv_major}) = %{git_videodrv_minor}
Provides: xserver-abi(xinput-%{git_xinput_major}) = %{git_xinput_minor}
Provides: xserver-abi(extension-%{git_extension_major}) = %{git_extension_minor}
%endif
Obsoletes: xorg-x11-glamor < %{version}-%{release}
Provides: xorg-x11-glamor = %{version}-%{release}
%if 0%{?fedora} > 17
# Dropped from F18, use a video card instead
@ -310,6 +315,8 @@ Requires: xorg-x11-util-macros
Requires: xorg-x11-proto-devel
Requires: pkgconfig pixman-devel libpciaccess-devel
Provides: xorg-x11-server-static
Obsoletes: xorg-x11-glamor-devel < %{version}-%{release}
Provides: xorg-x11-glamor-devel = %{version}-%{release}
%description devel
The SDK package provides the developmental files which are necessary for
@ -353,6 +360,7 @@ git commit -a -q -m "%{version} baseline."
# workaround for make dist bug in 1.15.99.902, remove once fixed
cp %{SOURCE50} %{SOURCE51} hw/xfree86/man
cp %{SOURCE52} %{SOURCE53} %{SOURCE54} glamor
# Apply all the patches.
git am -p1 %{patches} < /dev/null
@ -385,7 +393,7 @@ test `getminor extension` == %{extension_minor}
%global default_font_path "catalogue:/etc/X11/fontpath.d,built-ins"
%if %{with_hw_servers}
%global dri_flags --with-dri-driver-path=%{drimoduledir} --enable-dri2 %{?!rhel:--enable-dri3} --enable-suid-wrapper
%global dri_flags --with-dri-driver-path=%{drimoduledir} --enable-dri2 %{?!rhel:--enable-dri3} --enable-suid-wrapper --enable-glamor
%else
%global dri_flags --disable-dri
%endif
@ -529,6 +537,7 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete
%{_libdir}/xorg/modules/libfbdevhw.so
%{_libdir}/xorg/modules/libexa.so
%{_libdir}/xorg/modules/libfb.so
%{_libdir}/xorg/modules/libglamoregl.so
%{_libdir}/xorg/modules/libshadow.so
%{_libdir}/xorg/modules/libshadowfb.so
%{_libdir}/xorg/modules/libvgahw.so
@ -603,6 +612,9 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete
%changelog
* Wed Apr 23 2014 Hans de Goede <hdegoede@redhat.com> - 1.15.99.902-2
- Add --enable-glamor to configure flags
* Thu Apr 17 2014 Hans de Goede <hdegoede@redhat.com> - 1.15.99.902-1
- Update to 1.15.99.902
- Drop the Xwayland as extension patch-set