#include "st_context.h"
#include "st_texture.h"
+#include "st_cb_bitmap.h"
#include "st_cb_blit.h"
#include "st_cb_fbo.h"
-#include "st_atom.h"
+#include "st_manager.h"
#include "util/u_format.h"
static void
st_BlitFramebuffer(struct gl_context *ctx,
+ struct gl_framebuffer *readFB,
+ struct gl_framebuffer *drawFB,
GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
GLbitfield mask, GLenum filter)
const uint pFilter = ((filter == GL_NEAREST)
? PIPE_TEX_FILTER_NEAREST
: PIPE_TEX_FILTER_LINEAR);
- struct gl_framebuffer *readFB = ctx->ReadBuffer;
- struct gl_framebuffer *drawFB = ctx->DrawBuffer;
struct {
GLint srcX0, srcY0, srcX1, srcY1;
GLint dstX0, dstY0, dstX1, dstY1;
} clip;
struct pipe_blit_info blit;
- st_validate_state(st);
+ st_manager_validate_framebuffers(st);
+
+ /* Make sure bitmap rendering has landed in the framebuffers */
+ st_flush_bitmap_cache(st);
clip.srcX0 = srcX0;
clip.srcY0 = srcY0;
*
* XXX: This should depend on mask !
*/
- if (!_mesa_clip_blit(ctx,
+ if (!_mesa_clip_blit(ctx, readFB, drawFB,
&clip.srcX0, &clip.srcY0, &clip.srcX1, &clip.srcY1,
&clip.dstX0, &clip.dstY0, &clip.dstX1, &clip.dstY1)) {
return; /* nothing to draw/blit */
}
blit.filter = pFilter;
+ blit.render_condition_enable = TRUE;
if (mask & GL_COLOR_BUFFER_BIT) {
struct gl_renderbuffer_attachment *srcAtt =