#include "main/state.h"
#include "main/texobj.h"
#include "main/context.h"
+#include "main/fbobject.h"
#include "swrast/swrast.h"
#include "drivers/common/meta.h"
static INLINE int
y_flip(struct gl_framebuffer *fb, int y, int height)
{
- if (fb->Name != 0)
+ if (_mesa_is_user_fbo(fb))
return y;
else
return fb->Height - y - height;
* Have to translate destination coordinates back into source
* coordinates.
*/
- if (get_bitmap_rect(bitmap_width, bitmap_height, unpack,
- bitmap,
- -orig_dstx + (dstx + px),
- -orig_dsty + y_flip(fb, dsty + py, h),
- w, h,
- (GLubyte *)stipple,
- 8,
- fb->Name == 0 ? true : false) == 0)
+ int count = get_bitmap_rect(bitmap_width, bitmap_height, unpack,
+ bitmap,
+ -orig_dstx + (dstx + px),
+ -orig_dsty + y_flip(fb, dsty + py, h),
+ w, h,
+ (GLubyte *)stipple,
+ 8,
+ _mesa_is_winsys_fbo(fb));
+ if (count == 0)
continue;
if (!intelEmitImmediateColorExpandBlit(intel,
logic_op)) {
return false;
}
+
+ if (ctx->Query.CurrentOcclusionObject)
+ ctx->Query.CurrentOcclusionObject->Result += count;
}
}
out:
const struct gl_pixelstore_attrib *unpack,
const GLubyte * pixels)
{
- struct intel_context *intel = intel_context(ctx);
-
if (!_mesa_check_conditional_render(ctx))
return;