Merge branch 'mesa_7_6_branch'
Conflicts: src/mesa/drivers/dri/intel/intel_clear.c
This commit is contained in:
@@ -50,6 +50,8 @@ This was written by Zack Rusin at Tungsten Graphics.
|
||||
<li>Rewritten radeon/r200/r300 driver using a buffer manager
|
||||
<li>radeon/r200/r300 GL_EXT_framebuffer_object support when used with
|
||||
kernel memory manager
|
||||
<li>radeon/r200/r300 support for GL_ARB_occlusion_query</li>
|
||||
<li>r300 driver supports OpenGL 1.5</li>
|
||||
<li>r300 driver support for GL_EXT_vertex_array_bgra, GL_EXT_texture_sRGB
|
||||
<li>i915/945 driver support for GL_ARB_point_sprite, GL_EXT_stencil_two_side
|
||||
and GL_ATI_separate_stencil extensions
|
||||
|
@@ -87,9 +87,13 @@
|
||||
|
||||
#define HASH_ALLOC malloc
|
||||
#define HASH_FREE free
|
||||
#define HASH_RANDOM_DECL
|
||||
#define HASH_RANDOM_INIT(seed) srandom(seed)
|
||||
#define HASH_RANDOM random()
|
||||
#define HASH_RANDOM_DECL struct random_data rd; int32_t rv; char rs[256]
|
||||
#define HASH_RANDOM_INIT(seed) \
|
||||
do { \
|
||||
(void) memset(&rd, 0, sizeof(rd)); \
|
||||
(void) initstate_r(seed, rs, sizeof(rs), &rd); \
|
||||
} while(0)
|
||||
#define HASH_RANDOM ((void) random_r(&rd, &rv), rv)
|
||||
#define HASH_RANDOM_DESTROY
|
||||
|
||||
typedef struct __glxHashBucket
|
||||
|
@@ -772,7 +772,6 @@ _mesa_meta_end(GLcontext *ctx)
|
||||
|
||||
_mesa_MatrixMode(save->MatrixMode);
|
||||
|
||||
save->ClipPlanesEnabled = ctx->Transform.ClipPlanesEnabled;
|
||||
if (save->ClipPlanesEnabled) {
|
||||
GLuint i;
|
||||
for (i = 0; i < ctx->Const.MaxClipPlanes; i++) {
|
||||
@@ -808,9 +807,6 @@ _mesa_meta_end(GLcontext *ctx)
|
||||
if (save->Lighting) {
|
||||
_mesa_set_enable(ctx, GL_LIGHTING, GL_TRUE);
|
||||
}
|
||||
if (save->Fog) {
|
||||
_mesa_set_enable(ctx, GL_FOG, GL_TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -38,6 +38,7 @@
|
||||
#include "intel_fbo.h"
|
||||
#include "intel_pixel.h"
|
||||
#include "intel_regions.h"
|
||||
#include "intel_batchbuffer.h"
|
||||
|
||||
#define FILE_DEBUG_FLAG DEBUG_BLIT
|
||||
|
||||
@@ -170,8 +171,9 @@ intelClear(GLcontext *ctx, GLbitfield mask)
|
||||
}
|
||||
DBG("\n");
|
||||
}
|
||||
intelFlush(&intel->ctx);
|
||||
_mesa_meta_Clear(&intel->ctx, tri_mask);
|
||||
|
||||
_mesa_meta_clear(&intel->ctx, tri_mask);
|
||||
intel_batchbuffer_flush(intel->batch);
|
||||
}
|
||||
|
||||
if (swrast_mask) {
|
||||
|
@@ -352,7 +352,7 @@ void r300BuildFragmentProgramHwCode(struct r300_fragment_program_compiler *compi
|
||||
if (emit.current_node < 3) {
|
||||
int shift = 3 - emit.current_node;
|
||||
int i;
|
||||
for(i = 0; i <= emit.current_node; ++i)
|
||||
for(i = emit.current_node; i >= 0; --i)
|
||||
code->code_addr[shift + i] = code->code_addr[i];
|
||||
for(i = 0; i < shift; ++i)
|
||||
code->code_addr[i] = 0;
|
||||
|
@@ -258,6 +258,7 @@ st_new_renderbuffer_fb(enum pipe_format format, int samples, boolean sw)
|
||||
strb->Base.ClassID = 0x4242; /* just a unique value */
|
||||
strb->Base.NumSamples = samples;
|
||||
strb->format = format;
|
||||
init_renderbuffer_bits(strb, format);
|
||||
strb->software = sw;
|
||||
|
||||
switch (format) {
|
||||
|
@@ -658,8 +658,10 @@ st_TexImage(GLcontext * ctx,
|
||||
format, type,
|
||||
pixels, unpack, "glTexImage");
|
||||
}
|
||||
if (!pixels)
|
||||
return;
|
||||
|
||||
/* Note: we can't check for pixels==NULL until after we've allocated
|
||||
* memory for the texture.
|
||||
*/
|
||||
|
||||
/* See if we can do texture compression with a blit/render.
|
||||
*/
|
||||
@@ -670,6 +672,9 @@ st_TexImage(GLcontext * ctx,
|
||||
stImage->pt->format,
|
||||
stImage->pt->target,
|
||||
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0)) {
|
||||
if (!pixels)
|
||||
goto done;
|
||||
|
||||
if (compress_with_blit(ctx, target, level, 0, 0, 0, width, height, depth,
|
||||
format, type, pixels, unpack, texImage)) {
|
||||
goto done;
|
||||
@@ -711,6 +716,9 @@ st_TexImage(GLcontext * ctx,
|
||||
return;
|
||||
}
|
||||
|
||||
if (!pixels)
|
||||
goto done;
|
||||
|
||||
DBG("Upload image %dx%dx%d row_len %x pitch %x\n",
|
||||
width, height, depth, width * texelBytes, dstRowStride);
|
||||
|
||||
@@ -753,9 +761,9 @@ st_TexImage(GLcontext * ctx,
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
_mesa_unmap_teximage_pbo(ctx, unpack);
|
||||
|
||||
done:
|
||||
if (stImage->pt && texImage->Data) {
|
||||
st_texture_image_unmap(ctx->st, stImage);
|
||||
texImage->Data = NULL;
|
||||
@@ -1092,7 +1100,7 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
|
||||
|
||||
if (!texImage->Data) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage");
|
||||
return;
|
||||
goto done;
|
||||
}
|
||||
|
||||
src = (const GLubyte *) pixels;
|
||||
@@ -1123,9 +1131,9 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
_mesa_unmap_teximage_pbo(ctx, packing);
|
||||
|
||||
done:
|
||||
if (stImage->pt) {
|
||||
st_texture_image_unmap(ctx->st, stImage);
|
||||
texImage->Data = NULL;
|
||||
|
@@ -66,7 +66,7 @@ st_create_framebuffer( const __GLcontextModes *visual,
|
||||
else {
|
||||
/* Only allocate front buffer right now if we're single buffered.
|
||||
* If double-buffered, allocate front buffer on demand later.
|
||||
* See check_create_front_buffers().
|
||||
* See check_create_front_buffers() and st_set_framebuffer_surface().
|
||||
*/
|
||||
struct gl_renderbuffer *rb
|
||||
= st_new_renderbuffer_fb(colorFormat, samples, FALSE);
|
||||
@@ -170,8 +170,20 @@ st_set_framebuffer_surface(struct st_framebuffer *stfb,
|
||||
|
||||
strb = st_renderbuffer(stfb->Base.Attachment[surfIndex].Renderbuffer);
|
||||
|
||||
if (!strb) {
|
||||
if (surfIndex == ST_SURFACE_FRONT_LEFT) {
|
||||
/* Delayed creation when the window system supplies a fake front buffer */
|
||||
struct st_renderbuffer *strb_back
|
||||
= st_renderbuffer(stfb->Base.Attachment[ST_SURFACE_BACK_LEFT].Renderbuffer);
|
||||
struct gl_renderbuffer *rb
|
||||
= st_new_renderbuffer_fb(surf->format, strb_back->Base.NumSamples, FALSE);
|
||||
_mesa_add_renderbuffer(&stfb->Base, BUFFER_FRONT_LEFT, rb);
|
||||
strb = st_renderbuffer(rb);
|
||||
} else {
|
||||
/* fail */
|
||||
if (!strb) return;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* replace the renderbuffer's surface/texture pointers */
|
||||
pipe_surface_reference( &strb->surface, surf );
|
||||
|
Reference in New Issue
Block a user