diff options
Diffstat (limited to 'mesalib/src/mesa')
-rw-r--r-- | mesalib/src/mesa/Android.gen.mk | 6 | ||||
-rw-r--r-- | mesalib/src/mesa/Makefile.am | 10 | ||||
-rw-r--r-- | mesalib/src/mesa/drivers/dri/common/Makefile.am | 3 | ||||
-rw-r--r-- | mesalib/src/mesa/drivers/dri/swrast/Makefile.am | 3 | ||||
-rw-r--r-- | mesalib/src/mesa/main/APIspec.xml | 3 | ||||
-rw-r--r-- | mesalib/src/mesa/main/extensions.c | 3 | ||||
-rw-r--r-- | mesalib/src/mesa/main/glformats.c | 6 | ||||
-rw-r--r-- | mesalib/src/mesa/main/mtypes.h | 1 | ||||
-rw-r--r-- | mesalib/src/mesa/main/texformat.c | 12 | ||||
-rw-r--r-- | mesalib/src/mesa/main/teximage.c | 34 | ||||
-rw-r--r-- | mesalib/src/mesa/main/texstore.c | 6 | ||||
-rw-r--r-- | mesalib/src/mesa/program/register_allocate.c | 7 |
12 files changed, 53 insertions, 41 deletions
diff --git a/mesalib/src/mesa/Android.gen.mk b/mesalib/src/mesa/Android.gen.mk index f5e63234a..c17df1a1e 100644 --- a/mesalib/src/mesa/Android.gen.mk +++ b/mesalib/src/mesa/Android.gen.mk @@ -75,10 +75,10 @@ define local-l-to-c $(hide) $(LEX) -o$@ $< endef -define local-y-to-c-and-h +define mesa_local-y-to-c-and-h @mkdir -p $(dir $@) @echo "Mesa Yacc: $(PRIVATE_MODULE) <= $<" - $(hide) $(YACC) -o $@ $< + $(hide) $(YACC) -o $@ -p "_mesa_program_" $< endef define es-gen @@ -104,7 +104,7 @@ $(intermediates)/main/api_exec_%_remap_helper.h: $(es_hdr_deps) $(call es-gen, -c $*) $(intermediates)/program/program_parse.tab.c: $(LOCAL_PATH)/program/program_parse.y - $(local-y-to-c-and-h) + $(mesa_local-y-to-c-and-h) $(intermediates)/program/lex.yy.c: $(LOCAL_PATH)/program/program_lexer.l $(local-l-to-c) diff --git a/mesalib/src/mesa/Makefile.am b/mesalib/src/mesa/Makefile.am index 8e4530da3..feec1070d 100644 --- a/mesalib/src/mesa/Makefile.am +++ b/mesalib/src/mesa/Makefile.am @@ -19,7 +19,11 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. -SUBDIRS = x86 x86-64 . libdricore drivers +if NEED_LIBDRICORE +DRICORE_SUBDIR = libdricore +endif + +SUBDIRS = x86 x86-64 . $(DRICORE_SUBDIR) drivers gldir = $(includedir)/GL gl_HEADERS = $(top_srcdir)/include/GL/*.h @@ -94,8 +98,8 @@ BUILDDIR = $(top_builddir)/src/mesa/ include sources.mak AM_CPPFLAGS = $(API_DEFINES) $(DEFINES) $(INCLUDE_DIRS) -AM_CFLAGS = $(LLVM_CFLAGS) -AM_CXXFLAGS = $(LLVM_CFLAGS) +AM_CFLAGS = $(LLVM_CFLAGS) $(VISIBILITY_CFLAGS) +AM_CXXFLAGS = $(LLVM_CFLAGS) $(VISIBILITY_CXXFLAGS) # cannot just add $(MESA_ASM_FILES) to libmesa_la_SOURCES as it contains a configure substitution MESA_ASM_FILES_FOR_ARCH = diff --git a/mesalib/src/mesa/drivers/dri/common/Makefile.am b/mesalib/src/mesa/drivers/dri/common/Makefile.am index 6e9d738fa..a662919b5 100644 --- a/mesalib/src/mesa/drivers/dri/common/Makefile.am +++ b/mesalib/src/mesa/drivers/dri/common/Makefile.am @@ -26,7 +26,8 @@ AM_CFLAGS = \ -I$(top_srcdir)/src/mesa/ \ $(DEFINES) \ $(API_DEFINES) \ - $(LIBDRM_CFLAGS) + $(LIBDRM_CFLAGS) \ + $(VISIBILITY_CFLAGS) noinst_LTLIBRARIES = \ libdricommon.la \ diff --git a/mesalib/src/mesa/drivers/dri/swrast/Makefile.am b/mesalib/src/mesa/drivers/dri/swrast/Makefile.am index 16a34413b..244aa8b27 100644 --- a/mesalib/src/mesa/drivers/dri/swrast/Makefile.am +++ b/mesalib/src/mesa/drivers/dri/swrast/Makefile.am @@ -34,7 +34,8 @@ AM_CFLAGS = \ -I$(top_srcdir)/src/mesa/ \ -I$(top_srcdir)/src/mesa/drivers/dri/common \ $(DEFINES) \ - $(API_DEFINES) + $(API_DEFINES) \ + $(VISIBILITY_CFLAGS) dridir = $(DRI_DRIVER_INSTALL_DIR) diff --git a/mesalib/src/mesa/main/APIspec.xml b/mesalib/src/mesa/main/APIspec.xml index a65c5c529..c3969526f 100644 --- a/mesalib/src/mesa/main/APIspec.xml +++ b/mesalib/src/mesa/main/APIspec.xml @@ -2172,6 +2172,9 @@ <category name="NV_draw_buffers"/> <category name="NV_read_buffer"/> + <!-- GL_ANGLE_texture_compression_dxt --> + <category name="ANGLE_texture_compression_dxt"/> + <function name="DrawBuffersNV" template="DrawBuffers"/> <function name="ReadBufferNV" template="ReadBuffer"/> diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c index bd7c7baf9..4971ebc93 100644 --- a/mesalib/src/mesa/main/extensions.c +++ b/mesalib/src/mesa/main/extensions.c @@ -195,6 +195,8 @@ static const struct extension extension_table[] = { { "GL_EXT_texture3D", o(EXT_texture3D), GLL, 1996 }, { "GL_EXT_texture_array", o(EXT_texture_array), GL, 2006 }, { "GL_EXT_texture_compression_dxt1", o(EXT_texture_compression_s3tc), GL | ES1 | ES2, 2004 }, + { "GL_ANGLE_texture_compression_dxt3", o(ANGLE_texture_compression_dxt), ES2, 2011 }, + { "GL_ANGLE_texture_compression_dxt5", o(ANGLE_texture_compression_dxt), ES2, 2011 }, { "GL_EXT_texture_compression_latc", o(EXT_texture_compression_latc), GL, 2006 }, { "GL_EXT_texture_compression_rgtc", o(ARB_texture_compression_rgtc), GL, 2004 }, { "GL_EXT_texture_compression_s3tc", o(EXT_texture_compression_s3tc), GL, 2000 }, @@ -480,6 +482,7 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) ctx->Extensions.EXT_gpu_program_parameters = GL_TRUE; _mesa_enable_extension(ctx, "GL_3DFX_texture_compression_FXT1"); if (ctx->Mesa_DXTn) { + ctx->Extensions.ANGLE_texture_compression_dxt = GL_TRUE; _mesa_enable_extension(ctx, "GL_EXT_texture_compression_s3tc"); _mesa_enable_extension(ctx, "GL_S3_s3tc"); } diff --git a/mesalib/src/mesa/main/glformats.c b/mesalib/src/mesa/main/glformats.c index 04029c07c..ccdf56b4f 100644 --- a/mesalib/src/mesa/main/glformats.c +++ b/mesalib/src/mesa/main/glformats.c @@ -791,8 +791,10 @@ _mesa_is_compressed_format(struct gl_context *ctx, GLenum format) return ctx->Extensions.EXT_texture_compression_s3tc; case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - return _mesa_is_desktop_gl(ctx) - && ctx->Extensions.EXT_texture_compression_s3tc; + return (_mesa_is_desktop_gl(ctx) && + ctx->Extensions.EXT_texture_compression_s3tc) || + (ctx->API == API_OPENGLES2 && + ctx->Extensions.ANGLE_texture_compression_dxt); case GL_RGB_S3TC: case GL_RGB4_S3TC: case GL_RGBA_S3TC: diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h index ba43e574d..e790e18c4 100644 --- a/mesalib/src/mesa/main/mtypes.h +++ b/mesalib/src/mesa/main/mtypes.h @@ -2946,6 +2946,7 @@ struct gl_extensions GLboolean dummy; /* don't remove this! */ GLboolean dummy_true; /* Set true by _mesa_init_extensions(). */ GLboolean dummy_false; /* Set false by _mesa_init_extensions(). */ + GLboolean ANGLE_texture_compression_dxt; GLboolean ARB_ES2_compatibility; GLboolean ARB_base_instance; GLboolean ARB_blend_func_extended; diff --git a/mesalib/src/mesa/main/texformat.c b/mesalib/src/mesa/main/texformat.c index 17270ba92..f0bc7fdb9 100644 --- a/mesalib/src/mesa/main/texformat.c +++ b/mesalib/src/mesa/main/texformat.c @@ -302,7 +302,9 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, } } - if (ctx->Extensions.EXT_texture_compression_s3tc) { + if (ctx->Extensions.EXT_texture_compression_s3tc || + (ctx->API == API_OPENGLES2 && + ctx->Extensions.ANGLE_texture_compression_dxt)) { switch (internalFormat) { case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_DXT1); @@ -604,12 +606,16 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8); break; case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: - if (ctx->Extensions.EXT_texture_compression_s3tc) + if (ctx->Extensions.EXT_texture_compression_s3tc || + (ctx->API == API_OPENGLES2 && + ctx->Extensions.ANGLE_texture_compression_dxt)) RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT3); RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8); break; case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: - if (ctx->Extensions.EXT_texture_compression_s3tc) + if (ctx->Extensions.EXT_texture_compression_s3tc || + (ctx->API == API_OPENGLES2 && + ctx->Extensions.ANGLE_texture_compression_dxt)) RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT5); RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8); break; diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c index afda0eaaf..019516f00 100644 --- a/mesalib/src/mesa/main/teximage.c +++ b/mesalib/src/mesa/main/teximage.c @@ -203,6 +203,18 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ) } } + /* GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE && GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE */ + if (ctx->API == API_OPENGLES2 && + ctx->Extensions.ANGLE_texture_compression_dxt) { + switch (internalFormat) { + case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: + return GL_RGBA; + default: + ; /* fallthrough */ + } + } + if (ctx->Extensions.S3_s3tc) { switch (internalFormat) { case GL_RGB_S3TC: @@ -2043,28 +2055,6 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, goto error; } - /* check image size against compression block size */ - /* XXX possibly move this into the _mesa_legal_texture_dimensions() func */ - { - gl_format texFormat = - ctx->Driver.ChooseTextureFormat(ctx, target, proxy_format, - choose_format, choose_type); - GLuint bw, bh; - - _mesa_get_format_block_size(texFormat, &bw, &bh); - if ((width > bw && width % bw > 0) || - (height > bh && height % bh > 0)) { - /* - * Per GL_ARB_texture_compression: GL_INVALID_OPERATION is - * generated [...] if any parameter combinations are not - * supported by the specific compressed internal format. - */ - reason = "invalid width or height for compression format"; - error = GL_INVALID_OPERATION; - goto error; - } - } - /* check image size in bytes */ if (expectedSize != imageSize) { /* Per GL_ARB_texture_compression: GL_INVALID_VALUE is generated [...] diff --git a/mesalib/src/mesa/main/texstore.c b/mesalib/src/mesa/main/texstore.c index e2598a1dc..e6914553c 100644 --- a/mesalib/src/mesa/main/texstore.c +++ b/mesalib/src/mesa/main/texstore.c @@ -4476,12 +4476,6 @@ _mesa_store_compressed_texsubimage(struct gl_context *ctx, GLuint dims, _mesa_get_format_block_size(texFormat, &bw, &bh); - /* these should have been caught sooner */ - ASSERT((width % bw) == 0 || width < bw); - ASSERT((height % bh) == 0 || height < bh); - ASSERT((xoffset % bw) == 0); - ASSERT((yoffset % bh) == 0); - /* get pointer to src pixels (may be in a pbo which we'll map here) */ data = _mesa_validate_pbo_compressed_teximage(ctx, imageSize, data, &ctx->Unpack, diff --git a/mesalib/src/mesa/program/register_allocate.c b/mesalib/src/mesa/program/register_allocate.c index 97d4e331c..88793dbdc 100644 --- a/mesalib/src/mesa/program/register_allocate.c +++ b/mesalib/src/mesa/program/register_allocate.c @@ -555,6 +555,13 @@ ra_get_best_spill_node(struct ra_graph *g) if (cost <= 0.0) continue; + /* Only consider registers for spilling if they are still in the + * interference graph (those on the stack have already been proven to be + * allocatable without spilling). + */ + if (g->nodes[n].in_stack) + continue; + benefit = ra_get_spill_benefit(g, n); if (benefit / cost > best_benefit) { |