main: Refactor _mesa_update_framebuffer.
_mesa_update_framebuffer now operates on arbitrary read and draw framebuffers. This allows BlitNamedFramebuffer to update the state of its arbitrary read and draw framebuffers. Reviewed-by: Fredrik Höglund <fredrik@kde.org> Signed-off-by: Fredrik Höglund <fredrik@kde.org>
This commit is contained in:
committed by
Fredrik Höglund
parent
1a314f3c51
commit
9036a6c0aa
@@ -730,7 +730,7 @@ i830_update_draw_buffer(struct intel_context *intel)
|
||||
*/
|
||||
if (ctx->NewState & _NEW_BUFFERS) {
|
||||
/* this updates the DrawBuffer->_NumColorDrawBuffers fields, etc */
|
||||
_mesa_update_framebuffer(ctx);
|
||||
_mesa_update_framebuffer(ctx, ctx->ReadBuffer, ctx->DrawBuffer);
|
||||
/* this updates the DrawBuffer's Width/Height if it's a FBO */
|
||||
_mesa_update_draw_buffer_bounds(ctx);
|
||||
}
|
||||
|
||||
@@ -732,7 +732,7 @@ i915_update_draw_buffer(struct intel_context *intel)
|
||||
*/
|
||||
if (ctx->NewState & _NEW_BUFFERS) {
|
||||
/* this updates the DrawBuffer->_NumColorDrawBuffers fields, etc */
|
||||
_mesa_update_framebuffer(ctx);
|
||||
_mesa_update_framebuffer(ctx, ctx->ReadBuffer, ctx->DrawBuffer);
|
||||
/* this updates the DrawBuffer's Width/Height if it's a FBO */
|
||||
_mesa_update_draw_buffer_bounds(ctx);
|
||||
}
|
||||
|
||||
@@ -2215,7 +2215,7 @@ GLboolean r200ValidateState( struct gl_context *ctx )
|
||||
GLuint new_state = rmesa->radeon.NewGLState;
|
||||
|
||||
if (new_state & _NEW_BUFFERS) {
|
||||
_mesa_update_framebuffer(ctx);
|
||||
_mesa_update_framebuffer(ctx, ctx->ReadBuffer, ctx->DrawBuffer);
|
||||
/* this updates the DrawBuffer's Width/Height if it's a FBO */
|
||||
_mesa_update_draw_buffer_bounds(ctx);
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@ void radeon_draw_buffer(struct gl_context *ctx, struct gl_framebuffer *fb)
|
||||
*/
|
||||
if (ctx->NewState & (_NEW_BUFFERS | _NEW_COLOR | _NEW_PIXEL)) {
|
||||
/* this updates the DrawBuffer->_NumColorDrawBuffers fields, etc */
|
||||
_mesa_update_framebuffer(ctx);
|
||||
_mesa_update_framebuffer(ctx, ctx->ReadBuffer, ctx->DrawBuffer);
|
||||
/* this updates the DrawBuffer's Width/Height if it's a FBO */
|
||||
_mesa_update_draw_buffer_bounds(ctx);
|
||||
}
|
||||
|
||||
@@ -1994,7 +1994,7 @@ GLboolean radeonValidateState( struct gl_context *ctx )
|
||||
GLuint new_state = rmesa->radeon.NewGLState;
|
||||
|
||||
if (new_state & _NEW_BUFFERS) {
|
||||
_mesa_update_framebuffer(ctx);
|
||||
_mesa_update_framebuffer(ctx, ctx->ReadBuffer, ctx->DrawBuffer);
|
||||
/* this updates the DrawBuffer's Width/Height if it's a FBO */
|
||||
_mesa_update_draw_buffer_bounds(ctx);
|
||||
RADEON_STATECHANGE(rmesa, ctx);
|
||||
|
||||
@@ -678,17 +678,14 @@ update_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
|
||||
|
||||
|
||||
/**
|
||||
* Update state related to the current draw/read framebuffers.
|
||||
* Update state related to the draw/read framebuffers.
|
||||
*/
|
||||
void
|
||||
_mesa_update_framebuffer(struct gl_context *ctx)
|
||||
_mesa_update_framebuffer(struct gl_context *ctx,
|
||||
struct gl_framebuffer *readFb,
|
||||
struct gl_framebuffer *drawFb)
|
||||
{
|
||||
struct gl_framebuffer *drawFb;
|
||||
struct gl_framebuffer *readFb;
|
||||
|
||||
assert(ctx);
|
||||
drawFb = ctx->DrawBuffer;
|
||||
readFb = ctx->ReadBuffer;
|
||||
|
||||
update_framebuffer(ctx, drawFb);
|
||||
if (readFb != drawFb)
|
||||
|
||||
@@ -84,7 +84,9 @@ _mesa_update_framebuffer_visual(struct gl_context *ctx,
|
||||
struct gl_framebuffer *fb);
|
||||
|
||||
extern void
|
||||
_mesa_update_framebuffer(struct gl_context *ctx);
|
||||
_mesa_update_framebuffer(struct gl_context *ctx,
|
||||
struct gl_framebuffer *readFb,
|
||||
struct gl_framebuffer *drawFb);
|
||||
|
||||
extern GLboolean
|
||||
_mesa_source_buffer_exists(struct gl_context *ctx, GLenum format);
|
||||
|
||||
@@ -389,7 +389,7 @@ _mesa_update_state_locked( struct gl_context *ctx )
|
||||
update_frontbit( ctx );
|
||||
|
||||
if (new_state & _NEW_BUFFERS)
|
||||
_mesa_update_framebuffer(ctx);
|
||||
_mesa_update_framebuffer(ctx, ctx->ReadBuffer, ctx->DrawBuffer);
|
||||
|
||||
if (new_state & (_NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT))
|
||||
_mesa_update_draw_buffer_bounds( ctx );
|
||||
|
||||
Reference in New Issue
Block a user