summaryrefslogtreecommitdiff
path: root/glamor
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2014-07-17 18:00:44 -0700
committerEric Anholt <eric@anholt.net>2014-07-17 18:07:26 -0700
commit6d4954884908ea9894fcfe9836db1ba7bb45be61 (patch)
treea32c5006c554341a4d61531292b61fd5b3401cef /glamor
parent9ddcb20f47b5e199989c8990512b0bca1354af86 (diff)
parent55f5bfb578e934319d1308cbb56c900c5ac7cfa7 (diff)
Merge remote-tracking branch 'origin/master' into glamor-next
I've done this merge manually to resolve the minor conflict in glamor.c. Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'glamor')
-rw-r--r--glamor/glamor.c6
-rw-r--r--glamor/glamor_fbo.c1
-rw-r--r--glamor/glamor_font.c1
-rw-r--r--glamor/glamor_image.c3
-rw-r--r--glamor/glamor_pixmap.c1
-rw-r--r--glamor/glamor_render.c16
-rw-r--r--glamor/glamor_vbo.c2
7 files changed, 19 insertions, 11 deletions
diff --git a/glamor/glamor.c b/glamor/glamor.c
index a82c46fdf..d7b8b09a9 100644
--- a/glamor/glamor.c
+++ b/glamor/glamor.c
@@ -310,6 +310,7 @@ glamor_init(ScreenPtr screen, unsigned int flags)
{
glamor_screen_private *glamor_priv;
int gl_version;
+ int max_viewport_size[2];
#ifdef RENDER
PictureScreenPtr ps = GetPictureScreenIfSet(screen);
@@ -409,7 +410,12 @@ glamor_init(ScreenPtr screen, unsigned int flags)
epoxy_has_gl_extension("GL_ARB_buffer_storage");
glamor_priv->has_nv_texture_barrier =
epoxy_has_gl_extension("GL_NV_texture_barrier");
+
glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &glamor_priv->max_fbo_size);
+ glGetIntegerv(GL_MAX_TEXTURE_SIZE, &glamor_priv->max_fbo_size);
+ glGetIntegerv(GL_MAX_VIEWPORT_DIMS, max_viewport_size);
+ glamor_priv->max_fbo_size = MIN(glamor_priv->max_fbo_size, max_viewport_size[0]);
+ glamor_priv->max_fbo_size = MIN(glamor_priv->max_fbo_size, max_viewport_size[1]);
#ifdef MAX_FBO_SIZE
glamor_priv->max_fbo_size = MAX_FBO_SIZE;
#endif
diff --git a/glamor/glamor_fbo.c b/glamor/glamor_fbo.c
index 552168381..090dfd8e7 100644
--- a/glamor/glamor_fbo.c
+++ b/glamor/glamor_fbo.c
@@ -347,6 +347,7 @@ _glamor_create_tex(glamor_screen_private *glamor_priv,
glamor_make_current(glamor_priv);
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0,
diff --git a/glamor/glamor_font.c b/glamor/glamor_font.c
index f747d59a1..57c607dc2 100644
--- a/glamor/glamor_font.c
+++ b/glamor/glamor_font.c
@@ -95,6 +95,7 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, glamor_font->texture_id);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
diff --git a/glamor/glamor_image.c b/glamor/glamor_image.c
index 4791d089f..b38b41212 100644
--- a/glamor/glamor_image.c
+++ b/glamor/glamor_image.c
@@ -88,8 +88,7 @@ static void
glamor_put_image_bail(DrawablePtr drawable, GCPtr gc, int depth, int x, int y,
int w, int h, int leftPad, int format, char *bits)
{
- if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RW) &&
- glamor_prepare_access_gc(gc))
+ if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RW))
fbPutImage(drawable, gc, depth, x, y, w, h, leftPad, format, bits);
glamor_finish_access(drawable);
}
diff --git a/glamor/glamor_pixmap.c b/glamor/glamor_pixmap.c
index 725fa5e7f..ccb49f3c6 100644
--- a/glamor/glamor_pixmap.c
+++ b/glamor/glamor_pixmap.c
@@ -717,6 +717,7 @@ __glamor_upload_pixmap_to_texture(PixmapPtr pixmap, unsigned int *tex,
}
glBindTexture(GL_TEXTURE_2D, *tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c
index b212fe1fc..2386f2e2e 100644
--- a/glamor/glamor_render.c
+++ b/glamor/glamor_render.c
@@ -1446,8 +1446,8 @@ glamor_composite_clipped_region(CARD8 op,
|| source_pixmap->drawable.height != height)))) {
temp_src =
glamor_convert_gradient_picture(screen, source,
- x_source,
- y_source,
+ extent->x1 + x_source - x_dest - dest->pDrawable->x,
+ extent->y1 + y_source - y_dest - dest->pDrawable->y,
width, height);
if (!temp_src) {
temp_src = source;
@@ -1455,8 +1455,8 @@ glamor_composite_clipped_region(CARD8 op,
}
temp_src_priv =
glamor_get_pixmap_private((PixmapPtr) (temp_src->pDrawable));
- x_temp_src = 0;
- y_temp_src = 0;
+ x_temp_src = -extent->x1 + x_dest + dest->pDrawable->x;
+ y_temp_src = -extent->y1 + y_dest + dest->pDrawable->y;
}
if (mask
@@ -1470,8 +1470,8 @@ glamor_composite_clipped_region(CARD8 op,
* to do reduce one convertion. */
temp_mask =
glamor_convert_gradient_picture(screen, mask,
- x_mask,
- y_mask,
+ extent->x1 + x_mask - x_dest - dest->pDrawable->x,
+ extent->y1 + y_mask - y_dest - dest->pDrawable->y,
width, height);
if (!temp_mask) {
temp_mask = mask;
@@ -1479,8 +1479,8 @@ glamor_composite_clipped_region(CARD8 op,
}
temp_mask_priv =
glamor_get_pixmap_private((PixmapPtr) (temp_mask->pDrawable));
- x_temp_mask = 0;
- y_temp_mask = 0;
+ x_temp_mask = -extent->x1 + x_dest + dest->pDrawable->x;
+ y_temp_mask = -extent->y1 + y_dest + dest->pDrawable->y;
}
/* Do two-pass PictOpOver componentAlpha, until we enable
* dual source color blending.
diff --git a/glamor/glamor_vbo.c b/glamor/glamor_vbo.c
index c6785594b..e90610102 100644
--- a/glamor/glamor_vbo.c
+++ b/glamor/glamor_vbo.c
@@ -119,7 +119,7 @@ glamor_get_vbo_space(ScreenPtr screen, unsigned size, char **vbo_offset)
if (glamor_priv->vbo_size < size) {
glamor_priv->vbo_size = MAX(GLAMOR_VBO_SIZE, size);
free(glamor_priv->vb);
- glamor_priv->vb = XNFalloc(size);
+ glamor_priv->vb = XNFalloc(glamor_priv->vbo_size);
}
*vbo_offset = NULL;
/* We point to the start of glamor_priv->vb every time, and