summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/state_trackers/xorg/xorg_exa.c32
-rw-r--r--src/gallium/state_trackers/xorg/xorg_renderer.c16
2 files changed, 10 insertions, 38 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_exa.c b/src/gallium/state_trackers/xorg/xorg_exa.c
index cbada42e0ea..a22f15f64a7 100644
--- a/src/gallium/state_trackers/xorg/xorg_exa.c
+++ b/src/gallium/state_trackers/xorg/xorg_exa.c
@@ -48,7 +48,6 @@
#include "util/u_debug.h"
#define DEBUG_PRINT 0
-#define ROUND_UP_TEXTURES 1
/*
* Helper functions
@@ -274,18 +273,13 @@ ExaPrepareAccess(PixmapPtr pPix, int index)
PIPE_REFERENCED_FOR_WRITE)
exa->pipe->flush(exa->pipe, 0, NULL);
- assert(pPix->drawable.width <= priv->tex->width[0]);
- assert(pPix->drawable.height <= priv->tex->height[0]);
-
priv->map_transfer =
exa->scrn->get_tex_transfer(exa->scrn, priv->tex, 0, 0, 0,
#ifdef EXA_MIXED_PIXMAPS
PIPE_TRANSFER_MAP_DIRECTLY |
#endif
PIPE_TRANSFER_READ_WRITE,
- 0, 0,
- pPix->drawable.width,
- pPix->drawable.height );
+ 0, 0, priv->tex->width[0], priv->tex->height[0]);
if (!priv->map_transfer)
#ifdef EXA_MIXED_PIXMAPS
return FALSE;
@@ -826,22 +820,6 @@ xorg_exa_get_pixmap_handle(PixmapPtr pPixmap, unsigned *stride_out)
}
static Bool
-size_match( int width, int tex_width )
-{
-#if ROUND_UP_TEXTURES
- if (width > tex_width)
- return FALSE;
-
- if (width * 2 < tex_width)
- return FALSE;
-
- return TRUE;
-#else
- return width == tex_width;
-#endif
-}
-
-static Bool
ExaModifyPixmapHeader(PixmapPtr pPixmap, int width, int height,
int depth, int bitsPerPixel, int devKind,
pointer pPixData)
@@ -887,9 +865,9 @@ ExaModifyPixmapHeader(PixmapPtr pPixmap, int width, int height,
/* Deal with screen resize */
if ((exa->accel || priv->flags) &&
(!priv->tex ||
- !size_match(priv->tex->width[0], width) ||
- !size_match(priv->tex->height[0], height) ||
- priv->tex_flags != priv->flags)) {
+ (priv->tex->width[0] != width ||
+ priv->tex->height[0] != height ||
+ priv->tex_flags != priv->flags))) {
struct pipe_texture *texture = NULL;
struct pipe_texture template;
@@ -897,7 +875,7 @@ ExaModifyPixmapHeader(PixmapPtr pPixmap, int width, int height,
template.target = PIPE_TEXTURE_2D;
exa_get_pipe_format(depth, &template.format, &bitsPerPixel, &priv->picture_format);
pf_get_block(template.format, &template.block);
-#if ROUND_UP_TEXTURES
+#if 1
template.width[0] = util_next_power_of_two(width);
template.height[0] = util_next_power_of_two(height);
#else
diff --git a/src/gallium/state_trackers/xorg/xorg_renderer.c b/src/gallium/state_trackers/xorg/xorg_renderer.c
index 4f8985a75eb..9cb65b0aac9 100644
--- a/src/gallium/state_trackers/xorg/xorg_renderer.c
+++ b/src/gallium/state_trackers/xorg/xorg_renderer.c
@@ -313,25 +313,21 @@ setup_vertex_data_yuv(struct xorg_renderer *r,
* these concepts are linked.
*/
void renderer_bind_destination(struct xorg_renderer *r,
- struct pipe_surface *surface,
- int width,
- int height )
+ struct pipe_surface *surface )
{
struct pipe_framebuffer_state fb;
struct pipe_viewport_state viewport;
+ int width = surface->width;
+ int height = surface->height;
- /* Framebuffer uses actual surface width/height
- */
memset(&fb, 0, sizeof fb);
- fb.width = surface->width;
- fb.height = surface->height;
+ fb.width = width;
+ fb.height = height;
fb.nr_cbufs = 1;
fb.cbufs[0] = surface;
fb.zsbuf = 0;
- /* Viewport sets us up to just touch the bit we're interested in:
- */
viewport.scale[0] = width / 2.f;
viewport.scale[1] = height / 2.f;
viewport.scale[2] = 1.0;
@@ -341,8 +337,6 @@ void renderer_bind_destination(struct xorg_renderer *r,
viewport.translate[2] = 0.0;
viewport.translate[3] = 0.0;
- /* Constant buffer set up to match viewport dimensions:
- */
if (r->fb_width != width ||
r->fb_height != height)
{