mirror of
https://github.com/X11Libre/xserver.git
synced 2026-03-24 03:44:06 +00:00
glamor: support GLES3 shaders
Some hardware (preferably mobile) working on GLES3 way faster than on desktop GL and supports more features. This commit will allow using GLES3 if glamor is running over GL ES, and version 3 is supported. Changes are the following: 1. Add compatibility layer for 120/GLES2 shaders with defines in and out 2. Switch attribute and varying to in and out in almost all shaders (aside gradient) 3. Add newGL-only frag_color variable, which defines as gl_FragColor on old pipelines 4. Switch all shaders to use frag_color. 5. Previous commit is reverted, because now we have more than one GL ES version, previous commit used to set version 100 for all ES shaders, which is not true for ES 3 Signed-off-by: Konstantin Pugin <ria.freelander@gmail.com>
This commit is contained in:
committed by
Emma Anholt
parent
8adff2891f
commit
ee107cd491
@@ -49,10 +49,10 @@ use_copyarea(DrawablePtr drawable, GCPtr gc, glamor_program *prog, void *arg)
|
||||
|
||||
static const glamor_facet glamor_facet_copyarea = {
|
||||
"copy_area",
|
||||
.vs_vars = "attribute vec2 primitive;\n",
|
||||
.vs_vars = "in vec2 primitive;\n",
|
||||
.vs_exec = (GLAMOR_POS(gl_Position, primitive.xy)
|
||||
" fill_pos = (fill_offset + primitive.xy) * fill_size_inv;\n"),
|
||||
.fs_exec = " gl_FragColor = texture2D(sampler, fill_pos);\n",
|
||||
.fs_exec = " frag_color = texture(sampler, fill_pos);\n",
|
||||
.locations = glamor_program_location_fillsamp | glamor_program_location_fillpos,
|
||||
.use = use_copyarea,
|
||||
};
|
||||
@@ -141,14 +141,14 @@ use_copyplane(DrawablePtr drawable, GCPtr gc, glamor_program *prog, void *arg)
|
||||
static const glamor_facet glamor_facet_copyplane = {
|
||||
"copy_plane",
|
||||
.version = 130,
|
||||
.vs_vars = "attribute vec2 primitive;\n",
|
||||
.vs_vars = "in vec2 primitive;\n",
|
||||
.vs_exec = (GLAMOR_POS(gl_Position, (primitive.xy))
|
||||
" fill_pos = (fill_offset + primitive.xy) * fill_size_inv;\n"),
|
||||
.fs_exec = (" uvec4 bits = uvec4(round(texture2D(sampler, fill_pos) * bitmul));\n"
|
||||
.fs_exec = (" uvec4 bits = uvec4(round(texture(sampler, fill_pos) * bitmul));\n"
|
||||
" if ((bits & bitplane) != uvec4(0,0,0,0))\n"
|
||||
" gl_FragColor = fg;\n"
|
||||
" frag_color = fg;\n"
|
||||
" else\n"
|
||||
" gl_FragColor = bg;\n"),
|
||||
" frag_color = bg;\n"),
|
||||
.locations = glamor_program_location_fillsamp|glamor_program_location_fillpos|glamor_program_location_fg|glamor_program_location_bg|glamor_program_location_bitplane,
|
||||
.use = use_copyplane,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user