mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 02:28:10 +02:00
softpipe: pass surface format to get/put_tile functions
When we read/write image tiles we need to use the format specified in the pipe_surface, not the pipe_transfer format (which comes from the underlying texture/resource format). This comes up when rendering to sRGB surfaces (via OpenGL render to texture). Ignoring the new GL_ARB/EXT_framebuffer_sRGB extension for now, when we render to a sRGB surface we need to treat it like a regular, linear colorspace RGB surface. Before, when we read/wrote tiles to sRGB surfaces we were inadvertantly doing the color space conversion.
This commit is contained in:
parent
e75844b4e0
commit
4c9ad084c1
1 changed files with 12 additions and 10 deletions
|
|
@ -357,11 +357,12 @@ sp_flush_tile(struct softpipe_tile_cache* tc, unsigned pos)
|
|||
tc->entries[pos]->data.depth32, 0/*STRIDE*/);
|
||||
}
|
||||
else {
|
||||
pipe_put_tile_rgba(tc->pipe, tc->transfer,
|
||||
tc->tile_addrs[pos].bits.x * TILE_SIZE,
|
||||
tc->tile_addrs[pos].bits.y * TILE_SIZE,
|
||||
TILE_SIZE, TILE_SIZE,
|
||||
(float *) tc->entries[pos]->data.color);
|
||||
pipe_put_tile_rgba_format(tc->pipe, tc->transfer,
|
||||
tc->tile_addrs[pos].bits.x * TILE_SIZE,
|
||||
tc->tile_addrs[pos].bits.y * TILE_SIZE,
|
||||
TILE_SIZE, TILE_SIZE,
|
||||
tc->surface->format,
|
||||
(float *) tc->entries[pos]->data.color);
|
||||
}
|
||||
tc->tile_addrs[pos].bits.invalid = 1; /* mark as empty */
|
||||
}
|
||||
|
|
@ -468,11 +469,12 @@ sp_find_cached_tile(struct softpipe_tile_cache *tc,
|
|||
tile->data.depth32, 0/*STRIDE*/);
|
||||
}
|
||||
else {
|
||||
pipe_put_tile_rgba(tc->pipe, pt,
|
||||
tc->tile_addrs[pos].bits.x * TILE_SIZE,
|
||||
tc->tile_addrs[pos].bits.y * TILE_SIZE,
|
||||
TILE_SIZE, TILE_SIZE,
|
||||
(float *) tile->data.color);
|
||||
pipe_put_tile_rgba_format(tc->pipe, pt,
|
||||
tc->tile_addrs[pos].bits.x * TILE_SIZE,
|
||||
tc->tile_addrs[pos].bits.y * TILE_SIZE,
|
||||
TILE_SIZE, TILE_SIZE,
|
||||
tc->surface->format,
|
||||
(float *) tile->data.color);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue