mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
dri/nouveau: Fix swrast fallbacks when the read and draw buffers aren't the same.
This commit is contained in:
parent
fe7d0e6dc8
commit
199fab25b7
1 changed files with 20 additions and 10 deletions
|
|
@ -32,7 +32,6 @@
|
|||
#include "swrast/swrast.h"
|
||||
|
||||
#define LOCAL_VARS \
|
||||
struct gl_framebuffer *fb = ctx->DrawBuffer; \
|
||||
struct nouveau_surface *s = &to_nouveau_renderbuffer(rb)->surface; \
|
||||
GLuint p; \
|
||||
(void)p;
|
||||
|
|
@ -45,12 +44,12 @@
|
|||
#define HW_CLIPLOOP() { \
|
||||
int minx = 0; \
|
||||
int miny = 0; \
|
||||
int maxx = fb->Width; \
|
||||
int maxy = fb->Height;
|
||||
int maxx = rb->Width; \
|
||||
int maxy = rb->Height;
|
||||
|
||||
#define HW_ENDCLIPLOOP() }
|
||||
|
||||
#define Y_FLIP(y) (fb->Name ? (y) : rb->Height - 1 - (y))
|
||||
#define Y_FLIP(y) (rb->Name ? (y) : rb->Height - 1 - (y))
|
||||
|
||||
/* RGB565 span functions */
|
||||
#define SPANTMP_PIXEL_FMT GL_RGB
|
||||
|
|
@ -143,18 +142,29 @@ texture_unit_map_unmap(GLcontext *ctx, struct gl_texture_unit *u, GLboolean map)
|
|||
ctx->Driver.UnmapTexture(ctx, u->_Current);
|
||||
}
|
||||
|
||||
static void
|
||||
framebuffer_map_unmap(struct gl_framebuffer *fb, GLboolean map)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < fb->_NumColorDrawBuffers; i++)
|
||||
renderbuffer_map_unmap(fb->_ColorDrawBuffers[i], map);
|
||||
|
||||
renderbuffer_map_unmap(fb->_ColorReadBuffer, map);
|
||||
|
||||
if (fb->_DepthBuffer)
|
||||
renderbuffer_map_unmap(fb->_DepthBuffer->Wrapped, map);
|
||||
}
|
||||
|
||||
static void
|
||||
span_map_unmap(GLcontext *ctx, GLboolean map)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++)
|
||||
renderbuffer_map_unmap(ctx->DrawBuffer->_ColorDrawBuffers[i], map);
|
||||
framebuffer_map_unmap(ctx->DrawBuffer, map);
|
||||
|
||||
renderbuffer_map_unmap(ctx->DrawBuffer->_ColorReadBuffer, map);
|
||||
|
||||
if (ctx->DrawBuffer->_DepthBuffer)
|
||||
renderbuffer_map_unmap(ctx->DrawBuffer->_DepthBuffer->Wrapped, map);
|
||||
if (ctx->ReadBuffer != ctx->DrawBuffer)
|
||||
framebuffer_map_unmap(ctx->ReadBuffer, map);
|
||||
|
||||
for (i = 0; i < ctx->Const.MaxTextureUnits; i++)
|
||||
texture_unit_map_unmap(ctx, &ctx->Texture.Unit[i], map);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue