gallium: add target-helpers/wrap_screen.c to C_SOURCES
[mesa/mesa-lb.git] / src / gallium / drivers / i965 / brw_pipe_fb.c
bloba90b7c73f69eed44bb3190b719230eb807f72cd1
1 #include "util/u_math.h"
2 #include "pipe/p_context.h"
3 #include "pipe/p_state.h"
4 #include "util/u_inlines.h"
6 #include "brw_context.h"
8 /**
9 * called from intelDrawBuffer()
11 static void brw_set_framebuffer_state( struct pipe_context *pipe,
12 const struct pipe_framebuffer_state *fb )
14 struct brw_context *brw = brw_context(pipe);
15 unsigned i;
17 /* Dimensions:
19 if (brw->curr.fb.width != fb->width ||
20 brw->curr.fb.height != fb->height) {
21 brw->curr.fb.width = fb->width;
22 brw->curr.fb.height = fb->height;
23 brw->state.dirty.mesa |= PIPE_NEW_FRAMEBUFFER_DIMENSIONS;
26 /* Z/Stencil
28 if (brw->curr.fb.zsbuf != fb->zsbuf) {
29 pipe_surface_reference(&brw->curr.fb.zsbuf, fb->zsbuf);
30 brw->state.dirty.mesa |= PIPE_NEW_DEPTH_BUFFER;
33 /* Color buffers:
35 for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) {
36 if (brw->curr.fb.cbufs[i] != fb->cbufs[i]) {
37 brw->state.dirty.mesa |= PIPE_NEW_COLOR_BUFFERS;
38 pipe_surface_reference(&brw->curr.fb.cbufs[i], fb->cbufs[i]);
42 if (brw->curr.fb.nr_cbufs != fb->nr_cbufs) {
43 brw->curr.fb.nr_cbufs = MIN2(BRW_MAX_DRAW_BUFFERS, fb->nr_cbufs);
44 brw->state.dirty.mesa |= PIPE_NEW_NR_CBUFS;
49 static void brw_set_viewport_state( struct pipe_context *pipe,
50 const struct pipe_viewport_state *viewport )
52 struct brw_context *brw = brw_context(pipe);
54 brw->curr.viewport = *viewport;
55 brw->curr.ccv.min_depth = viewport->scale[2] * -1.0 + viewport->translate[2];
56 brw->curr.ccv.max_depth = viewport->scale[2] * 1.0 + viewport->translate[2];
58 if (0)
59 debug_printf("%s depth range %f .. %f\n",
60 __FUNCTION__,
61 brw->curr.ccv.min_depth,
62 brw->curr.ccv.max_depth);
64 brw->state.dirty.mesa |= PIPE_NEW_VIEWPORT;
68 void brw_pipe_framebuffer_init( struct brw_context *brw )
70 brw->base.set_framebuffer_state = brw_set_framebuffer_state;
71 brw->base.set_viewport_state = brw_set_viewport_state;
74 void brw_pipe_framebuffer_cleanup( struct brw_context *brw )
76 struct pipe_framebuffer_state *fb = &brw->curr.fb;
77 int i;
79 for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) {
80 pipe_surface_reference(&fb->cbufs[i], NULL);
83 pipe_surface_reference(&fb->zsbuf, NULL);