intel: Downsample on DRI2 flush
Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Paul Berry <stereotype441@gmail.com> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
@@ -149,6 +149,36 @@ static const __DRItexBufferExtension intelTexBufferExtension = {
|
||||
intelSetTexBuffer2,
|
||||
};
|
||||
|
||||
static void
|
||||
intel_downsample_for_dri2_flush(struct intel_context *intel,
|
||||
__DRIdrawable *drawable)
|
||||
{
|
||||
if (intel->gen < 6) {
|
||||
/* MSAA is not supported, so don't waste time checking for
|
||||
* a multisample buffer.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
struct gl_framebuffer *fb = drawable->driverPrivate;
|
||||
struct intel_renderbuffer *rb;
|
||||
|
||||
/* Usually, only the back buffer will need to be downsampled. However,
|
||||
* the front buffer will also need it if the user has rendered into it.
|
||||
*/
|
||||
static const gl_buffer_index buffers[2] = {
|
||||
BUFFER_BACK_LEFT,
|
||||
BUFFER_FRONT_LEFT,
|
||||
};
|
||||
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
rb = intel_get_renderbuffer(fb, buffers[i]);
|
||||
if (rb == NULL || rb->mt == NULL)
|
||||
continue;
|
||||
intel_miptree_downsample(intel, rb->mt);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
intelDRI2Flush(__DRIdrawable *drawable)
|
||||
{
|
||||
@@ -160,6 +190,7 @@ intelDRI2Flush(__DRIdrawable *drawable)
|
||||
if (intel->gen < 4)
|
||||
INTEL_FIREVERTICES(intel);
|
||||
|
||||
intel_downsample_for_dri2_flush(intel, drawable);
|
||||
intel->need_throttle = true;
|
||||
|
||||
if (intel->batch.used)
|
||||
|
||||
Reference in New Issue
Block a user