Compare commits
27 Commits
mesa-9.2-r
...
mesa-9.2-r
Author | SHA1 | Date | |
---|---|---|---|
|
fe6526f439 | ||
|
08b192d26a | ||
|
c1c076dd8d | ||
|
368fc4f3ec | ||
|
e14baf425b | ||
|
dce3865306 | ||
|
8efdaedfc2 | ||
|
c47804d286 | ||
|
5114ac3f87 | ||
|
f0bc10679e | ||
|
3f438bfa4c | ||
|
60e1b03455 | ||
|
cf537c405b | ||
|
601926515e | ||
|
c9a7d6950b | ||
|
89aff30f9b | ||
|
3eae076d70 | ||
|
3ec07eaaa5 | ||
|
35c9345711 | ||
|
74fcc65b58 | ||
|
b802f6a124 | ||
|
170b952cfe | ||
|
b97305bc21 | ||
|
ecd1d92baf | ||
|
c8b5222074 | ||
|
bd83ff1923 | ||
|
a8b08c5ccd |
@@ -35,7 +35,7 @@ LOCAL_C_INCLUDES += \
|
||||
|
||||
# define ANDROID_VERSION (e.g., 4.0.x => 0x0400)
|
||||
LOCAL_CFLAGS += \
|
||||
-DPACKAGE_VERSION=\"9.2.0-rc1\" \
|
||||
-DPACKAGE_VERSION=\"9.2.0-rc2\" \
|
||||
-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\" \
|
||||
-DANDROID_VERSION=0x0$(MESA_ANDROID_MAJOR_VERSION)0$(MESA_ANDROID_MINOR_VERSION)
|
||||
|
||||
|
@@ -70,7 +70,7 @@ if env['gles']:
|
||||
# Environment setup
|
||||
|
||||
env.Append(CPPDEFINES = [
|
||||
('PACKAGE_VERSION', '\\"9.2.0-rc1\\"'),
|
||||
('PACKAGE_VERSION', '\\"9.2.0-rc2\\"'),
|
||||
('PACKAGE_BUGREPORT', '\\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\\"'),
|
||||
])
|
||||
|
||||
|
@@ -14,7 +14,7 @@ git log --reverse --grep="cherry picked from commit" origin/master..HEAD |\
|
||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
||||
|
||||
# Grep for commits that were marked as a candidate for the stable tree.
|
||||
git log --reverse --pretty=%H -i --grep='^[[:space:]]*NOTE: .*[Cc]andidate' HEAD..origin/master |\
|
||||
git log --reverse --pretty=%H -i --grep='^\([[:space:]]*NOTE: .*[Cc]andidate\|CC:.*mesa-stable\)' HEAD..origin/master |\
|
||||
while read sha
|
||||
do
|
||||
# Check to see whether the patch is on the ignore list.
|
||||
|
33
configure.ac
33
configure.ac
@@ -6,7 +6,7 @@ dnl Tell the user about autoconf.html in the --help output
|
||||
m4_divert_once([HELP_END], [
|
||||
See docs/autoconf.html for more details on the options for Mesa.])
|
||||
|
||||
AC_INIT([Mesa], [9.2.0-rc1],
|
||||
AC_INIT([Mesa], [9.2.0-rc2],
|
||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
|
||||
AC_CONFIG_AUX_DIR([bin])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
@@ -579,6 +579,11 @@ AC_ARG_ENABLE([osmesa],
|
||||
[enable OSMesa library @<:@default=disabled@:>@])],
|
||||
[enable_osmesa="$enableval"],
|
||||
[enable_osmesa=no])
|
||||
AC_ARG_ENABLE([gallium-osmesa],
|
||||
[AS_HELP_STRING([--enable-gallium-osmesa],
|
||||
[enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
|
||||
[enable_gallium_osmesa="$enableval"],
|
||||
[enable_gallium_osmesa=no])
|
||||
AC_ARG_ENABLE([egl],
|
||||
[AS_HELP_STRING([--disable-egl],
|
||||
[disable EGL library @<:@default=enabled@:>@])],
|
||||
@@ -769,7 +774,13 @@ if test "x$enable_dri" = xyes; then
|
||||
GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
|
||||
fi
|
||||
|
||||
if test "x$enable_osmesa" = xyes; then
|
||||
if test "x$enable_gallium_osmesa" = xyes; then
|
||||
if test -z "$with_gallium_drivers"; then
|
||||
AC_MSG_ERROR([Cannot enable gallium_osmesa without Gallium])
|
||||
fi
|
||||
if test "x$enable_osmesa" = xyes; then
|
||||
AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
|
||||
fi
|
||||
GALLIUM_STATE_TRACKERS_DIRS="osmesa $GALLIUM_STATE_TRACKERS_DIRS"
|
||||
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS osmesa"
|
||||
fi
|
||||
@@ -1135,7 +1146,7 @@ x16|x32)
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "x$enable_osmesa" = xyes; then
|
||||
if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
|
||||
# only link libraries with osmesa if shared
|
||||
if test "$enable_static" = no; then
|
||||
OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
|
||||
@@ -1962,9 +1973,11 @@ AC_SUBST([ELF_LIB])
|
||||
|
||||
AM_CONDITIONAL(NEED_LIBPROGRAM, test "x$with_gallium_drivers" != x -o \
|
||||
"x$enable_xlib_glx" = xyes -o \
|
||||
"x$enable_osmesa" = xyes)
|
||||
"x$enable_osmesa" = xyes -o \
|
||||
"x$enable_gallium_osmesa" = xyes)
|
||||
AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
|
||||
AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
|
||||
AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
|
||||
|
||||
AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
|
||||
AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
|
||||
@@ -2151,11 +2164,17 @@ echo " OpenVG: $enable_openvg"
|
||||
|
||||
dnl Driver info
|
||||
echo ""
|
||||
if test "x$enable_osmesa" != xno; then
|
||||
case "x$enable_osmesa$enable_gallium_osmesa" in
|
||||
xnoyes)
|
||||
echo " OSMesa: lib$OSMESA_LIB (Gallium)"
|
||||
;;
|
||||
xyesno)
|
||||
echo " OSMesa: lib$OSMESA_LIB"
|
||||
else
|
||||
;;
|
||||
xnono)
|
||||
echo " OSMesa: no"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "x$enable_dri" != xno; then
|
||||
# cleanup the drivers var
|
||||
|
@@ -16,6 +16,12 @@
|
||||
|
||||
<h1>News</h1>
|
||||
|
||||
<h2>August 1, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.1.6.html">Mesa 9.1.6</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>July 17, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.1.5.html">Mesa 9.1.5</a> is released.
|
||||
|
@@ -22,6 +22,7 @@ The release notes summarize what's new or changed in each Mesa release.
|
||||
|
||||
<ul>
|
||||
<li><a href="relnotes/9.2.html">9.2 release notes</a>
|
||||
<li><a href="relnotes/9.1.6.html">9.1.6 release notes</a>
|
||||
<li><a href="relnotes/9.1.5.html">9.1.5 release notes</a>
|
||||
<li><a href="relnotes/9.1.4.html">9.1.4 release notes</a>
|
||||
<li><a href="relnotes/9.1.3.html">9.1.3 release notes</a>
|
||||
|
@@ -30,7 +30,9 @@ because GL_ARB_compatibility is not supported.
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
TBD
|
||||
4ed2af5943141a85a21869053a2fc2eb MesaLib-9.1.5.tar.bz2
|
||||
47181066acf3231d74e027b2033f9455 MesaLib-9.1.5.tar.gz
|
||||
4c9c6615bd99215325250f87ed34058f MesaLib-9.1.5.zip
|
||||
</pre>
|
||||
|
||||
<h2>New features</h2>
|
||||
|
168
docs/relnotes/9.1.6.html
Normal file
168
docs/relnotes/9.1.6.html
Normal file
@@ -0,0 +1,168 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 9.1.6 Release Notes / August 1, 2013</h1>
|
||||
|
||||
<p>
|
||||
Mesa 9.1.6 is a bug fix release which fixes bugs found since the 9.1.5 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 9.1 implements the OpenGL 3.1 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.1. OpenGL
|
||||
3.1 is <strong>only</strong> available if requested at context creation
|
||||
because GL_ARB_compatibility is not supported.
|
||||
</p>
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
443a2a352667294b53d56cb1a74114e9 MesaLib-9.1.6.tar.bz2
|
||||
08d3069cccd6821e5f33e0840bca0718 MesaLib-9.1.6.tar.gz
|
||||
90aa7a6d9878cdbfcb055312f356d6b9 MesaLib-9.1.6.zip
|
||||
</pre>
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None.</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=47824">Bug 47824</a> - osmesa using --enable-shared-glapi depends on libgl</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62362">Bug 62362</a> - Crash when using Wayland EGL platform</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=63435">Bug 63435</a> - [Regression since 9.0] Flickering in EGL OpenGL full-screen window with swap interval 1</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64087">Bug 64087</a> - Webgl conformance shader-with-non-reserved-words crash when mesa is compiled without --enable-debug</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64330">Bug 64330</a> - WebGL snake demo crash in loop_analysis.cpp:506: bool is_loop_terminator(ir_if*): assertion „inst != __null“ failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=65236">Bug 65236</a> - [i965] Rendering artifacts in VDrift/GL2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66558">Bug 66558</a> - RS690: 3D artifacts when playing SuperTuxKart</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66847">Bug 66847</a> - compilation broken with llvm 3.3</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66850">Bug 66850</a> - glGenerateMipmap crashes when using GL_TEXTURE_2D_ARRAY with compressed internal format</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66921">Bug 66921</a> - [r300g] Heroes of Newerth: HiZ related corruption</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=67283">Bug 67283</a> - VDPAU doesn't work on hybrid laptop through DRI_PRIME</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
<p>The full set of changes can be viewed by using the following GIT command:</p>
|
||||
|
||||
<pre>
|
||||
git log mesa-9.1.5..mesa-9.1.6
|
||||
</pre>
|
||||
|
||||
<p>Andreas Boll (1):</p>
|
||||
<ul>
|
||||
<li>configure.ac: Require llvm-3.2 for r600g/radeonsi llvm backends</li>
|
||||
</ul>
|
||||
|
||||
<p>Brian Paul (4):</p>
|
||||
<ul>
|
||||
<li>mesa: handle 2D texture arrays in get_tex_rgba_compressed()</li>
|
||||
<li>meta: handle 2D texture arrays in decompress_texture_image()</li>
|
||||
<li>mesa: implement mipmap generation for compressed 2D array textures</li>
|
||||
<li>mesa: improve free() cleanup in generate_mipmap_compressed()</li>
|
||||
</ul>
|
||||
|
||||
<p>Carl Worth (7):</p>
|
||||
<ul>
|
||||
<li>docs: Add 9.1.5 release md5sums</li>
|
||||
<li>Merge 'origin/9.1' into stable</li>
|
||||
<li>cherry-ignore: Drop 13 patches from the pick list</li>
|
||||
<li>get-pick-list.sh: Include commits mentionining "CC: mesa-stable..." in pick list</li>
|
||||
<li>get-pick-list: Allow for non-whitespace between "CC:" and "mesa-stable"</li>
|
||||
<li>get-pick-list: Ignore commits which CC mesa-stable unless they say "9.1"</li>
|
||||
<li>Bump version to 9.1.6</li>
|
||||
</ul>
|
||||
|
||||
<p>Chris Forbes (5):</p>
|
||||
<ul>
|
||||
<li>i965/Gen4: Zero extra coordinates for ir_tex</li>
|
||||
<li>i965/vs: Fix flaky texture swizzling</li>
|
||||
<li>i965/vs: set up sampler state pointer for Gen4/5.</li>
|
||||
<li>i965/vs: Put lod parameter in the correct place for Gen4</li>
|
||||
<li>i965/vs: Gen4/5: enable front colors if back colors are written</li>
|
||||
</ul>
|
||||
|
||||
<p>Christoph Bumiller (1):</p>
|
||||
<ul>
|
||||
<li>nv50,nvc0: s/uint16/uint32 for constant buffer offset</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (1):</p>
|
||||
<ul>
|
||||
<li>gallium/vl: add prime support</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (1):</p>
|
||||
<ul>
|
||||
<li>egl: Restore "bogus" DRI2 invalidate event code.</li>
|
||||
</ul>
|
||||
|
||||
<p>Jeremy Huddleston Sequoia (1):</p>
|
||||
<ul>
|
||||
<li>Apple: glFlush() is not needed with CGLFlushDrawable()</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (1):</p>
|
||||
<ul>
|
||||
<li>glsl: Classify "layout" like other identifiers.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kristian Høgsberg (1):</p>
|
||||
<ul>
|
||||
<li>egl-wayland: Fix left-over wl_display_roundtrip() usage</li>
|
||||
</ul>
|
||||
|
||||
<p>Maarten Lankhorst (2):</p>
|
||||
<ul>
|
||||
<li>osmesa: link against static libglapi library too to get the gl exports</li>
|
||||
<li>nvc0: force use of correct firmware file</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (4):</p>
|
||||
<ul>
|
||||
<li>r300g/swtcl: fix geometry corruption by uploading indices to a buffer</li>
|
||||
<li>r300g/swtcl: fix a lockup in MSAA resolve</li>
|
||||
<li>Revert "r300g: allow HiZ with a 16-bit zbuffer"</li>
|
||||
<li>r600g: increase array size for shader inputs and outputs</li>
|
||||
</ul>
|
||||
|
||||
<p>Matt Turner (2):</p>
|
||||
<ul>
|
||||
<li>i965: NULL check prog on shader compilation failure.</li>
|
||||
<li>i965/vs: Print error if vertex shader fails to compile.</li>
|
||||
</ul>
|
||||
|
||||
<p>Paul Berry (1):</p>
|
||||
<ul>
|
||||
<li>glsl: Handle empty if statement encountered during loop analysis.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -38,13 +38,17 @@ libgallium_la_SOURCES += \
|
||||
endif
|
||||
|
||||
indices/u_indices_gen.c: $(srcdir)/indices/u_indices_gen.py
|
||||
$(MKDIR_P) indices
|
||||
$(AM_V_GEN) $(PYTHON2) $< > $@
|
||||
|
||||
indices/u_unfilled_gen.c: $(srcdir)/indices/u_unfilled_gen.py
|
||||
$(MKDIR_P) indices
|
||||
$(AM_V_GEN) $(PYTHON2) $< > $@
|
||||
|
||||
util/u_format_srgb.c: $(srcdir)/util/u_format_srgb.py
|
||||
$(MKDIR_P) util
|
||||
$(AM_V_GEN) $(PYTHON2) $< > $@
|
||||
|
||||
util/u_format_table.c: $(srcdir)/util/u_format_table.py $(srcdir)/util/u_format_pack.py $(srcdir)/util/u_format_parse.py $(srcdir)/util/u_format.csv
|
||||
$(MKDIR_P) util
|
||||
$(AM_V_GEN) $(PYTHON2) $(srcdir)/util/u_format_table.py $(srcdir)/util/u_format.csv > $@
|
||||
|
@@ -198,6 +198,8 @@ static void declare_input_fs(
|
||||
struct si_shader *shader = &si_shader_ctx->shader->shader;
|
||||
struct lp_build_context * base =
|
||||
&si_shader_ctx->radeon_bld.soa.bld_base.base;
|
||||
struct lp_build_context *uint =
|
||||
&si_shader_ctx->radeon_bld.soa.bld_base.uint_bld;
|
||||
struct gallivm_state * gallivm = base->gallivm;
|
||||
LLVMTypeRef input_type = LLVMFloatTypeInContext(gallivm->context);
|
||||
LLVMValueRef main_fn = si_shader_ctx->radeon_bld.main_fn;
|
||||
@@ -341,6 +343,22 @@ static void declare_input_fs(
|
||||
}
|
||||
|
||||
shader->ninterp++;
|
||||
} else if (decl->Semantic.Name == TGSI_SEMANTIC_FOG) {
|
||||
LLVMValueRef args[4];
|
||||
|
||||
args[0] = uint->zero;
|
||||
args[1] = attr_number;
|
||||
args[2] = params;
|
||||
args[3] = interp_param;
|
||||
si_shader_ctx->radeon_bld.inputs[radeon_llvm_reg_index_soa(input_index, 0)] =
|
||||
build_intrinsic(base->gallivm->builder, intr_name,
|
||||
input_type, args, args[3] ? 4 : 3,
|
||||
LLVMReadNoneAttribute | LLVMNoUnwindAttribute);
|
||||
si_shader_ctx->radeon_bld.inputs[radeon_llvm_reg_index_soa(input_index, 1)] =
|
||||
si_shader_ctx->radeon_bld.inputs[radeon_llvm_reg_index_soa(input_index, 2)] =
|
||||
lp_build_const_float(gallivm, 0.0f);
|
||||
si_shader_ctx->radeon_bld.inputs[radeon_llvm_reg_index_soa(input_index, 3)] =
|
||||
lp_build_const_float(gallivm, 1.0f);
|
||||
} else {
|
||||
for (chan = 0; chan < TGSI_NUM_CHANNELS; chan++) {
|
||||
LLVMValueRef args[4];
|
||||
|
@@ -190,7 +190,8 @@ static void si_pipe_shader_ps(struct pipe_context *ctx, struct si_pipe_shader *s
|
||||
exports_ps = 2;
|
||||
}
|
||||
|
||||
spi_ps_in_control = S_0286D8_NUM_INTERP(shader->shader.ninterp);
|
||||
spi_ps_in_control = S_0286D8_NUM_INTERP(shader->shader.ninterp) |
|
||||
S_0286D8_BC_OPTIMIZE_DISABLE(1);
|
||||
|
||||
spi_baryc_cntl = 0;
|
||||
if (have_perspective)
|
||||
|
@@ -25,7 +25,7 @@ if HAVE_X11_DRIVER
|
||||
SUBDIRS += glx
|
||||
endif
|
||||
|
||||
if HAVE_OSMESA
|
||||
if HAVE_GALLIUM_OSMESA
|
||||
SUBDIRS += osmesa
|
||||
endif
|
||||
|
||||
|
@@ -616,10 +616,11 @@ OSMesaMakeCurrent(OSMesaContext osmesa, void *buffer, GLenum type,
|
||||
struct osmesa_buffer *osbuffer;
|
||||
enum pipe_format color_format;
|
||||
|
||||
if (osmesa->format == OSMESA_RGB_565 && type != GL_UNSIGNED_SHORT_5_6_5) {
|
||||
if (!osmesa || !buffer || width < 1 || height < 1) {
|
||||
return GL_FALSE;
|
||||
}
|
||||
if (width < 1 || height < 1) {
|
||||
|
||||
if (osmesa->format == OSMESA_RGB_565 && type != GL_UNSIGNED_SHORT_5_6_5) {
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
|
@@ -26,7 +26,7 @@ if HAVE_X11_DRIVER
|
||||
SUBDIRS += libgl-xlib
|
||||
endif
|
||||
|
||||
if HAVE_OSMESA
|
||||
if HAVE_GALLIUM_OSMESA
|
||||
SUBDIRS += osmesa
|
||||
endif
|
||||
|
||||
|
@@ -40,10 +40,9 @@ lib@OSMESA_LIB@_la_SOURCES = target.c
|
||||
|
||||
lib@OSMESA_LIB@_la_LDFLAGS = -module -version-number @OSMESA_VERSION@ -no-undefined
|
||||
|
||||
if HAVE_SHARED_GLAPI
|
||||
GLAPI_LIB = $(top_builddir)/src/mapi/shared-glapi/libglapi.la
|
||||
else
|
||||
GLAPI_LIB = $(top_builddir)/src/mapi/glapi/libglapi.la
|
||||
if HAVE_SHARED_GLAPI
|
||||
GLAPI_LIB += $(top_builddir)/src/mapi/shared-glapi/libglapi.la
|
||||
endif
|
||||
|
||||
lib@OSMESA_LIB@_la_LIBADD = \
|
||||
|
@@ -598,6 +598,10 @@ public:
|
||||
virtual void print(void) const;
|
||||
bool has_qualifiers() const;
|
||||
|
||||
const struct glsl_type *glsl_type(const char **name,
|
||||
struct _mesa_glsl_parse_state *state)
|
||||
const;
|
||||
|
||||
ast_type_qualifier qualifier;
|
||||
ast_type_specifier *specifier;
|
||||
};
|
||||
@@ -623,12 +627,6 @@ public:
|
||||
* is used to note these cases when no type is specified.
|
||||
*/
|
||||
int invariant;
|
||||
|
||||
/**
|
||||
* Flag indicating that these declarators are in a uniform block,
|
||||
* allowing UBO type qualifiers.
|
||||
*/
|
||||
bool ubo_qualifiers_valid;
|
||||
};
|
||||
|
||||
|
||||
|
@@ -1795,6 +1795,28 @@ ast_type_specifier::glsl_type(const char **name,
|
||||
return type;
|
||||
}
|
||||
|
||||
const glsl_type *
|
||||
ast_fully_specified_type::glsl_type(const char **name,
|
||||
struct _mesa_glsl_parse_state *state) const
|
||||
{
|
||||
const struct glsl_type *type = this->specifier->glsl_type(name, state);
|
||||
|
||||
if (type == NULL)
|
||||
return NULL;
|
||||
|
||||
if (type->base_type == GLSL_TYPE_FLOAT
|
||||
&& state->es_shader
|
||||
&& state->target == fragment_shader
|
||||
&& this->qualifier.precision == ast_precision_none
|
||||
&& state->symbols->get_variable("#default precision") == NULL) {
|
||||
YYLTYPE loc = this->get_location();
|
||||
_mesa_glsl_error(&loc, state,
|
||||
"no precision specified this scope for type `%s'",
|
||||
type->name);
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether a toplevel variable declaration declares a varying. This
|
||||
@@ -1827,11 +1849,17 @@ validate_matrix_layout_for_type(struct _mesa_glsl_parse_state *state,
|
||||
YYLTYPE *loc,
|
||||
const glsl_type *type)
|
||||
{
|
||||
if (!type->is_matrix() && !type->is_record()) {
|
||||
_mesa_glsl_error(loc, state,
|
||||
"uniform block layout qualifiers row_major and "
|
||||
"column_major can only be applied to matrix and "
|
||||
"structure types");
|
||||
if (!type->is_matrix()) {
|
||||
/* The OpenGL ES 3.0 conformance tests did not originally allow
|
||||
* matrix layout qualifiers on non-matrices. However, the OpenGL
|
||||
* 4.4 and OpenGL ES 3.0 (revision TBD) specifications were
|
||||
* amended to specifically allow these layouts on all types. Emit
|
||||
* a warning so that people know their code may not be portable.
|
||||
*/
|
||||
_mesa_glsl_warning(loc, state,
|
||||
"uniform block layout qualifiers row_major and "
|
||||
"column_major applied to non-matrix types may "
|
||||
"be rejected by older compilers");
|
||||
} else if (type->is_record()) {
|
||||
/* We allow 'layout(row_major)' on structure types because it's the only
|
||||
* way to get row-major layouts on matrices contained in structures.
|
||||
@@ -1839,7 +1867,7 @@ validate_matrix_layout_for_type(struct _mesa_glsl_parse_state *state,
|
||||
_mesa_glsl_warning(loc, state,
|
||||
"uniform block layout qualifiers row_major and "
|
||||
"column_major applied to structure types is not "
|
||||
"strictly conformant and my be rejected by other "
|
||||
"strictly conformant and may be rejected by other "
|
||||
"compilers");
|
||||
}
|
||||
}
|
||||
@@ -1927,7 +1955,6 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
|
||||
ir_variable *var,
|
||||
struct _mesa_glsl_parse_state *state,
|
||||
YYLTYPE *loc,
|
||||
bool ubo_qualifiers_valid,
|
||||
bool is_parameter)
|
||||
{
|
||||
if (qual->flags.q.invariant) {
|
||||
@@ -2260,13 +2287,7 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
|
||||
}
|
||||
|
||||
if (qual->flags.q.row_major || qual->flags.q.column_major) {
|
||||
if (!ubo_qualifiers_valid) {
|
||||
_mesa_glsl_error(loc, state,
|
||||
"uniform block layout qualifiers row_major and "
|
||||
"column_major can only be applied to uniform block "
|
||||
"members");
|
||||
} else
|
||||
validate_matrix_layout_for_type(state, loc, var->type);
|
||||
validate_matrix_layout_for_type(state, loc, var->type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2602,7 +2623,7 @@ ast_declarator_list::hir(exec_list *instructions,
|
||||
*/
|
||||
(void) this->type->specifier->hir(instructions, state);
|
||||
|
||||
decl_type = this->type->specifier->glsl_type(& type_name, state);
|
||||
decl_type = this->type->glsl_type(& type_name, state);
|
||||
if (this->declarations.is_empty()) {
|
||||
/* If there is no structure involved in the program text, there are two
|
||||
* possible scenarios:
|
||||
@@ -2719,7 +2740,7 @@ ast_declarator_list::hir(exec_list *instructions,
|
||||
}
|
||||
|
||||
apply_type_qualifier_to_variable(& this->type->qualifier, var, state,
|
||||
& loc, this->ubo_qualifiers_valid, false);
|
||||
& loc, false);
|
||||
|
||||
if (this->type->qualifier.flags.q.invariant) {
|
||||
if ((state->target == vertex_shader) &&
|
||||
@@ -3151,7 +3172,7 @@ ast_parameter_declarator::hir(exec_list *instructions,
|
||||
const char *name = NULL;
|
||||
YYLTYPE loc = this->get_location();
|
||||
|
||||
type = this->type->specifier->glsl_type(& name, state);
|
||||
type = this->type->glsl_type(& name, state);
|
||||
|
||||
if (type == NULL) {
|
||||
if (name != NULL) {
|
||||
@@ -3214,7 +3235,7 @@ ast_parameter_declarator::hir(exec_list *instructions,
|
||||
* for function parameters the default mode is 'in'.
|
||||
*/
|
||||
apply_type_qualifier_to_variable(& this->type->qualifier, var, state, & loc,
|
||||
false, true);
|
||||
true);
|
||||
|
||||
/* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec:
|
||||
*
|
||||
@@ -3358,7 +3379,7 @@ ast_function::hir(exec_list *instructions,
|
||||
|
||||
const char *return_type_name;
|
||||
const glsl_type *return_type =
|
||||
this->return_type->specifier->glsl_type(& return_type_name, state);
|
||||
this->return_type->glsl_type(& return_type_name, state);
|
||||
|
||||
if (!return_type) {
|
||||
YYLTYPE loc = this->get_location();
|
||||
@@ -4099,10 +4120,8 @@ ast_iteration_statement::hir(exec_list *instructions,
|
||||
* version.
|
||||
*/
|
||||
static bool
|
||||
is_valid_default_precision_type(const struct _mesa_glsl_parse_state *state,
|
||||
const char *type_name)
|
||||
is_valid_default_precision_type(const struct glsl_type *const type)
|
||||
{
|
||||
const struct glsl_type *type = state->symbols->get_type(type_name);
|
||||
if (type == NULL)
|
||||
return false;
|
||||
|
||||
@@ -4154,13 +4173,54 @@ ast_type_specifier::hir(exec_list *instructions,
|
||||
"arrays");
|
||||
return NULL;
|
||||
}
|
||||
if (!is_valid_default_precision_type(state, this->type_name)) {
|
||||
|
||||
const struct glsl_type *const type =
|
||||
state->symbols->get_type(this->type_name);
|
||||
if (!is_valid_default_precision_type(type)) {
|
||||
_mesa_glsl_error(&loc, state,
|
||||
"default precision statements apply only to types "
|
||||
"float, int, and sampler types");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (type->base_type == GLSL_TYPE_FLOAT
|
||||
&& state->es_shader
|
||||
&& state->target == fragment_shader) {
|
||||
/* Section 4.5.3 (Default Precision Qualifiers) of the GLSL ES 1.00
|
||||
* spec says:
|
||||
*
|
||||
* "The fragment language has no default precision qualifier for
|
||||
* floating point types."
|
||||
*
|
||||
* As a result, we have to track whether or not default precision has
|
||||
* been specified for float in GLSL ES fragment shaders.
|
||||
*
|
||||
* Earlier in that same section, the spec says:
|
||||
*
|
||||
* "Non-precision qualified declarations will use the precision
|
||||
* qualifier specified in the most recent precision statement
|
||||
* that is still in scope. The precision statement has the same
|
||||
* scoping rules as variable declarations. If it is declared
|
||||
* inside a compound statement, its effect stops at the end of
|
||||
* the innermost statement it was declared in. Precision
|
||||
* statements in nested scopes override precision statements in
|
||||
* outer scopes. Multiple precision statements for the same basic
|
||||
* type can appear inside the same scope, with later statements
|
||||
* overriding earlier statements within that scope."
|
||||
*
|
||||
* Default precision specifications follow the same scope rules as
|
||||
* variables. So, we can track the state of the default float
|
||||
* precision in the symbol table, and the rules will just work. This
|
||||
* is a slight abuse of the symbol table, but it has the semantics
|
||||
* that we want.
|
||||
*/
|
||||
ir_variable *const junk =
|
||||
new(state) ir_variable(type, "#default precision",
|
||||
ir_var_temporary);
|
||||
|
||||
state->symbols->add_variable(junk);
|
||||
}
|
||||
|
||||
/* FINISHME: Translate precision statements into IR. */
|
||||
return NULL;
|
||||
}
|
||||
@@ -4241,7 +4301,7 @@ ast_process_structure_or_interface_block(exec_list *instructions,
|
||||
}
|
||||
|
||||
const glsl_type *decl_type =
|
||||
decl_list->type->specifier->glsl_type(& type_name, state);
|
||||
decl_list->type->glsl_type(& type_name, state);
|
||||
|
||||
foreach_list_typed (ast_declaration, decl, link,
|
||||
&decl_list->declarations) {
|
||||
@@ -4288,12 +4348,7 @@ ast_process_structure_or_interface_block(exec_list *instructions,
|
||||
if (!qual->flags.q.uniform) {
|
||||
_mesa_glsl_error(&loc, state,
|
||||
"row_major and column_major can only be "
|
||||
"applied to uniform interface blocks.");
|
||||
} else if (!field_type->is_matrix() && !field_type->is_record()) {
|
||||
_mesa_glsl_error(&loc, state,
|
||||
"uniform block layout qualifiers row_major and "
|
||||
"column_major can only be applied to matrix and "
|
||||
"structure types");
|
||||
"applied to uniform interface blocks");
|
||||
} else
|
||||
validate_matrix_layout_for_type(state, &loc, field_type);
|
||||
}
|
||||
|
@@ -149,6 +149,9 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc,
|
||||
if (q.flags.q.explicit_binding)
|
||||
this->binding = q.binding;
|
||||
|
||||
if (q.precision != ast_precision_none)
|
||||
this->precision = q.precision;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -2251,7 +2251,6 @@ member_declaration:
|
||||
|
||||
$$ = new(ctx) ast_declarator_list(type);
|
||||
$$->set_location(yylloc);
|
||||
$$->ubo_qualifiers_valid = true;
|
||||
|
||||
$$->declarations.push_degenerate_list_at_head(& $2->link);
|
||||
}
|
||||
|
@@ -1199,7 +1199,6 @@ ast_declarator_list::ast_declarator_list(ast_fully_specified_type *type)
|
||||
{
|
||||
this->type = type;
|
||||
this->invariant = false;
|
||||
this->ubo_qualifiers_valid = false;
|
||||
}
|
||||
|
||||
void
|
||||
|
@@ -18,10 +18,10 @@ XORG_INDENT_FLAGS = -linux -bad -bap -blf -bli0 -cbi0 -cdw -nce -cs -i4 -lc80 -p
|
||||
-T _XFUNCPROTOBEGIN -T _XFUNCPROTOEND -T _X_EXPORT
|
||||
|
||||
|
||||
MESA_DIR = $(top_srcdir)/src/mesa
|
||||
MESA_GLAPI_DIR = $(top_srcdir)/src/mapi/glapi
|
||||
MESA_MAPI_DIR = $(top_srcdir)/src/mapi
|
||||
MESA_GLX_DIR = $(top_srcdir)/src/glx
|
||||
MESA_DIR = $(top_builddir)/src/mesa
|
||||
MESA_GLAPI_DIR = $(top_builddir)/src/mapi/glapi
|
||||
MESA_MAPI_DIR = $(top_builddir)/src/mapi
|
||||
MESA_GLX_DIR = $(top_builddir)/src/glx
|
||||
|
||||
MESA_GLAPI_OUTPUTS = \
|
||||
$(MESA_GLAPI_DIR)/glapi_mapi_tmp.h \
|
||||
|
@@ -2118,6 +2118,20 @@ fs_visitor::register_coalesce()
|
||||
}
|
||||
}
|
||||
|
||||
if (has_source_modifiers) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (scan_inst->src[i].file == GRF &&
|
||||
scan_inst->src[i].reg == inst->dst.reg &&
|
||||
scan_inst->src[i].reg_offset == inst->dst.reg_offset &&
|
||||
inst->dst.type != scan_inst->src[i].type)
|
||||
{
|
||||
interfered = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* The gen6 MATH instruction can't handle source modifiers or
|
||||
* unusual register regions, so avoid coalescing those for
|
||||
* now. We should do something more specific.
|
||||
|
@@ -221,6 +221,9 @@ fs_visitor::try_copy_propagate(fs_inst *inst, int arg, acp_entry *entry)
|
||||
entry->src.smear != -1) && !can_do_source_mods(inst))
|
||||
return false;
|
||||
|
||||
if (has_source_modifiers && entry->dst.type != inst->src[arg].type)
|
||||
return false;
|
||||
|
||||
inst->src[arg].file = entry->src.file;
|
||||
inst->src[arg].reg = entry->src.reg;
|
||||
inst->src[arg].reg_offset = entry->src.reg_offset;
|
||||
|
@@ -361,12 +361,12 @@ fs_visitor::visit(ir_expression *ir)
|
||||
break;
|
||||
case ir_unop_neg:
|
||||
op[0].negate = !op[0].negate;
|
||||
this->result = op[0];
|
||||
emit(MOV(this->result, op[0]));
|
||||
break;
|
||||
case ir_unop_abs:
|
||||
op[0].abs = true;
|
||||
op[0].negate = false;
|
||||
this->result = op[0];
|
||||
emit(MOV(this->result, op[0]));
|
||||
break;
|
||||
case ir_unop_sign:
|
||||
temp = fs_reg(this, ir->type);
|
||||
|
@@ -206,14 +206,16 @@ vec4_visitor::try_copy_propagation(vec4_instruction *inst, int arg,
|
||||
if (inst->src[arg].negate)
|
||||
value.negate = !value.negate;
|
||||
|
||||
bool has_source_modifiers = (value.negate || value.abs ||
|
||||
value.swizzle != BRW_SWIZZLE_XYZW ||
|
||||
value.file == UNIFORM);
|
||||
bool has_source_modifiers = value.negate || value.abs;
|
||||
|
||||
/* gen6 math and gen7+ SENDs from GRFs ignore source modifiers on
|
||||
* instructions.
|
||||
*/
|
||||
if (has_source_modifiers && !can_do_source_mods(inst))
|
||||
if ((has_source_modifiers || value.file == UNIFORM ||
|
||||
value.swizzle != BRW_SWIZZLE_XYZW) && !can_do_source_mods(inst))
|
||||
return false;
|
||||
|
||||
if (has_source_modifiers && value.type != inst->src[arg].type)
|
||||
return false;
|
||||
|
||||
bool is_3src_inst = (inst->opcode == BRW_OPCODE_LRP ||
|
||||
|
@@ -1391,12 +1391,12 @@ vec4_visitor::visit(ir_expression *ir)
|
||||
break;
|
||||
case ir_unop_neg:
|
||||
op[0].negate = !op[0].negate;
|
||||
this->result = op[0];
|
||||
emit(MOV(result_dst, op[0]));
|
||||
break;
|
||||
case ir_unop_abs:
|
||||
op[0].abs = true;
|
||||
op[0].negate = false;
|
||||
this->result = op[0];
|
||||
emit(MOV(result_dst, op[0]));
|
||||
break;
|
||||
|
||||
case ir_unop_sign:
|
||||
|
@@ -754,11 +754,15 @@ intelMakeCurrent(__DRIcontext * driContextPriv,
|
||||
driContextPriv->dri2.read_stamp = driReadPriv->dri2.stamp - 1;
|
||||
}
|
||||
|
||||
/* The sRGB workaround changes the renderbuffer's format. We must change
|
||||
* the format before the renderbuffer's miptree get's allocated, otherwise
|
||||
* the formats of the renderbuffer and its miptree will differ.
|
||||
*/
|
||||
intel_gles3_srgb_workaround(brw, fb);
|
||||
intel_gles3_srgb_workaround(brw, readFb);
|
||||
|
||||
intel_prepare_render(brw);
|
||||
_mesa_make_current(ctx, fb, readFb);
|
||||
|
||||
intel_gles3_srgb_workaround(brw, ctx->WinSysDrawBuffer);
|
||||
intel_gles3_srgb_workaround(brw, ctx->WinSysReadBuffer);
|
||||
}
|
||||
else {
|
||||
_mesa_make_current(NULL, NULL, NULL);
|
||||
|
@@ -56,6 +56,7 @@ all-local: lib@OSMESA_LIB@.la
|
||||
$(MKDIR_P) $(top_builddir)/$(LIB_DIR);
|
||||
ln -f .libs/lib@OSMESA_LIB@.so $(top_builddir)/$(LIB_DIR)/lib@OSMESA_LIB@.so;
|
||||
ln -f .libs/lib@OSMESA_LIB@.so.@OSMESA_VERSION@ $(top_builddir)/$(LIB_DIR)/lib@OSMESA_LIB@.so.@OSMESA_VERSION@;
|
||||
ln -f .libs/lib@OSMESA_LIB@.so.@OSMESA_VERSION@.0.0 $(top_builddir)/$(LIB_DIR)/
|
||||
endif
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
@@ -264,20 +264,16 @@ _mesa_get_compressed_formats(struct gl_context *ctx, GLint *formats)
|
||||
n += 3;
|
||||
}
|
||||
}
|
||||
if (_mesa_is_desktop_gl(ctx)
|
||||
&& ctx->Extensions.ANGLE_texture_compression_dxt) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_RGB_S3TC;
|
||||
formats[n++] = GL_RGB4_S3TC;
|
||||
formats[n++] = GL_RGBA_S3TC;
|
||||
formats[n++] = GL_RGBA4_S3TC;
|
||||
}
|
||||
else {
|
||||
n += 4;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->Extensions.OES_compressed_ETC1_RGB8_texture) {
|
||||
/* The GL_OES_compressed_ETC1_RGB8_texture spec says:
|
||||
*
|
||||
* "New State
|
||||
*
|
||||
* The queries for NUM_COMPRESSED_TEXTURE_FORMATS and
|
||||
* COMPRESSED_TEXTURE_FORMATS include ETC1_RGB8_OES."
|
||||
*/
|
||||
if (_mesa_is_gles(ctx)
|
||||
&& ctx->Extensions.OES_compressed_ETC1_RGB8_texture) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_ETC1_RGB8_OES;
|
||||
}
|
||||
|
Reference in New Issue
Block a user