diff options
Diffstat (limited to 'mesalib/src')
-rw-r--r-- | mesalib/src/gallium/Automake.inc | 46 | ||||
-rw-r--r-- | mesalib/src/mesa/drivers/dri/Makefile.am | 1 | ||||
-rw-r--r-- | mesalib/src/mesa/drivers/dri/common/Makefile.am | 2 | ||||
-rw-r--r-- | mesalib/src/mesa/main/formats.c | 20 | ||||
-rw-r--r-- | mesalib/src/mesa/main/texstore.c | 10 | ||||
-rw-r--r-- | mesalib/src/mesa/state_tracker/st_format.c | 6 |
6 files changed, 65 insertions, 20 deletions
diff --git a/mesalib/src/gallium/Automake.inc b/mesalib/src/gallium/Automake.inc index 1acc99ef5..56f1433a0 100644 --- a/mesalib/src/gallium/Automake.inc +++ b/mesalib/src/gallium/Automake.inc @@ -54,25 +54,37 @@ GALLIUM_VIDEO_CFLAGS = \ DRI_VERSION_SCRIPT ?= $(top_srcdir)/src/gallium/state_trackers/dri/dri.link GALLIUM_DRI_LINKER_FLAGS = \ + -shared \ -module \ -avoid-version \ - -Wl,--version-script=$(DRI_VERSION_SCRIPT) \ - -shared \ - -no-undefined + $(GC_SECTIONS) \ + -Wl,--version-script=$(DRI_VERSION_SCRIPT) GALLIUM_VDPAU_LINKER_FLAGS = \ + -shared \ -module \ + -no-undefined \ -version-number $(VDPAU_MAJOR):$(VDPAU_MINOR) \ -export-symbols-regex $(VDPAU_EXPORTS) \ - -shared \ - -no-undefined + $(GC_SECTIONS) \ + -Wl,--no-undefined GALLIUM_XVMC_LINKER_FLAGS = \ + -shared \ -module \ + -no-undefined \ -version-number $(XVMC_MAJOR):$(XVMC_MINOR) \ - -shared \ -export-symbols-regex '^XvMC' \ - -no-undefined + $(GC_SECTIONS) \ + -Wl,--no-undefined + +GALLIUM_OMX_LINKER_FLAGS = \ + -shared \ + -module \ + -no-undefined \ + -export-symbols-regex $(EXPORTS) \ + $(GC_SECTIONS) \ + -Wl,--no-undefined GALLIUM_VDPAU_LIB_DEPS = \ $(top_builddir)/src/gallium/auxiliary/libgallium.la \ @@ -90,9 +102,29 @@ GALLIUM_XVMC_LIB_DEPS = \ $(XVMC_LIBS) \ $(LIBDRM_LIBS) +GALLIUM_OMX_LIB_DEPS = \ + $(top_builddir)/src/gallium/auxiliary/libgallium.la \ + $(top_builddir)/src/gallium/state_trackers/omx/libomxtracker.la \ + $(GALLIUM_DRI_LIB_DEPS) \ + $(OMX_LIBS) + GALLIUM_WINSYS_CFLAGS = \ -I$(top_srcdir)/include \ -I$(top_srcdir)/src/gallium/include \ -I$(top_srcdir)/src/gallium/auxiliary \ $(DEFINES) \ $(VISIBILITY_CFLAGS) + +if HAVE_MESA_LLVM + +GALLIUM_DRI_LINKER_FLAGS += $(LLVM_LDFLAGS) +GALLIUM_VDPAU_LINKER_FLAGS += $(LLVM_LDFLAGS) +GALLIUM_XVMC_LINKER_FLAGS += $(LLVM_LDFLAGS) +GALLIUM_OMX_LINKER_FLAGS += $(LLVM_LDFLAGS) + +GALLIUM_DRI_LIB_DEPS += $(LLVM_LIBS) +GALLIUM_VDPAU_LIB_DEPS += $(LLVM_LIBS) +GALLIUM_XVMC_LIB_DEPS += $(LLVM_LIBS) +GALLIUM_OMX_LIB_DEPS += $(LLVM_LIBS) + +endif diff --git a/mesalib/src/mesa/drivers/dri/Makefile.am b/mesalib/src/mesa/drivers/dri/Makefile.am index 17ac76be1..f1fee122c 100644 --- a/mesalib/src/mesa/drivers/dri/Makefile.am +++ b/mesalib/src/mesa/drivers/dri/Makefile.am @@ -53,6 +53,7 @@ mesa_dri_drivers_la_SOURCES = mesa_dri_drivers_la_LDFLAGS = \ -module -avoid-version -shared \ -Wl,-Bsymbolic \ + $(GC_SECTIONS) \ $() mesa_dri_drivers_la_LIBADD = \ ../../libmesa.la \ diff --git a/mesalib/src/mesa/drivers/dri/common/Makefile.am b/mesalib/src/mesa/drivers/dri/common/Makefile.am index e500bdb30..c98ccf7b8 100644 --- a/mesalib/src/mesa/drivers/dri/common/Makefile.am +++ b/mesalib/src/mesa/drivers/dri/common/Makefile.am @@ -48,7 +48,7 @@ sysconf_DATA = drirc if DRICOMMON_NEED_LIBDRM AM_CFLAGS += $(LIBDRM_CFLAGS) -libdricommon_la_LDFLAGS = $(LIBDRM_LIBS) +libdricommon_la_LIBADD = $(LIBDRM_LIBS) else AM_CFLAGS += -D__NOT_HAVE_DRM_H endif diff --git a/mesalib/src/mesa/main/formats.c b/mesalib/src/mesa/main/formats.c index 4fb1f116b..fb2501c69 100644 --- a/mesalib/src/mesa/main/formats.c +++ b/mesalib/src/mesa/main/formats.c @@ -3153,9 +3153,9 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format, case MESA_FORMAT_L_UNORM16: return format == GL_LUMINANCE && type == GL_UNSIGNED_SHORT && !swapBytes; case MESA_FORMAT_I_UNORM8: - return format == GL_INTENSITY && type == GL_UNSIGNED_BYTE; + return format == GL_RED && type == GL_UNSIGNED_BYTE; case MESA_FORMAT_I_UNORM16: - return format == GL_INTENSITY && type == GL_UNSIGNED_SHORT && !swapBytes; + return format == GL_RED && type == GL_UNSIGNED_SHORT && !swapBytes; case MESA_FORMAT_YCBCR: return format == GL_YCBCR_MESA && @@ -3247,9 +3247,9 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format, return format == GL_LUMINANCE_ALPHA && type == GL_HALF_FLOAT && !swapBytes; case MESA_FORMAT_I_FLOAT32: - return format == GL_INTENSITY && type == GL_FLOAT && !swapBytes; + return format == GL_RED && type == GL_FLOAT && !swapBytes; case MESA_FORMAT_I_FLOAT16: - return format == GL_INTENSITY && type == GL_HALF_FLOAT && !swapBytes; + return format == GL_RED && type == GL_HALF_FLOAT && !swapBytes; case MESA_FORMAT_R_FLOAT32: return format == GL_RED && type == GL_FLOAT && !swapBytes; @@ -3277,13 +3277,17 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format, return format == GL_ALPHA_INTEGER && type == GL_INT && !swapBytes; case MESA_FORMAT_I_UINT8: + return format == GL_RED_INTEGER && type == GL_UNSIGNED_BYTE; case MESA_FORMAT_I_UINT16: + return format == GL_RED_INTEGER && type == GL_UNSIGNED_SHORT && !swapBytes; case MESA_FORMAT_I_UINT32: + return format == GL_RED_INTEGER && type == GL_UNSIGNED_INT && !swapBytes; case MESA_FORMAT_I_SINT8: + return format == GL_RED_INTEGER && type == GL_BYTE; case MESA_FORMAT_I_SINT16: + return format == GL_RED_INTEGER && type == GL_SHORT && !swapBytes; case MESA_FORMAT_I_SINT32: - /* GL_INTENSITY_INTEGER_EXT doesn't exist. */ - return GL_FALSE; + return format == GL_RED_INTEGER && type == GL_INT && !swapBytes; case MESA_FORMAT_L_UINT8: return format == GL_LUMINANCE_INTEGER_EXT && type == GL_UNSIGNED_BYTE; @@ -3450,7 +3454,7 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format, return format == GL_LUMINANCE_ALPHA && type == GL_BYTE && littleEndian && !swapBytes; case MESA_FORMAT_I_SNORM8: - return format == GL_INTENSITY && type == GL_BYTE; + return format == GL_RED && type == GL_BYTE; case MESA_FORMAT_A_SNORM16: return format == GL_ALPHA && type == GL_SHORT && !swapBytes; case MESA_FORMAT_L_SNORM16: @@ -3459,7 +3463,7 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format, return format == GL_LUMINANCE_ALPHA && type == GL_SHORT && littleEndian && !swapBytes; case MESA_FORMAT_I_SNORM16: - return format == GL_INTENSITY && type == GL_SHORT && littleEndian && + return format == GL_RED && type == GL_SHORT && littleEndian && !swapBytes; case MESA_FORMAT_B10G10R10A2_UINT: diff --git a/mesalib/src/mesa/main/texstore.c b/mesalib/src/mesa/main/texstore.c index b68ba603e..fe3b07256 100644 --- a/mesalib/src/mesa/main/texstore.c +++ b/mesalib/src/mesa/main/texstore.c @@ -3260,12 +3260,16 @@ _mesa_texstore_srgba8(TEXSTORE_PARAMS) GLboolean k; ASSERT(dstFormat == MESA_FORMAT_A8B8G8R8_SRGB || - dstFormat == MESA_FORMAT_R8G8B8X8_SRGB); + dstFormat == MESA_FORMAT_R8G8B8X8_SRGB || + dstFormat == MESA_FORMAT_R8G8B8A8_SRGB); /* reuse normal rgba texstore code */ if (dstFormat == MESA_FORMAT_A8B8G8R8_SRGB) { newDstFormat = MESA_FORMAT_A8B8G8R8_UNORM; } + else if (dstFormat == MESA_FORMAT_R8G8B8A8_SRGB) { + newDstFormat = MESA_FORMAT_R8G8B8A8_UNORM; + } else if (dstFormat == MESA_FORMAT_R8G8B8X8_SRGB) { newDstFormat = MESA_FORMAT_R8G8B8X8_UNORM; } @@ -3294,9 +3298,6 @@ _mesa_texstore_sargb8(TEXSTORE_PARAMS) case MESA_FORMAT_B8G8R8A8_SRGB: newDstFormat = MESA_FORMAT_B8G8R8A8_UNORM; break; - case MESA_FORMAT_R8G8B8A8_SRGB: - newDstFormat = MESA_FORMAT_R8G8B8A8_UNORM; - break; case MESA_FORMAT_B8G8R8X8_SRGB: newDstFormat = MESA_FORMAT_B8G8R8X8_UNORM; break; @@ -3852,6 +3853,7 @@ _mesa_get_texstore_func(mesa_format format) table[MESA_FORMAT_B5G5R5X1_UNORM] = store_ubyte_texture; table[MESA_FORMAT_R8G8B8X8_SNORM] = _mesa_texstore_signed_rgbx8888; table[MESA_FORMAT_R8G8B8X8_SRGB] = _mesa_texstore_srgba8; + table[MESA_FORMAT_R8G8B8A8_SRGB] = _mesa_texstore_srgba8; table[MESA_FORMAT_RGBX_UINT8] = _mesa_texstore_rgba_uint8; table[MESA_FORMAT_RGBX_SINT8] = _mesa_texstore_rgba_int8; table[MESA_FORMAT_B10G10R10X2_UNORM] = _mesa_texstore_argb2101010; diff --git a/mesalib/src/mesa/state_tracker/st_format.c b/mesalib/src/mesa/state_tracker/st_format.c index cd6b46681..38d4ccfea 100644 --- a/mesalib/src/mesa/state_tracker/st_format.c +++ b/mesalib/src/mesa/state_tracker/st_format.c @@ -1750,6 +1750,12 @@ st_choose_matching_format(struct pipe_screen *screen, unsigned bind, if (_mesa_get_format_color_encoding(mesa_format) == GL_SRGB) { continue; } + if (_mesa_get_format_bits(mesa_format, GL_TEXTURE_INTENSITY_SIZE) > 0) { + /* If `format` is GL_RED/GL_RED_INTEGER, then we might match some + * intensity formats, which we don't want. + */ + continue; + } if (_mesa_format_matches_format_and_type(mesa_format, format, type, swapBytes)) { |