46
46
#include "tnl/t_pipeline.h"
47
47
#include "swrast_setup/swrast_setup.h"
49
#include "r200_context.h"
50
49
#include "radeon_ioctl.h"
51
50
#include "radeon_state.h"
52
#include "r200_state.h"
53
51
#include "r300_ioctl.h"
52
#include "framebuffer.h"
56
54
/* =============================================================
137
135
static void radeonScissor(GLcontext* ctx, GLint x, GLint y, GLsizei w, GLsizei h)
139
radeonContextPtr radeon = RADEON_CONTEXT(ctx);
141
137
if (ctx->Scissor.Enabled) {
142
138
/* We don't pipeline cliprect changes */
143
if (IS_R200_CLASS(radeon->radeonScreen))
144
R200_FIREVERTICES((r200ContextPtr)radeon);
148
140
radeonUpdateScissor(ctx);
154
146
* Update cliprects and scissors.
156
void radeonSetCliprects(radeonContextPtr radeon, GLenum mode)
148
void radeonSetCliprects(radeonContextPtr radeon)
158
__DRIdrawablePrivate *dPriv = radeon->dri.drawable;
150
__DRIdrawablePrivate *const drawable = radeon->dri.drawable;
151
__DRIdrawablePrivate *const readable = radeon->dri.readable;
152
GLframebuffer *const draw_fb = (GLframebuffer*)drawable->driverPrivate;
153
GLframebuffer *const read_fb = (GLframebuffer*)readable->driverPrivate;
162
radeon->numClipRects = dPriv->numClipRects;
163
radeon->pClipRects = dPriv->pClipRects;
166
/* Can't ignore 2d windows if we are page flipping.
168
if (dPriv->numBackClipRects == 0 || radeon->doPageFlip) {
169
radeon->numClipRects = dPriv->numClipRects;
170
radeon->pClipRects = dPriv->pClipRects;
155
if (draw_fb->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT) {
156
/* Can't ignore 2d windows if we are page flipping. */
157
if (drawable->numBackClipRects == 0 || radeon->doPageFlip) {
158
radeon->numClipRects = drawable->numClipRects;
159
radeon->pClipRects = drawable->pClipRects;
172
radeon->numClipRects = dPriv->numBackClipRects;
173
radeon->pClipRects = dPriv->pBackClipRects;
177
fprintf(stderr, "bad mode in radeonSetCliprects\n");
178
radeon->numClipRects = 0;
179
radeon->pClipRects = 0;
161
radeon->numClipRects = drawable->numBackClipRects;
162
radeon->pClipRects = drawable->pBackClipRects;
165
/* front buffer (or none, or multiple buffers */
166
radeon->numClipRects = drawable->numClipRects;
167
radeon->pClipRects = drawable->pClipRects;
170
if ((draw_fb->Width != drawable->w) ||
171
(draw_fb->Height != drawable->h)) {
172
_mesa_resize_framebuffer(radeon->glCtx, draw_fb,
173
drawable->w, drawable->h);
174
draw_fb->Initialized = GL_TRUE;
177
if (drawable != readable) {
178
if ((read_fb->Width != readable->w) ||
179
(read_fb->Height != readable->h)) {
180
_mesa_resize_framebuffer(radeon->glCtx, read_fb,
181
readable->w, readable->h);
182
read_fb->Initialized = GL_TRUE;
183
186
if (radeon->state.scissor.enabled)