mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
gallium: added fb_width/height fields to softpipe context
These are convenience fields. Otherwise, we have to check cbuf[0] or zsbuf in various places.
This commit is contained in:
parent
ba31cf6855
commit
122ed506f4
5 changed files with 18 additions and 13 deletions
|
|
@ -84,6 +84,8 @@ struct softpipe_context {
|
|||
unsigned num_samplers;
|
||||
unsigned num_textures;
|
||||
|
||||
uint fb_width, fb_height;
|
||||
|
||||
/* Counter for occlusion queries. Note this supports overlapping
|
||||
* queries.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -485,7 +485,7 @@ setup_fragcoord_coeff(struct setup_stage *setup, uint slot)
|
|||
/*Y*/
|
||||
if (setup->softpipe->rasterizer->origin_lower_left) {
|
||||
/* y=0=bottom */
|
||||
const int winHeight = setup->softpipe->framebuffer.cbufs[0]->height;
|
||||
const int winHeight = setup->softpipe->fb_height;
|
||||
setup->coef[slot].a0[1] = (float) (winHeight - 1);
|
||||
setup->coef[slot].dady[1] = -1.0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ stipple_quad(struct quad_stage *qs, struct quad_header *quad)
|
|||
int y0, y1;
|
||||
uint stipple0, stipple1;
|
||||
if (softpipe->rasterizer->origin_lower_left) {
|
||||
y0 = softpipe->framebuffer.cbufs[0]->height - 1 - quad->y0;
|
||||
y0 = softpipe->fb_height - 1 - quad->y0;
|
||||
y1 = y0 - 1;
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -171,17 +171,8 @@ softpipe_get_vbuf_vertex_info(struct softpipe_context *softpipe)
|
|||
static void
|
||||
compute_cliprect(struct softpipe_context *sp)
|
||||
{
|
||||
unsigned surfWidth, surfHeight;
|
||||
|
||||
if (sp->framebuffer.num_cbufs > 0) {
|
||||
surfWidth = sp->framebuffer.cbufs[0]->width;
|
||||
surfHeight = sp->framebuffer.cbufs[0]->height;
|
||||
}
|
||||
else {
|
||||
/* no surface? */
|
||||
surfWidth = sp->scissor.maxx;
|
||||
surfHeight = sp->scissor.maxy;
|
||||
}
|
||||
uint surfWidth = sp->fb_width;
|
||||
uint surfHeight = sp->fb_height;
|
||||
|
||||
if (sp->rasterizer->scissor) {
|
||||
/* clip to scissor rect */
|
||||
|
|
|
|||
|
|
@ -48,6 +48,9 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
|
|||
struct softpipe_context *sp = softpipe_context(pipe);
|
||||
uint i;
|
||||
|
||||
/* updated below */
|
||||
sp->fb_width = sp->fb_height = 0;
|
||||
|
||||
for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) {
|
||||
/* check if changing cbuf */
|
||||
if (sp->framebuffer.cbufs[i] != fb->cbufs[i]) {
|
||||
|
|
@ -60,6 +63,10 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
|
|||
/* update cache */
|
||||
sp_tile_cache_set_surface(sp->cbuf_cache[i], fb->cbufs[i]);
|
||||
}
|
||||
if (fb->cbufs[i]) {
|
||||
sp->fb_width = fb->cbufs[i]->width;
|
||||
sp->fb_height = fb->cbufs[i]->height;
|
||||
}
|
||||
}
|
||||
|
||||
sp->framebuffer.num_cbufs = fb->num_cbufs;
|
||||
|
|
@ -74,6 +81,11 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
|
|||
|
||||
/* update cache */
|
||||
sp_tile_cache_set_surface(sp->zsbuf_cache, fb->zsbuf);
|
||||
|
||||
if (!sp->fb_width && fb->zsbuf) {
|
||||
sp->fb_width = fb->zsbuf->width;
|
||||
sp->fb_height = fb->zsbuf->height;
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue