static void i915_clear_depth_stencil_render(struct pipe_context *pipe, struct pipe_surface *dst, unsigned clear_flags, double depth, unsigned stencil, unsigned dstx, unsigned dsty, unsigned width, unsigned height) { struct i915_context *i915 = i915_context(pipe); struct pipe_framebuffer_state fb_state; util_blitter_save_framebuffer(i915->blitter, &i915->framebuffer); fb_state.width = dst->width; fb_state.height = dst->height; fb_state.nr_cbufs = 0; fb_state.zsbuf = dst; pipe->set_framebuffer_state(pipe, &fb_state); if (i915->dirty) i915_update_derived(i915); i915_clear_emit(pipe, clear_flags & PIPE_CLEAR_DEPTHSTENCIL, NULL, depth, stencil, dstx, dsty, width, height); pipe->set_framebuffer_state(pipe, &i915->blitter->saved_fb_state); util_unreference_framebuffer_state(&i915->blitter->saved_fb_state); i915->blitter->saved_fb_state.nr_cbufs = ~0; }
static void i915_clear_render_target_render(struct pipe_context *pipe, struct pipe_surface *dst, const union pipe_color_union *color, unsigned dstx, unsigned dsty, unsigned width, unsigned height) { struct i915_context *i915 = i915_context(pipe); struct pipe_framebuffer_state fb_state; util_blitter_save_framebuffer(i915->blitter, &i915->framebuffer); fb_state.width = dst->width; fb_state.height = dst->height; fb_state.nr_cbufs = 1; fb_state.cbufs[0] = dst; fb_state.zsbuf = NULL; pipe->set_framebuffer_state(pipe, &fb_state); if (i915->dirty) i915_update_derived(i915); i915_clear_emit(pipe, PIPE_CLEAR_COLOR, color, 0.0, 0x0, dstx, dsty, width, height); pipe->set_framebuffer_state(pipe, &i915->blitter->saved_fb_state); util_unreference_framebuffer_state(&i915->blitter->saved_fb_state); i915->blitter->saved_fb_state.nr_cbufs = ~0; }
void i915_clear_render(struct pipe_context *pipe, unsigned buffers, const float *rgba, double depth, unsigned stencil) { struct i915_context *i915 = i915_context(pipe); if (i915->dirty) i915_update_derived(i915); i915_clear_emit(pipe, buffers, rgba, depth, stencil, 0, 0, i915->framebuffer.width, i915->framebuffer.height); }