mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-07 03:40:27 +01:00
mesa/i965: Refactor brw_is_front_buffer_{drawing,reading} to common code
There are multiple similar implementations of these functions, and a later patch was going to add another. v2: Move removing intel_framebuffer to a different patch. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
This commit is contained in:
parent
5c4ef9f1d2
commit
ea8b77e892
6 changed files with 37 additions and 33 deletions
|
|
@ -41,6 +41,7 @@
|
|||
#include "main/version.h"
|
||||
#include "main/vtxfmt.h"
|
||||
#include "main/texobj.h"
|
||||
#include "main/framebuffer.h"
|
||||
|
||||
#include "vbo/vbo_context.h"
|
||||
|
||||
|
|
@ -1298,7 +1299,7 @@ intel_prepare_render(struct brw_context *brw)
|
|||
* that will happen next will probably dirty the front buffer. So
|
||||
* mark it as dirty here.
|
||||
*/
|
||||
if (brw_is_front_buffer_drawing(ctx->DrawBuffer))
|
||||
if (_mesa_is_front_buffer_drawing(ctx->DrawBuffer))
|
||||
brw->front_buffer_dirty = true;
|
||||
}
|
||||
|
||||
|
|
@ -1337,8 +1338,8 @@ intel_query_dri2_buffers(struct brw_context *brw,
|
|||
back_rb = intel_get_renderbuffer(fb, BUFFER_BACK_LEFT);
|
||||
|
||||
memset(attachments, 0, sizeof(attachments));
|
||||
if ((brw_is_front_buffer_drawing(fb) ||
|
||||
brw_is_front_buffer_reading(fb) ||
|
||||
if ((_mesa_is_front_buffer_drawing(fb) ||
|
||||
_mesa_is_front_buffer_reading(fb) ||
|
||||
!back_rb) && front_rb) {
|
||||
/* If a fake front buffer is in use, then querying for
|
||||
* __DRI_BUFFER_FRONT_LEFT will cause the server to copy the image from
|
||||
|
|
@ -1452,7 +1453,7 @@ intel_process_dri2_buffer(struct brw_context *brw,
|
|||
drawable->w, drawable->h,
|
||||
buffer->pitch);
|
||||
|
||||
if (brw_is_front_buffer_drawing(fb) &&
|
||||
if (_mesa_is_front_buffer_drawing(fb) &&
|
||||
(buffer->attachment == __DRI_BUFFER_FRONT_LEFT ||
|
||||
buffer->attachment == __DRI_BUFFER_FAKE_FRONT_LEFT) &&
|
||||
rb->Base.Base.NumSamples > 1) {
|
||||
|
|
@ -1510,7 +1511,7 @@ intel_update_image_buffer(struct brw_context *intel,
|
|||
buffer->width, buffer->height,
|
||||
buffer->pitch);
|
||||
|
||||
if (brw_is_front_buffer_drawing(fb) &&
|
||||
if (_mesa_is_front_buffer_drawing(fb) &&
|
||||
buffer_type == __DRI_IMAGE_BUFFER_FRONT &&
|
||||
rb->Base.Base.NumSamples > 1) {
|
||||
intel_renderbuffer_upsample(intel, rb);
|
||||
|
|
@ -1538,8 +1539,8 @@ intel_update_image_buffers(struct brw_context *brw, __DRIdrawable *drawable)
|
|||
else
|
||||
return;
|
||||
|
||||
if (front_rb && (brw_is_front_buffer_drawing(fb) ||
|
||||
brw_is_front_buffer_reading(fb) || !back_rb)) {
|
||||
if (front_rb && (_mesa_is_front_buffer_drawing(fb) ||
|
||||
_mesa_is_front_buffer_reading(fb) || !back_rb)) {
|
||||
buffer_mask |= __DRI_IMAGE_BUFFER_FRONT;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
#include "main/enums.h"
|
||||
#include "main/macros.h"
|
||||
#include "main/transformfeedback.h"
|
||||
#include "main/framebuffer.h"
|
||||
#include "tnl/tnl.h"
|
||||
#include "vbo/vbo_context.h"
|
||||
#include "swrast/swrast.h"
|
||||
|
|
@ -364,7 +365,7 @@ brw_postdraw_set_buffers_need_resolve(struct brw_context *brw)
|
|||
struct intel_renderbuffer *stencil_irb = intel_get_renderbuffer(fb, BUFFER_STENCIL);
|
||||
struct gl_renderbuffer_attachment *depth_att = &fb->Attachment[BUFFER_DEPTH];
|
||||
|
||||
if (brw_is_front_buffer_drawing(fb))
|
||||
if (_mesa_is_front_buffer_drawing(fb))
|
||||
front_irb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);
|
||||
|
||||
if (front_irb)
|
||||
|
|
|
|||
|
|
@ -32,30 +32,10 @@
|
|||
#include "main/framebuffer.h"
|
||||
#include "main/renderbuffer.h"
|
||||
|
||||
|
||||
bool
|
||||
brw_is_front_buffer_reading(struct gl_framebuffer *fb)
|
||||
{
|
||||
if (!fb || _mesa_is_user_fbo(fb))
|
||||
return false;
|
||||
|
||||
return fb->_ColorReadBufferIndex == BUFFER_FRONT_LEFT;
|
||||
}
|
||||
|
||||
bool
|
||||
brw_is_front_buffer_drawing(struct gl_framebuffer *fb)
|
||||
{
|
||||
if (!fb || _mesa_is_user_fbo(fb))
|
||||
return false;
|
||||
|
||||
return (fb->_NumColorDrawBuffers >= 1 &&
|
||||
fb->_ColorDrawBufferIndexes[0] == BUFFER_FRONT_LEFT);
|
||||
}
|
||||
|
||||
static void
|
||||
intelDrawBuffer(struct gl_context * ctx, GLenum mode)
|
||||
{
|
||||
if (brw_is_front_buffer_drawing(ctx->DrawBuffer)) {
|
||||
if (_mesa_is_front_buffer_drawing(ctx->DrawBuffer)) {
|
||||
struct brw_context *const brw = brw_context(ctx);
|
||||
|
||||
/* If we might be front-buffer rendering on this buffer for the first
|
||||
|
|
@ -71,7 +51,7 @@ intelDrawBuffer(struct gl_context * ctx, GLenum mode)
|
|||
static void
|
||||
intelReadBuffer(struct gl_context * ctx, GLenum mode)
|
||||
{
|
||||
if (brw_is_front_buffer_reading(ctx->ReadBuffer)) {
|
||||
if (_mesa_is_front_buffer_reading(ctx->ReadBuffer)) {
|
||||
struct brw_context *const brw = brw_context(ctx);
|
||||
|
||||
/* If we might be front-buffer reading on this buffer for the first
|
||||
|
|
|
|||
|
|
@ -32,7 +32,4 @@
|
|||
|
||||
extern void intelInitBufferFuncs(struct dd_function_table *functions);
|
||||
|
||||
bool brw_is_front_buffer_reading(struct gl_framebuffer *fb);
|
||||
bool brw_is_front_buffer_drawing(struct gl_framebuffer *fb);
|
||||
|
||||
#endif /* INTEL_BUFFERS_H */
|
||||
|
|
|
|||
|
|
@ -964,3 +964,22 @@ _mesa_print_framebuffer(const struct gl_framebuffer *fb)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
_mesa_is_front_buffer_reading(const struct gl_framebuffer *fb)
|
||||
{
|
||||
if (!fb || _mesa_is_user_fbo(fb))
|
||||
return false;
|
||||
|
||||
return fb->_ColorReadBufferIndex == BUFFER_FRONT_LEFT;
|
||||
}
|
||||
|
||||
bool
|
||||
_mesa_is_front_buffer_drawing(const struct gl_framebuffer *fb)
|
||||
{
|
||||
if (!fb || _mesa_is_user_fbo(fb))
|
||||
return false;
|
||||
|
||||
return (fb->_NumColorDrawBuffers >= 1 &&
|
||||
fb->_ColorDrawBufferIndexes[0] == BUFFER_FRONT_LEFT);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -139,4 +139,10 @@ _mesa_get_read_renderbuffer_for_format(const struct gl_context *ctx,
|
|||
extern void
|
||||
_mesa_print_framebuffer(const struct gl_framebuffer *fb);
|
||||
|
||||
extern bool
|
||||
_mesa_is_front_buffer_reading(const struct gl_framebuffer *fb);
|
||||
|
||||
extern bool
|
||||
_mesa_is_front_buffer_drawing(const struct gl_framebuffer *fb);
|
||||
|
||||
#endif /* FRAMEBUFFER_H */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue