aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src')
-rwxr-xr-xmesalib/src/mapi/mapi/mapi_abi.py2
-rw-r--r--mesalib/src/mesa/SConscript1
-rw-r--r--mesalib/src/mesa/drivers/common/meta.c2
-rw-r--r--mesalib/src/mesa/main/formatquery.c3
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_blit.c90
5 files changed, 62 insertions, 36 deletions
diff --git a/mesalib/src/mapi/mapi/mapi_abi.py b/mesalib/src/mapi/mapi/mapi_abi.py
index 30ffe7bc2..c645c02f9 100755
--- a/mesalib/src/mapi/mapi/mapi_abi.py
+++ b/mesalib/src/mapi/mapi/mapi_abi.py
@@ -29,7 +29,7 @@
import sys
# make it possible to import glapi
import os
-GLAPI = "./%s/../glapi/gen" % (os.path.dirname(sys.argv[0]))
+GLAPI = os.path.join(".", os.path.dirname(sys.argv[0]), "../glapi/gen")
sys.path.append(GLAPI)
import re
diff --git a/mesalib/src/mesa/SConscript b/mesalib/src/mesa/SConscript
index a28db23e4..e03d6a6a3 100644
--- a/mesalib/src/mesa/SConscript
+++ b/mesalib/src/mesa/SConscript
@@ -74,6 +74,7 @@ main_sources = [
'main/ff_fragment_shader.cpp',
'main/ffvertex_prog.c',
'main/fog.c',
+ 'main/formatquery.c',
'main/formats.c',
'main/format_pack.c',
'main/format_unpack.c',
diff --git a/mesalib/src/mesa/drivers/common/meta.c b/mesalib/src/mesa/drivers/common/meta.c
index e25481e1a..4e32b5066 100644
--- a/mesalib/src/mesa/drivers/common/meta.c
+++ b/mesalib/src/mesa/drivers/common/meta.c
@@ -4126,7 +4126,7 @@ _mesa_meta_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
const GLfloat x1 = x + width;
const GLfloat y1 = y + height;
- z = CLAMP(z, 0.0, 1.0);
+ z = CLAMP(z, 0.0f, 1.0f);
z = invert_z(z);
verts[0].x = x;
diff --git a/mesalib/src/mesa/main/formatquery.c b/mesalib/src/mesa/main/formatquery.c
index f08ab66f0..bd895e874 100644
--- a/mesalib/src/mesa/main/formatquery.c
+++ b/mesalib/src/mesa/main/formatquery.c
@@ -22,6 +22,7 @@
*/
#include "mtypes.h"
+#include "context.h"
#include "glformats.h"
#include "macros.h"
#include "mfeatures.h"
@@ -37,6 +38,8 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
GLsizei count = 0;
GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
if (!ctx->Extensions.ARB_internalformat_query) {
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetInternalformativ");
return;
diff --git a/mesalib/src/mesa/state_tracker/st_cb_blit.c b/mesalib/src/mesa/state_tracker/st_cb_blit.c
index 603c8d4b4..ddef2707a 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_blit.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_blit.c
@@ -184,48 +184,70 @@ st_BlitFramebuffer(struct gl_context *ctx,
blit.mask = PIPE_MASK_RGBA;
if (srcAtt->Type == GL_TEXTURE) {
- struct st_texture_object *srcObj =
- st_texture_object(srcAtt->Texture);
- struct st_renderbuffer *dstRb =
- st_renderbuffer(drawFB->_ColorDrawBuffers[0]);
- struct pipe_surface *dstSurf = dstRb->surface;
-
- assert(srcObj->pt);
- if (!srcObj->pt) {
+ struct st_texture_object *srcObj = st_texture_object(srcAtt->Texture);
+ GLuint i;
+
+ if (!srcObj || !srcObj->pt) {
return;
}
- blit.dst.resource = dstSurf->texture;
- blit.dst.level = dstSurf->u.tex.level;
- blit.dst.box.z = dstSurf->u.tex.first_layer;
- blit.dst.format = util_format_linear(dstSurf->format);
+ for (i = 0; i < drawFB->_NumColorDrawBuffers; i++) {
+ struct st_renderbuffer *dstRb =
+ st_renderbuffer(drawFB->_ColorDrawBuffers[i]);
- blit.src.resource = srcObj->pt;
- blit.src.level = srcAtt->TextureLevel;
- blit.src.box.z = srcAtt->Zoffset + srcAtt->CubeMapFace;
- blit.src.format = util_format_linear(srcObj->pt->format);
+ if (dstRb) {
+ struct pipe_surface *dstSurf = dstRb->surface;
- st->pipe->blit(st->pipe, &blit);
+ if (dstSurf) {
+ blit.dst.resource = dstSurf->texture;
+ blit.dst.level = dstSurf->u.tex.level;
+ blit.dst.box.z = dstSurf->u.tex.first_layer;
+ blit.dst.format = util_format_linear(dstSurf->format);
+
+ blit.src.resource = srcObj->pt;
+ blit.src.level = srcAtt->TextureLevel;
+ blit.src.box.z = srcAtt->Zoffset + srcAtt->CubeMapFace;
+ blit.src.format = util_format_linear(srcObj->pt->format);
+
+ st->pipe->blit(st->pipe, &blit);
+ }
+ }
+ }
}
else {
struct st_renderbuffer *srcRb =
st_renderbuffer(readFB->_ColorReadBuffer);
- struct st_renderbuffer *dstRb =
- st_renderbuffer(drawFB->_ColorDrawBuffers[0]);
- struct pipe_surface *srcSurf = srcRb->surface;
- struct pipe_surface *dstSurf = dstRb->surface;
+ struct pipe_surface *srcSurf;
+ GLuint i;
- blit.dst.resource = dstSurf->texture;
- blit.dst.level = dstSurf->u.tex.level;
- blit.dst.box.z = dstSurf->u.tex.first_layer;
- blit.dst.format = util_format_linear(dstSurf->format);
+ if (!srcRb || !srcRb->surface) {
+ return;
+ }
- blit.src.resource = srcSurf->texture;
- blit.src.level = srcSurf->u.tex.level;
- blit.src.box.z = srcSurf->u.tex.first_layer;
- blit.src.format = util_format_linear(srcSurf->format);
+ srcSurf = srcRb->surface;
- st->pipe->blit(st->pipe, &blit);
+ for (i = 0; i < drawFB->_NumColorDrawBuffers; i++) {
+ struct st_renderbuffer *dstRb =
+ st_renderbuffer(drawFB->_ColorDrawBuffers[i]);
+
+ if (dstRb) {
+ struct pipe_surface *dstSurf = dstRb->surface;
+
+ if (dstSurf) {
+ blit.dst.resource = dstSurf->texture;
+ blit.dst.level = dstSurf->u.tex.level;
+ blit.dst.box.z = dstSurf->u.tex.first_layer;
+ blit.dst.format = util_format_linear(dstSurf->format);
+
+ blit.src.resource = srcSurf->texture;
+ blit.src.level = srcSurf->u.tex.level;
+ blit.src.box.z = srcSurf->u.tex.first_layer;
+ blit.src.format = util_format_linear(srcSurf->format);
+
+ st->pipe->blit(st->pipe, &blit);
+ }
+ }
+ }
}
}
@@ -243,16 +265,16 @@ st_BlitFramebuffer(struct gl_context *ctx,
&drawFB->Attachment[BUFFER_STENCIL];
struct st_renderbuffer *srcDepthRb =
- st_renderbuffer(readFB->Attachment[BUFFER_DEPTH].Renderbuffer);
+ st_renderbuffer(srcDepth->Renderbuffer);
struct st_renderbuffer *dstDepthRb =
- st_renderbuffer(drawFB->Attachment[BUFFER_DEPTH].Renderbuffer);
+ st_renderbuffer(dstDepth->Renderbuffer);
struct pipe_surface *dstDepthSurf =
dstDepthRb ? dstDepthRb->surface : NULL;
struct st_renderbuffer *srcStencilRb =
- st_renderbuffer(readFB->Attachment[BUFFER_STENCIL].Renderbuffer);
+ st_renderbuffer(srcStencil->Renderbuffer);
struct st_renderbuffer *dstStencilRb =
- st_renderbuffer(drawFB->Attachment[BUFFER_STENCIL].Renderbuffer);
+ st_renderbuffer(dstStencil->Renderbuffer);
struct pipe_surface *dstStencilSurf =
dstStencilRb ? dstStencilRb->surface : NULL;