Compare commits
66 Commits
mesa-10.5.
...
mesa-10.5.
Author | SHA1 | Date | |
---|---|---|---|
|
ea0d1f575c | ||
|
776e47a305 | ||
|
e2dd554651 | ||
|
0f5ec7250d | ||
|
a2785a23e6 | ||
|
2ad5a068fa | ||
|
1dfbc95b76 | ||
|
215f28c695 | ||
|
95633d09e8 | ||
|
33c6a4c018 | ||
|
548fc14d36 | ||
|
c614fef092 | ||
|
8ba18d75d6 | ||
|
597d85c6b7 | ||
|
ef0e335c14 | ||
|
f8966a07d9 | ||
|
ee63b31594 | ||
|
1ebb42a6b2 | ||
|
a968edae6c | ||
|
f44e518364 | ||
|
b2a6b01082 | ||
|
abdae1c4d1 | ||
|
f73954e0a7 | ||
|
65776421fe | ||
|
c4b8bff6e2 | ||
|
b17312cac2 | ||
|
37d925a635 | ||
|
b3bb6b1963 | ||
|
42854fdf2c | ||
|
64bb117f6d | ||
|
b7c44cd5ab | ||
|
a02e05f0fa | ||
|
11e7ae0741 | ||
|
b6ce705dac | ||
|
71367a1bb4 | ||
|
f3b2698f6a | ||
|
88e05a251f | ||
|
64d0f0e3b2 | ||
|
9a3a2479d4 | ||
|
61fc1295af | ||
|
ac46cf31fc | ||
|
c8d962c205 | ||
|
407365e375 | ||
|
712466fb53 | ||
|
ff87ae1e00 | ||
|
5e59f895c4 | ||
|
ebbfa79755 | ||
|
fda3bc1e03 | ||
|
e98909b056 | ||
|
d83d2ea9a6 | ||
|
d6413ed98f | ||
|
3147f0bd25 | ||
|
c2760f0a16 | ||
|
859b4afc97 | ||
|
d33bf8150f | ||
|
8ebda1f144 | ||
|
0410d9b186 | ||
|
af3e6e2858 | ||
|
29810e43da | ||
|
2e0f2ad59c | ||
|
411f975a81 | ||
|
3fa76f3f79 | ||
|
5e572b1cce | ||
|
2beab3c01c | ||
|
d80bc65016 | ||
|
2abba086ca |
@@ -31,6 +31,7 @@ endif
|
||||
endif
|
||||
|
||||
LOCAL_C_INCLUDES += \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/include
|
||||
|
||||
MESA_VERSION=$(shell cat $(MESA_TOP)/VERSION)
|
||||
@@ -41,6 +42,19 @@ LOCAL_CFLAGS += \
|
||||
-DANDROID_VERSION=0x0$(MESA_ANDROID_MAJOR_VERSION)0$(MESA_ANDROID_MINOR_VERSION)
|
||||
|
||||
LOCAL_CFLAGS += \
|
||||
-DHAVE___BUILTIN_EXPECT \
|
||||
-DHAVE___BUILTIN_FFS \
|
||||
-DHAVE___BUILTIN_FFSLL \
|
||||
-DHAVE_FUNC_ATTRIBUTE_FLATTEN \
|
||||
-DHAVE_FUNC_ATTRIBUTE_UNUSED \
|
||||
-DHAVE_FUNC_ATTRIBUTE_FORMAT \
|
||||
-DHAVE_FUNC_ATTRIBUTE_PACKED \
|
||||
-DHAVE___BUILTIN_CTZ \
|
||||
-DHAVE___BUILTIN_POPCOUNT \
|
||||
-DHAVE___BUILTIN_POPCOUNTLL \
|
||||
-DHAVE___BUILTIN_CLZ \
|
||||
-DHAVE___BUILTIN_CLZLL \
|
||||
-DHAVE___BUILTIN_UNREACHABLE \
|
||||
-DHAVE_PTHREAD=1 \
|
||||
-fvisibility=hidden \
|
||||
-Wno-sign-compare
|
||||
|
@@ -49,6 +49,7 @@ noinst_HEADERS = \
|
||||
include/c99 \
|
||||
include/c11 \
|
||||
include/D3D9 \
|
||||
include/VG \
|
||||
include/HaikuGL \
|
||||
include/pci_ids
|
||||
|
||||
|
@@ -21,3 +21,6 @@ d22391cb165af4ed2f9a9e5d6233072a432cc969
|
||||
fe5fddd7e2df74233a2a02ae021418485f39d11c
|
||||
# xmlpool: make sure we ship options.h
|
||||
8d8ca64c28170ec7e9ffa01638bcf8fd30a96088
|
||||
|
||||
# The optimisations mentioned are not available in 10.5
|
||||
627c68308683abbd6e563a09af6013a33938a790 i965/fs: in MAD optimizations, switch last argument to be immediate
|
||||
|
15
configure.ac
15
configure.ac
@@ -78,6 +78,7 @@ XCBDRI2_REQUIRED=1.8
|
||||
XCBGLX_REQUIRED=1.8.1
|
||||
XSHMFENCE_REQUIRED=1.1
|
||||
XVMC_REQUIRED=1.0.6
|
||||
PYTHON_MAKO_REQUIRED=0.3.4
|
||||
|
||||
dnl Check for progs
|
||||
AC_PROG_CPP
|
||||
@@ -113,7 +114,19 @@ if test "x$INDENT" != "xcat"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
AX_CHECK_PYTHON_MAKO_MODULE(0.3.4)
|
||||
AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED)
|
||||
|
||||
if test -z "$PYTHON2"; then
|
||||
if test ! -f "$srcdir/src/util/format_srgb.c"; then
|
||||
AC_MSG_ERROR([Python not found - unable to generate sources])
|
||||
fi
|
||||
else
|
||||
if test "x$acv_mako_found" = xno; then
|
||||
if test ! -f "$srcdir/src/mesa/main/format_unpack.c"; then
|
||||
AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_PROG_INSTALL
|
||||
|
||||
|
@@ -31,7 +31,8 @@ because compatibility contexts are not supported.
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
TBD
|
||||
b5b6256a6d46023e16a675257fd11a0f94d7b3e60a76cf112952da3d0fef8e9b mesa-10.5.1.tar.gz
|
||||
ffc51943d15c6812ee7611d053d8980a683fbd6a4986cff567b12cc66637d679 mesa-10.5.1.tar.xz
|
||||
</pre>
|
||||
|
||||
|
||||
|
130
docs/relnotes/10.5.2.html
Normal file
130
docs/relnotes/10.5.2.html
Normal file
@@ -0,0 +1,130 @@
|
||||
<!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 10.5.2 Release Notes / March 28, 2015</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.5.2 is a bug fix release which fixes bugs found since the 10.5.1 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 10.5.2 implements the OpenGL 3.3 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.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
755220e160a9f22fda0dffd47746f997b6e196d03f8edc390df7793aecaaa541 mesa-10.5.2.tar.gz
|
||||
2f4b6fb77c3e7d6f861558d0884a3073f575e1e673dad8d1b0624e78e9c4dd44 mesa-10.5.2.tar.xz
|
||||
</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=88534">Bug 88534</a> - include/c11/threads_posix.h PTHREAD_MUTEX_RECURSIVE_NP not defined</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89328">Bug 89328</a> - python required to build Mesa release tarballs</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89530">Bug 89530</a> - FTBFS in loader: missing fstat</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89590">Bug 89590</a> - Crash in glLinkProgram with shaders with multiple constant arrays</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89680">Bug 89680</a> - Hard link exist in Mesa 10.5.1 sources</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Anuj Phogat (1):</p>
|
||||
<ul>
|
||||
<li>glsl: Generate link error for non-matching gl_FragCoord redeclarations</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (7):</p>
|
||||
<ul>
|
||||
<li>docs: Add sha256 sums for the 10.5.1 release</li>
|
||||
<li>automake: add missing egl files to the tarball</li>
|
||||
<li>st/egl: don't ship the dri2.c link at the tarball</li>
|
||||
<li>loader: include <sys/stat.h> for non-sysfs builds</li>
|
||||
<li>auxiliary/os: fix the android build - s/drm_munmap/os_munmap/</li>
|
||||
<li>cherry-ignore: add commit non applicable for 10.5</li>
|
||||
<li>Update version to 10.5.2</li>
|
||||
</ul>
|
||||
|
||||
<p>Felix Janda (1):</p>
|
||||
<ul>
|
||||
<li>c11/threads: Use PTHREAD_MUTEX_RECURSIVE by default</li>
|
||||
</ul>
|
||||
|
||||
<p>Francisco Jerez (1):</p>
|
||||
<ul>
|
||||
<li>i965: Set nr_params to the number of uniform components in the VS/GS path.</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (2):</p>
|
||||
<ul>
|
||||
<li>freedreno/a3xx: use the same layer size for all slices</li>
|
||||
<li>freedreno: fix slice pitch calculations</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (1):</p>
|
||||
<ul>
|
||||
<li>radeonsi: increase coords array size for radeon_llvm_emit_prepare_cube_coords</li>
|
||||
</ul>
|
||||
|
||||
<p>Mario Kleiner (2):</p>
|
||||
<ul>
|
||||
<li>glx: Handle out-of-sequence swap completion events correctly. (v2)</li>
|
||||
<li>mapi: Make private copies of name strings provided by client.</li>
|
||||
</ul>
|
||||
|
||||
<p>Rob Clark (1):</p>
|
||||
<ul>
|
||||
<li>freedreno: update generated headers</li>
|
||||
</ul>
|
||||
|
||||
<p>Samuel Iglesias Gonsalvez (2):</p>
|
||||
<ul>
|
||||
<li>glsl: optimize (0 cmp x + y) into (-x cmp y).</li>
|
||||
<li>configure: Introduce new output variable to ax_check_python_mako_module.m4</li>
|
||||
</ul>
|
||||
|
||||
<p>Tapani Pälli (1):</p>
|
||||
<ul>
|
||||
<li>glsl: fix names in lower_constant_arrays_to_uniforms</li>
|
||||
</ul>
|
||||
|
||||
<p>Tom Stellard (1):</p>
|
||||
<ul>
|
||||
<li>clover: Return 0 as storage size for local kernel args that are not set v2</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
125
docs/relnotes/10.5.3.html
Normal file
125
docs/relnotes/10.5.3.html
Normal file
@@ -0,0 +1,125 @@
|
||||
<!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 10.5.3 Release Notes / April 12, 2015</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.5.3 is a bug fix release which fixes bugs found since the 10.5.2 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 10.5.3 implements the OpenGL 3.3 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.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
2371b8e210ccd19f61dd94b6664d612e5a479ba7d431a074512d87633bd6aeb4 mesa-10.5.3.tar.gz
|
||||
8701ee1be4f5c03238f5e63c1a9bd4cc03a2f6c0155ed42a1ae7d58f18912ba2 mesa-10.5.3.tar.xz
|
||||
</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=83962">Bug 83962</a> - [HSW/BYT]Piglit spec_ARB_gpu_shader5_arb_gpu_shader5-emitstreamvertex_nodraw fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89679">Bug 89679</a> - [NV50] Portal/Half-Life 2 will not start (native Steam)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89746">Bug 89746</a> - Mesa and LLVM 3.6+ break opengl for genymotion</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89754">Bug 89754</a> - vertexAttrib fails WebGL Conformance test with mesa drivers</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89758">Bug 89758</a> - pow WebGL Conformance test with mesa drivers</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89759">Bug 89759</a> - WebGL OGL ES GLSL conformance test with mesa drivers fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89905">Bug 89905</a> - scons build broken on 10.5.2 due to activated vega st</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Dave Airlie (1):</p>
|
||||
<ul>
|
||||
<li>st_glsl_to_tgsi: only do mov copy propagation on temps (v2)</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (5):</p>
|
||||
<ul>
|
||||
<li>docs: Add sha256 sums for the 10.5.2 release</li>
|
||||
<li>xmlpool: don't forget to ship the MOS</li>
|
||||
<li>configure.ac: error out if python/mako is not found when required</li>
|
||||
<li>dist: add the VG depedencies into the tarball</li>
|
||||
<li>Update version to 10.5.3</li>
|
||||
</ul>
|
||||
|
||||
<p>Iago Toral Quiroga (1):</p>
|
||||
<ul>
|
||||
<li>i965: Do not render primitives in non-zero streams then TF is disabled</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (7):</p>
|
||||
<ul>
|
||||
<li>st/mesa: update arrays when the current attrib has been updated</li>
|
||||
<li>nv50/ir: take postFactor into account when doing peephole optimizations</li>
|
||||
<li>nv50/ir/gk110: fix offset flag position for TXD opcode</li>
|
||||
<li>freedreno/a3xx: fix 3d texture layout</li>
|
||||
<li>freedreno/a3xx: point size should not be divided by 2</li>
|
||||
<li>nv50: allocate more offset space for occlusion queries</li>
|
||||
<li>nv50,nvc0: limit the y-tiling of 3d textures to the first level's tiling</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (2):</p>
|
||||
<ul>
|
||||
<li>i965: Fix instanced geometry shaders on Gen8+.</li>
|
||||
<li>i965: Add forgotten multi-stream code to Gen8 SOL state.</li>
|
||||
</ul>
|
||||
|
||||
<p>Marcin Ślusarz (1):</p>
|
||||
<ul>
|
||||
<li>nouveau: synchronize "scratch runout" destruction with the command stream</li>
|
||||
</ul>
|
||||
|
||||
<p>Michel Dänzer (1):</p>
|
||||
<ul>
|
||||
<li>radeonsi: Cache LLVMTargetMachineRef in context instead of in screen</li>
|
||||
</ul>
|
||||
|
||||
<p>Tom Stellard (1):</p>
|
||||
<ul>
|
||||
<li>clover: Return CL_BUILD_ERROR for CL_PROGRAM_BUILD_STATUS when compilation fails v2</li>
|
||||
</ul>
|
||||
|
||||
<p>Ville Syrjälä (1):</p>
|
||||
<ul>
|
||||
<li>i965: Fix URB size for CHV</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
124
docs/relnotes/10.5.4.html
Normal file
124
docs/relnotes/10.5.4.html
Normal file
@@ -0,0 +1,124 @@
|
||||
<!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 10.5.4 Release Notes / April 24, 2015</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.5.4 is a bug fix release which fixes bugs found since the 10.5.3 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 10.5.4 implements the OpenGL 3.3 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.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
TBD
|
||||
</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=69226">Bug 69226</a> - Cannot enable basic shaders with Second Life aborts attempt</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71591">Bug 71591</a> - Second Life shaders fail to compile (extension declared in middle of shader)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=81025">Bug 81025</a> - [IVB/BYT Bisected]Piglit spec_ARB_draw_indirect_arb_draw_indirect-draw-elements-prim-restart-ugly fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89457">Bug 89457</a> - [BSW Bisected]ogles3conform ES3-CTS.gtf.GL3Tests.shadow.shadow_execution_vert fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=89957">Bug 89957</a> - vm protection faults in piglit lest: texsubimage cube_map_array pbo</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Brian Paul (1):</p>
|
||||
<ul>
|
||||
<li>glsl: rewrite glsl_type::record_key_hash() to avoid buffer overflow</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (2):</p>
|
||||
<ul>
|
||||
<li>st/mesa: convert sub image for cube map arrays to 2d arrays for upload</li>
|
||||
<li>st/mesa: align cube map arrays layers</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (11):</p>
|
||||
<ul>
|
||||
<li>docs: Add 256 sums for the 10.5.3 release</li>
|
||||
<li>radeonsi: remove unused si_dump_key()</li>
|
||||
<li>android: use LOCAL_SHARED_LIBRARIES over TARGET_OUT_HEADERS</li>
|
||||
<li>android: add $(mesa_top)/src include to the whole of mesa</li>
|
||||
<li>android: egl: add libsync_cflags to the build</li>
|
||||
<li>android: dri/common: conditionally include drm_cflags/set __NOT_HAVE_DRM_H</li>
|
||||
<li>android: add HAVE__BUILTIN_* and HAVE_FUNC_ATTRIBUTE_* defines</li>
|
||||
<li>android: add $(mesa_top)/src/mesa/main to the includes list</li>
|
||||
<li>android: dri: link against libmesa_util</li>
|
||||
<li>android: mesa: fix the path of the SSE4_1 optimisations</li>
|
||||
<li>Update version to 10.5.4</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (1):</p>
|
||||
<ul>
|
||||
<li>nir: Fix typo in "ushr by 0" algebraic replacement</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (2):</p>
|
||||
<ul>
|
||||
<li>i965: Fix software primitive restart with indirect draws.</li>
|
||||
<li>drirc: Add "Second Life" quirk (allow_glsl_extension_directive_midshader).</li>
|
||||
</ul>
|
||||
|
||||
<p>Kristian Høgsberg (1):</p>
|
||||
<ul>
|
||||
<li>i965: Rewrite ir_tex to ir_txl with lod 0 for vertex shaders</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (2):</p>
|
||||
<ul>
|
||||
<li>glsl_to_tgsi: fix out-of-bounds constant access and crash for uniforms</li>
|
||||
<li>glsl_to_tgsi: don't use a potentially-undefined immediate for ir_query_levels</li>
|
||||
</ul>
|
||||
|
||||
<p>Mathias Froehlich (1):</p>
|
||||
<ul>
|
||||
<li>i965: Flush batchbuffer containing the query on glQueryCounter.</li>
|
||||
</ul>
|
||||
|
||||
<p>Mauro Rossi (2):</p>
|
||||
<ul>
|
||||
<li>android: mesa: generate the format_{un,}pack.[ch] sources</li>
|
||||
<li>android: add inital NIR build</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -177,13 +177,8 @@ mtx_init(mtx_t *mtx, int type)
|
||||
&& type != (mtx_try|mtx_recursive))
|
||||
return thrd_error;
|
||||
pthread_mutexattr_init(&attr);
|
||||
if ((type & mtx_recursive) != 0) {
|
||||
#if defined(__linux__) || defined(__linux)
|
||||
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
|
||||
#else
|
||||
if ((type & mtx_recursive) != 0)
|
||||
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
||||
#endif
|
||||
}
|
||||
pthread_mutex_init(mtx, &attr);
|
||||
pthread_mutexattr_destroy(&attr);
|
||||
return thrd_success;
|
||||
|
@@ -54,8 +54,10 @@ else:
|
||||
" | $PYTHON2 -
|
||||
|
||||
if test $? -ne 0 ; then
|
||||
AC_MSG_ERROR(mako $1 or later is required.)
|
||||
AC_MSG_RESULT(no)
|
||||
AC_SUBST(acv_mako_found, 'no')
|
||||
else
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_SUBST(acv_mako_found, 'yes')
|
||||
fi
|
||||
])
|
||||
|
@@ -53,7 +53,10 @@ if HAVE_GALLIUM
|
||||
SUBDIRS += gallium
|
||||
endif
|
||||
|
||||
EXTRA_DIST = egl/docs getopt hgl SConscript
|
||||
EXTRA_DIST = \
|
||||
egl/drivers/haiku \
|
||||
egl/docs \
|
||||
getopt hgl SConscript
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/include/ \
|
||||
|
@@ -40,12 +40,18 @@ LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src/egl/main \
|
||||
$(MESA_TOP)/src/loader \
|
||||
$(TARGET_OUT_HEADERS)/libdrm \
|
||||
$(DRM_GRALLOC_TOP)
|
||||
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
libmesa_loader
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm
|
||||
|
||||
ifeq ($(shell echo "$(MESA_ANDROID_VERSION) >= 4.2" | bc),1)
|
||||
LOCAL_SHARED_LIBRARIES += \
|
||||
libsync
|
||||
endif
|
||||
|
||||
LOCAL_MODULE := libmesa_egl_dri2
|
||||
|
||||
include $(MESA_COMMON_MK)
|
||||
|
@@ -64,3 +64,5 @@ if HAVE_EGL_PLATFORM_DRM
|
||||
libegl_dri2_la_SOURCES += platform_drm.c
|
||||
AM_CFLAGS += -DHAVE_DRM_PLATFORM
|
||||
endif
|
||||
|
||||
EXTRA_DIST = SConscript
|
||||
|
@@ -33,8 +33,7 @@ LOCAL_SRC_FILES := \
|
||||
$(VL_STUB_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(GALLIUM_TOP)/auxiliary/util \
|
||||
$(MESA_TOP)/src
|
||||
$(GALLIUM_TOP)/auxiliary/util
|
||||
|
||||
LOCAL_MODULE := libmesa_gallium
|
||||
|
||||
|
@@ -70,8 +70,8 @@ static INLINE void *os_mmap(void *addr, size_t length, int prot, int flags,
|
||||
return __mmap2(addr, length, prot, flags, fd, (size_t) (offset >> 12));
|
||||
}
|
||||
|
||||
# define drm_munmap(addr, length) \
|
||||
munmap(addr, length)
|
||||
# define os_munmap(addr, length) \
|
||||
munmap(addr, length)
|
||||
|
||||
#else
|
||||
/* assume large file support exists */
|
||||
|
@@ -34,10 +34,9 @@ LOCAL_CFLAGS := \
|
||||
-Wno-packed-bitfield-compat
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(LOCAL_PATH)/ir3 \
|
||||
$(TARGET_OUT_HEADERS)/libdrm \
|
||||
$(TARGET_OUT_HEADERS)/freedreno
|
||||
$(LOCAL_PATH)/ir3
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_freedreno
|
||||
LOCAL_MODULE := libmesa_pipe_freedreno
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -13,7 +13,7 @@ The rules-ng-ng source files this header was generated from are:
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-06-02 15:21:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 10551 bytes, from 2014-11-13 22:44:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 15085 bytes, from 2014-12-20 21:49:41)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64848 bytes, from 2015-02-20 18:21:24)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64771 bytes, from 2015-03-15 21:55:57)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 51942 bytes, from 2015-02-24 17:14:02)
|
||||
|
||||
Copyright (C) 2013-2014 by the following authors:
|
||||
|
@@ -13,7 +13,7 @@ The rules-ng-ng source files this header was generated from are:
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-06-02 15:21:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 10551 bytes, from 2014-11-13 22:44:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 15085 bytes, from 2014-12-20 21:49:41)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64848 bytes, from 2015-02-20 18:21:24)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64771 bytes, from 2015-03-15 21:55:57)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 51942 bytes, from 2015-02-24 17:14:02)
|
||||
|
||||
Copyright (C) 2013-2015 by the following authors:
|
||||
@@ -2677,7 +2677,7 @@ static inline uint32_t A3XX_TEX_CONST_2_SWAP(enum a3xx_color_swap val)
|
||||
}
|
||||
|
||||
#define REG_A3XX_TEX_CONST_3 0x00000003
|
||||
#define A3XX_TEX_CONST_3_LAYERSZ1__MASK 0x0000000f
|
||||
#define A3XX_TEX_CONST_3_LAYERSZ1__MASK 0x00001fff
|
||||
#define A3XX_TEX_CONST_3_LAYERSZ1__SHIFT 0
|
||||
static inline uint32_t A3XX_TEX_CONST_3_LAYERSZ1(uint32_t val)
|
||||
{
|
||||
|
@@ -50,7 +50,7 @@ fd3_rasterizer_state_create(struct pipe_context *pctx,
|
||||
|
||||
if (cso->point_size_per_vertex) {
|
||||
psize_min = util_get_min_point_size(cso);
|
||||
psize_max = 8192;
|
||||
psize_max = 4092;
|
||||
} else {
|
||||
/* Force the point size to be as if the vertex output was disabled. */
|
||||
psize_min = cso->point_size;
|
||||
@@ -67,9 +67,9 @@ fd3_rasterizer_state_create(struct pipe_context *pctx,
|
||||
*/
|
||||
so->gras_cl_clip_cntl = A3XX_GRAS_CL_CLIP_CNTL_IJ_PERSP_CENTER; /* ??? */
|
||||
so->gras_su_point_minmax =
|
||||
A3XX_GRAS_SU_POINT_MINMAX_MIN(psize_min/2) |
|
||||
A3XX_GRAS_SU_POINT_MINMAX_MAX(psize_max/2);
|
||||
so->gras_su_point_size = A3XX_GRAS_SU_POINT_SIZE(cso->point_size/2);
|
||||
A3XX_GRAS_SU_POINT_MINMAX_MIN(psize_min) |
|
||||
A3XX_GRAS_SU_POINT_MINMAX_MAX(psize_max);
|
||||
so->gras_su_point_size = A3XX_GRAS_SU_POINT_SIZE(cso->point_size);
|
||||
so->gras_su_poly_offset_scale =
|
||||
A3XX_GRAS_SU_POLY_OFFSET_SCALE_VAL(cso->offset_scale);
|
||||
so->gras_su_poly_offset_offset =
|
||||
|
@@ -212,6 +212,7 @@ fd3_sampler_view_create(struct pipe_context *pctx, struct pipe_resource *prsc,
|
||||
struct fd_resource *rsc = fd_resource(prsc);
|
||||
unsigned lvl = cso->u.tex.first_level;
|
||||
unsigned miplevels = cso->u.tex.last_level - lvl;
|
||||
uint32_t sz2 = 0;
|
||||
|
||||
if (!so)
|
||||
return NULL;
|
||||
@@ -252,8 +253,10 @@ fd3_sampler_view_create(struct pipe_context *pctx, struct pipe_resource *prsc,
|
||||
case PIPE_TEXTURE_3D:
|
||||
so->texconst3 =
|
||||
A3XX_TEX_CONST_3_DEPTH(u_minify(prsc->depth0, lvl)) |
|
||||
A3XX_TEX_CONST_3_LAYERSZ1(rsc->slices[0].size0) |
|
||||
A3XX_TEX_CONST_3_LAYERSZ2(rsc->slices[0].size0);
|
||||
A3XX_TEX_CONST_3_LAYERSZ1(rsc->slices[lvl].size0);
|
||||
while (lvl < cso->u.tex.last_level && sz2 != rsc->slices[lvl+1].size0)
|
||||
sz2 = rsc->slices[++lvl].size0;
|
||||
so->texconst3 |= A3XX_TEX_CONST_3_LAYERSZ2(sz2);
|
||||
break;
|
||||
default:
|
||||
so->texconst3 = 0x00000000;
|
||||
|
@@ -13,7 +13,7 @@ The rules-ng-ng source files this header was generated from are:
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-06-02 15:21:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 10551 bytes, from 2014-11-13 22:44:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 15085 bytes, from 2014-12-20 21:49:41)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64848 bytes, from 2015-02-20 18:21:24)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64771 bytes, from 2015-03-15 21:55:57)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 51942 bytes, from 2015-02-24 17:14:02)
|
||||
|
||||
Copyright (C) 2013-2015 by the following authors:
|
||||
|
@@ -13,7 +13,7 @@ The rules-ng-ng source files this header was generated from are:
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-06-02 15:21:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 10551 bytes, from 2014-11-13 22:44:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 15085 bytes, from 2014-12-20 21:49:41)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64848 bytes, from 2015-02-20 18:21:24)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64771 bytes, from 2015-03-15 21:55:57)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 51942 bytes, from 2015-02-24 17:14:02)
|
||||
|
||||
Copyright (C) 2013-2014 by the following authors:
|
||||
|
@@ -13,7 +13,7 @@ The rules-ng-ng source files this header was generated from are:
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-06-02 15:21:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 10551 bytes, from 2014-11-13 22:44:30)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 15085 bytes, from 2014-12-20 21:49:41)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64848 bytes, from 2015-02-20 18:21:24)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 64771 bytes, from 2015-03-15 21:55:57)
|
||||
- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 51942 bytes, from 2015-02-24 17:14:02)
|
||||
|
||||
Copyright (C) 2013-2014 by the following authors:
|
||||
|
@@ -213,9 +213,22 @@ setup_slices(struct fd_resource *rsc, uint32_t alignment)
|
||||
for (level = 0; level <= prsc->last_level; level++) {
|
||||
struct fd_resource_slice *slice = fd_resource_slice(rsc, level);
|
||||
|
||||
slice->pitch = align(width, 32);
|
||||
slice->pitch = width = align(width, 32);
|
||||
slice->offset = size;
|
||||
slice->size0 = align(slice->pitch * height * rsc->cpp, alignment);
|
||||
/* 1d array and 2d array textures must all have the same layer size
|
||||
* for each miplevel on a3xx. 3d textures can have different layer
|
||||
* sizes for high levels, but the hw auto-sizer is buggy (or at least
|
||||
* different than what this code does), so as soon as the layer size
|
||||
* range gets into range, we stop reducing it.
|
||||
*/
|
||||
if (prsc->target == PIPE_TEXTURE_3D && (
|
||||
level == 1 ||
|
||||
(level > 1 && rsc->slices[level - 1].size0 > 0xf000)))
|
||||
slice->size0 = align(slice->pitch * height * rsc->cpp, alignment);
|
||||
else if (level == 0 || rsc->layer_first || alignment == 1)
|
||||
slice->size0 = align(slice->pitch * height * rsc->cpp, alignment);
|
||||
else
|
||||
slice->size0 = rsc->slices[level - 1].size0;
|
||||
|
||||
size += slice->size0 * depth * layers_in_level;
|
||||
|
||||
|
@@ -314,7 +314,7 @@ fd_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param)
|
||||
case PIPE_CAPF_MAX_LINE_WIDTH_AA:
|
||||
case PIPE_CAPF_MAX_POINT_WIDTH:
|
||||
case PIPE_CAPF_MAX_POINT_WIDTH_AA:
|
||||
return 8192.0f;
|
||||
return 4092.0f;
|
||||
case PIPE_CAPF_MAX_TEXTURE_ANISOTROPY:
|
||||
return 16.0f;
|
||||
case PIPE_CAPF_MAX_TEXTURE_LOD_BIAS:
|
||||
|
@@ -36,9 +36,7 @@ LOCAL_SRC_FILES := \
|
||||
$(NVC0_CODEGEN_SOURCES) \
|
||||
$(NVC0_C_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(TARGET_OUT_HEADERS)/libdrm
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_nouveau
|
||||
LOCAL_MODULE := libmesa_pipe_nouveau
|
||||
|
||||
include external/stlport/libstlport.mk
|
||||
|
@@ -1116,6 +1116,7 @@ CodeEmitterGK110::emitTEX(const TexInstruction *i)
|
||||
if (i->tex.useOffsets == 1) {
|
||||
switch (i->op) {
|
||||
case OP_TXF: code[1] |= 0x200; break;
|
||||
case OP_TXD: code[1] |= 0x00400000; break;
|
||||
default: code[1] |= 0x800; break;
|
||||
}
|
||||
}
|
||||
|
@@ -422,7 +422,9 @@ ConstantFolding::expr(Instruction *i,
|
||||
b->data.f32 = 0.0f;
|
||||
}
|
||||
switch (i->dType) {
|
||||
case TYPE_F32: res.data.f32 = a->data.f32 * b->data.f32; break;
|
||||
case TYPE_F32:
|
||||
res.data.f32 = a->data.f32 * b->data.f32 * exp2f(i->postFactor);
|
||||
break;
|
||||
case TYPE_F64: res.data.f64 = a->data.f64 * b->data.f64; break;
|
||||
case TYPE_S32:
|
||||
if (i->subOp == NV50_IR_SUBOP_MUL_HIGH) {
|
||||
@@ -550,6 +552,7 @@ ConstantFolding::expr(Instruction *i,
|
||||
|
||||
i->src(0).mod = Modifier(0);
|
||||
i->src(1).mod = Modifier(0);
|
||||
i->postFactor = 0;
|
||||
|
||||
i->setSrc(0, new_ImmediateValue(i->bb->getProgram(), res.data.u32));
|
||||
i->setSrc(1, NULL);
|
||||
@@ -653,7 +656,7 @@ ConstantFolding::tryCollapseChainedMULs(Instruction *mul2,
|
||||
Instruction *insn;
|
||||
Instruction *mul1 = NULL; // mul1 before mul2
|
||||
int e = 0;
|
||||
float f = imm2.reg.data.f32;
|
||||
float f = imm2.reg.data.f32 * exp2f(mul2->postFactor);
|
||||
ImmediateValue imm1;
|
||||
|
||||
assert(mul2->op == OP_MUL && mul2->dType == TYPE_F32);
|
||||
@@ -753,9 +756,10 @@ ConstantFolding::opnd(Instruction *i, ImmediateValue &imm0, int s)
|
||||
i->op = OP_MOV;
|
||||
i->setSrc(0, new_ImmediateValue(prog, 0u));
|
||||
i->src(0).mod = Modifier(0);
|
||||
i->postFactor = 0;
|
||||
i->setSrc(1, NULL);
|
||||
} else
|
||||
if (imm0.isInteger(1) || imm0.isInteger(-1)) {
|
||||
if (!i->postFactor && (imm0.isInteger(1) || imm0.isInteger(-1))) {
|
||||
if (imm0.isNegative())
|
||||
i->src(t).mod = i->src(t).mod ^ Modifier(NV50_IR_MOD_NEG);
|
||||
i->op = i->src(t).mod.getOp();
|
||||
@@ -768,7 +772,7 @@ ConstantFolding::opnd(Instruction *i, ImmediateValue &imm0, int s)
|
||||
i->src(0).mod = 0;
|
||||
i->setSrc(1, NULL);
|
||||
} else
|
||||
if (imm0.isInteger(2) || imm0.isInteger(-2)) {
|
||||
if (!i->postFactor && (imm0.isInteger(2) || imm0.isInteger(-2))) {
|
||||
if (imm0.isNegative())
|
||||
i->src(t).mod = i->src(t).mod ^ Modifier(NV50_IR_MOD_NEG);
|
||||
i->op = OP_ADD;
|
||||
|
@@ -846,17 +846,28 @@ nouveau_scratch_bo_alloc(struct nouveau_context *nv, struct nouveau_bo **pbo,
|
||||
4096, size, NULL, pbo);
|
||||
}
|
||||
|
||||
static void
|
||||
nouveau_scratch_unref_bos(void *d)
|
||||
{
|
||||
struct runout *b = d;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < b->nr; ++i)
|
||||
nouveau_bo_ref(NULL, &b->bo[i]);
|
||||
|
||||
FREE(b);
|
||||
}
|
||||
|
||||
void
|
||||
nouveau_scratch_runout_release(struct nouveau_context *nv)
|
||||
{
|
||||
if (!nv->scratch.nr_runout)
|
||||
if (!nv->scratch.runout)
|
||||
return;
|
||||
|
||||
if (!nouveau_fence_work(nv->screen->fence.current, nouveau_scratch_unref_bos,
|
||||
nv->scratch.runout))
|
||||
return;
|
||||
do {
|
||||
--nv->scratch.nr_runout;
|
||||
nouveau_bo_ref(NULL, &nv->scratch.runout[nv->scratch.nr_runout]);
|
||||
} while (nv->scratch.nr_runout);
|
||||
|
||||
FREE(nv->scratch.runout);
|
||||
nv->scratch.end = 0;
|
||||
nv->scratch.runout = NULL;
|
||||
}
|
||||
@@ -868,21 +879,26 @@ static INLINE boolean
|
||||
nouveau_scratch_runout(struct nouveau_context *nv, unsigned size)
|
||||
{
|
||||
int ret;
|
||||
const unsigned n = nv->scratch.nr_runout++;
|
||||
unsigned n;
|
||||
|
||||
nv->scratch.runout = REALLOC(nv->scratch.runout,
|
||||
(n + 0) * sizeof(*nv->scratch.runout),
|
||||
(n + 1) * sizeof(*nv->scratch.runout));
|
||||
nv->scratch.runout[n] = NULL;
|
||||
if (nv->scratch.runout)
|
||||
n = nv->scratch.runout->nr;
|
||||
else
|
||||
n = 0;
|
||||
nv->scratch.runout = REALLOC(nv->scratch.runout, n == 0 ? 0 :
|
||||
(sizeof(*nv->scratch.runout) + (n + 0) * sizeof(void *)),
|
||||
sizeof(*nv->scratch.runout) + (n + 1) * sizeof(void *));
|
||||
nv->scratch.runout->nr = n + 1;
|
||||
nv->scratch.runout->bo[n] = NULL;
|
||||
|
||||
ret = nouveau_scratch_bo_alloc(nv, &nv->scratch.runout[n], size);
|
||||
ret = nouveau_scratch_bo_alloc(nv, &nv->scratch.runout->bo[n], size);
|
||||
if (!ret) {
|
||||
ret = nouveau_bo_map(nv->scratch.runout[n], 0, NULL);
|
||||
ret = nouveau_bo_map(nv->scratch.runout->bo[n], 0, NULL);
|
||||
if (ret)
|
||||
nouveau_bo_ref(NULL, &nv->scratch.runout[--nv->scratch.nr_runout]);
|
||||
nouveau_bo_ref(NULL, &nv->scratch.runout->bo[--nv->scratch.runout->nr]);
|
||||
}
|
||||
if (!ret) {
|
||||
nv->scratch.current = nv->scratch.runout[n];
|
||||
nv->scratch.current = nv->scratch.runout->bo[n];
|
||||
nv->scratch.offset = 0;
|
||||
nv->scratch.end = size;
|
||||
nv->scratch.map = nv->scratch.current->map;
|
||||
|
@@ -40,8 +40,10 @@ struct nouveau_context {
|
||||
unsigned end;
|
||||
struct nouveau_bo *bo[NOUVEAU_MAX_SCRATCH_BUFS];
|
||||
struct nouveau_bo *current;
|
||||
struct nouveau_bo **runout;
|
||||
unsigned nr_runout;
|
||||
struct runout {
|
||||
unsigned nr;
|
||||
struct nouveau_bo *bo[0];
|
||||
} *runout;
|
||||
unsigned bo_size;
|
||||
} scratch;
|
||||
|
||||
@@ -71,7 +73,7 @@ static INLINE void
|
||||
nouveau_scratch_done(struct nouveau_context *nv)
|
||||
{
|
||||
nv->scratch.wrap = nv->scratch.id;
|
||||
if (unlikely(nv->scratch.nr_runout))
|
||||
if (unlikely(nv->scratch.runout))
|
||||
nouveau_scratch_runout_release(nv);
|
||||
}
|
||||
|
||||
|
@@ -29,7 +29,8 @@
|
||||
#include "nv50/nv50_resource.h"
|
||||
|
||||
uint32_t
|
||||
nv50_tex_choose_tile_dims_helper(unsigned nx, unsigned ny, unsigned nz)
|
||||
nv50_tex_choose_tile_dims_helper(unsigned nx, unsigned ny, unsigned nz,
|
||||
boolean is_3d)
|
||||
{
|
||||
uint32_t tile_mode = 0x000;
|
||||
|
||||
@@ -41,7 +42,7 @@ nv50_tex_choose_tile_dims_helper(unsigned nx, unsigned ny, unsigned nz)
|
||||
else
|
||||
if (ny > 8) tile_mode = 0x010; /* height 16 tiles */
|
||||
|
||||
if (nz == 1)
|
||||
if (!is_3d)
|
||||
return tile_mode;
|
||||
else
|
||||
if (tile_mode > 0x020)
|
||||
@@ -52,14 +53,15 @@ nv50_tex_choose_tile_dims_helper(unsigned nx, unsigned ny, unsigned nz)
|
||||
if (nz > 8) return tile_mode | 0x400; /* depth 16 tiles */
|
||||
if (nz > 4) return tile_mode | 0x300; /* depth 8 tiles */
|
||||
if (nz > 2) return tile_mode | 0x200; /* depth 4 tiles */
|
||||
if (nz > 1) return tile_mode | 0x100; /* depth 2 tiles */
|
||||
|
||||
return tile_mode | 0x100;
|
||||
return tile_mode;
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
nv50_tex_choose_tile_dims(unsigned nx, unsigned ny, unsigned nz)
|
||||
nv50_tex_choose_tile_dims(unsigned nx, unsigned ny, unsigned nz, boolean is_3d)
|
||||
{
|
||||
return nv50_tex_choose_tile_dims_helper(nx, ny * 2, nz);
|
||||
return nv50_tex_choose_tile_dims_helper(nx, ny * 2, nz, is_3d);
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
@@ -304,7 +306,7 @@ nv50_miptree_init_layout_tiled(struct nv50_miptree *mt)
|
||||
|
||||
lvl->offset = mt->total_size;
|
||||
|
||||
lvl->tile_mode = nv50_tex_choose_tile_dims(nbx, nby, d);
|
||||
lvl->tile_mode = nv50_tex_choose_tile_dims(nbx, nby, d, mt->layout_3d);
|
||||
|
||||
tsx = NV50_TILE_SIZE_X(lvl->tile_mode); /* x is tile row pitch in bytes */
|
||||
tsy = NV50_TILE_SIZE_Y(lvl->tile_mode);
|
||||
|
@@ -41,7 +41,7 @@ struct nv50_query {
|
||||
uint32_t sequence;
|
||||
struct nouveau_bo *bo;
|
||||
uint32_t base;
|
||||
uint32_t offset; /* base + i * 16 */
|
||||
uint32_t offset; /* base + i * 32 */
|
||||
boolean ready;
|
||||
boolean flushed;
|
||||
boolean is64bit;
|
||||
@@ -116,8 +116,8 @@ nv50_query_create(struct pipe_context *pipe, unsigned type, unsigned index)
|
||||
q->type = type;
|
||||
|
||||
if (q->type == PIPE_QUERY_OCCLUSION_COUNTER) {
|
||||
q->offset -= 16;
|
||||
q->data -= 16 / sizeof(*q->data); /* we advance before query_begin ! */
|
||||
q->offset -= 32;
|
||||
q->data -= 32 / sizeof(*q->data); /* we advance before query_begin ! */
|
||||
}
|
||||
|
||||
return (struct pipe_query *)q;
|
||||
@@ -150,8 +150,8 @@ nv50_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
||||
* initialized it to TRUE.
|
||||
*/
|
||||
if (q->type == PIPE_QUERY_OCCLUSION_COUNTER) {
|
||||
q->offset += 16;
|
||||
q->data += 16 / sizeof(*q->data);
|
||||
q->offset += 32;
|
||||
q->data += 32 / sizeof(*q->data);
|
||||
if (q->offset - q->base == NV50_QUERY_ALLOC_SPACE)
|
||||
nv50_query_allocate(nv50, q, NV50_QUERY_ALLOC_SPACE);
|
||||
|
||||
|
@@ -34,7 +34,8 @@ nv50_screen_init_resource_functions(struct pipe_screen *pscreen);
|
||||
#endif /* __NVC0_RESOURCE_H__ */
|
||||
|
||||
uint32_t
|
||||
nv50_tex_choose_tile_dims_helper(unsigned nx, unsigned ny, unsigned nz);
|
||||
nv50_tex_choose_tile_dims_helper(unsigned nx, unsigned ny, unsigned nz,
|
||||
boolean is_3d);
|
||||
|
||||
struct nv50_miptree_level {
|
||||
uint32_t offset;
|
||||
|
@@ -29,9 +29,9 @@
|
||||
#include "nvc0/nvc0_resource.h"
|
||||
|
||||
static uint32_t
|
||||
nvc0_tex_choose_tile_dims(unsigned nx, unsigned ny, unsigned nz)
|
||||
nvc0_tex_choose_tile_dims(unsigned nx, unsigned ny, unsigned nz, boolean is_3d)
|
||||
{
|
||||
return nv50_tex_choose_tile_dims_helper(nx, ny, nz);
|
||||
return nv50_tex_choose_tile_dims_helper(nx, ny, nz, is_3d);
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
@@ -211,7 +211,7 @@ nvc0_miptree_init_layout_tiled(struct nv50_miptree *mt)
|
||||
|
||||
lvl->offset = mt->total_size;
|
||||
|
||||
lvl->tile_mode = nvc0_tex_choose_tile_dims(nbx, nby, d);
|
||||
lvl->tile_mode = nvc0_tex_choose_tile_dims(nbx, nby, d, mt->layout_3d);
|
||||
|
||||
tsx = NVC0_TILE_SIZE_X(lvl->tile_mode); /* x is tile row pitch in bytes */
|
||||
tsy = NVC0_TILE_SIZE_Y(lvl->tile_mode);
|
||||
|
@@ -33,9 +33,10 @@ LOCAL_SRC_FILES := $(C_SOURCES)
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src/glsl \
|
||||
$(MESA_TOP)/src/mesa \
|
||||
$(TARGET_OUT_HEADERS)/libdrm
|
||||
$(MESA_TOP)/src/mesa
|
||||
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_radeon
|
||||
LOCAL_MODULE := libmesa_pipe_r300
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -30,8 +30,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(C_SOURCES) $(CXX_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/libdrm
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_radeon
|
||||
LOCAL_MODULE := libmesa_pipe_r600
|
||||
|
||||
include external/stlport/libstlport.mk
|
||||
|
@@ -30,8 +30,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(C_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/libdrm
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_radeon
|
||||
LOCAL_MODULE := libmesa_pipe_radeon
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -748,7 +748,7 @@ static void txp_fetch_args(
|
||||
const struct tgsi_full_instruction * inst = emit_data->inst;
|
||||
LLVMValueRef src_w;
|
||||
unsigned chan;
|
||||
LLVMValueRef coords[4];
|
||||
LLVMValueRef coords[5];
|
||||
|
||||
emit_data->dst_type = LLVMVectorType(bld_base->base.elem_type, 4);
|
||||
src_w = lp_build_emit_fetch(bld_base, emit_data->inst, 0, TGSI_CHAN_W);
|
||||
|
@@ -30,8 +30,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(C_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/libdrm
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_radeon
|
||||
LOCAL_MODULE := libmesa_pipe_radeonsi
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -130,7 +130,8 @@ static void *si_create_compute_state(
|
||||
for (i = 0; i < program->num_kernels; i++) {
|
||||
LLVMModuleRef mod = radeon_llvm_get_kernel_module(program->llvm_ctx, i,
|
||||
code, header->num_bytes);
|
||||
si_compile_llvm(sctx->screen, &program->kernels[i], mod);
|
||||
si_compile_llvm(sctx->screen, &program->kernels[i], sctx->tm,
|
||||
mod);
|
||||
LLVMDisposeModule(mod);
|
||||
}
|
||||
}
|
||||
|
@@ -69,6 +69,11 @@ static void si_destroy_context(struct pipe_context *context)
|
||||
si_pm4_cleanup(sctx);
|
||||
|
||||
r600_common_context_cleanup(&sctx->b);
|
||||
|
||||
#if HAVE_LLVM >= 0x0306
|
||||
LLVMDisposeTargetMachine(sctx->tm);
|
||||
#endif
|
||||
|
||||
FREE(sctx);
|
||||
}
|
||||
|
||||
@@ -77,6 +82,12 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, void *
|
||||
struct si_context *sctx = CALLOC_STRUCT(si_context);
|
||||
struct si_screen* sscreen = (struct si_screen *)screen;
|
||||
struct radeon_winsys *ws = sscreen->b.ws;
|
||||
LLVMTargetRef r600_target;
|
||||
#if HAVE_LLVM >= 0x0306
|
||||
const char *triple = "amdgcn--";
|
||||
#else
|
||||
const char *triple = "r600--";
|
||||
#endif
|
||||
int shader, i;
|
||||
|
||||
if (sctx == NULL)
|
||||
@@ -167,6 +178,17 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, void *
|
||||
*/
|
||||
sctx->scratch_waves = 32 * sscreen->b.info.max_compute_units;
|
||||
|
||||
#if HAVE_LLVM >= 0x0306
|
||||
/* Initialize LLVM TargetMachine */
|
||||
r600_target = radeon_llvm_get_r600_target(triple);
|
||||
sctx->tm = LLVMCreateTargetMachine(r600_target, triple,
|
||||
r600_get_llvm_processor_name(sscreen->b.family),
|
||||
"+DumpCode,+vgpr-spilling",
|
||||
LLVMCodeGenLevelDefault,
|
||||
LLVMRelocDefault,
|
||||
LLVMCodeModelDefault);
|
||||
#endif
|
||||
|
||||
return &sctx->b.b;
|
||||
fail:
|
||||
si_destroy_context(&sctx->b.b);
|
||||
@@ -435,12 +457,6 @@ static void si_destroy_screen(struct pipe_screen* pscreen)
|
||||
if (!sscreen->b.ws->unref(sscreen->b.ws))
|
||||
return;
|
||||
|
||||
#if HAVE_LLVM >= 0x0306
|
||||
// r600_destroy_common_screen() frees sscreen, so we need to make
|
||||
// sure to dispose the TargetMachine before we call it.
|
||||
LLVMDisposeTargetMachine(sscreen->tm);
|
||||
#endif
|
||||
|
||||
r600_destroy_common_screen(&sscreen->b);
|
||||
}
|
||||
|
||||
@@ -498,12 +514,7 @@ static bool si_initialize_pipe_config(struct si_screen *sscreen)
|
||||
struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws)
|
||||
{
|
||||
struct si_screen *sscreen = CALLOC_STRUCT(si_screen);
|
||||
LLVMTargetRef r600_target;
|
||||
#if HAVE_LLVM >= 0x0306
|
||||
const char *triple = "amdgcn--";
|
||||
#else
|
||||
const char *triple = "r600--";
|
||||
#endif
|
||||
|
||||
if (sscreen == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -531,13 +542,5 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws)
|
||||
/* Create the auxiliary context. This must be done last. */
|
||||
sscreen->b.aux_context = sscreen->b.b.context_create(&sscreen->b.b, NULL);
|
||||
|
||||
#if HAVE_LLVM >= 0x0306
|
||||
/* Initialize LLVM TargetMachine */
|
||||
r600_target = radeon_llvm_get_r600_target(triple);
|
||||
sscreen->tm = LLVMCreateTargetMachine(r600_target, triple,
|
||||
r600_get_llvm_processor_name(sscreen->b.family),
|
||||
"+DumpCode,+vgpr-spilling", LLVMCodeGenLevelDefault, LLVMRelocDefault,
|
||||
LLVMCodeModelDefault);
|
||||
#endif
|
||||
return &sscreen->b.b;
|
||||
}
|
||||
|
@@ -83,7 +83,6 @@ struct si_compute;
|
||||
|
||||
struct si_screen {
|
||||
struct r600_common_screen b;
|
||||
LLVMTargetMachineRef tm;
|
||||
};
|
||||
|
||||
struct si_sampler_view {
|
||||
@@ -200,6 +199,8 @@ struct si_context {
|
||||
struct pipe_resource *esgs_ring;
|
||||
struct pipe_resource *gsvs_ring;
|
||||
|
||||
LLVMTargetMachineRef tm;
|
||||
|
||||
/* SI state handling */
|
||||
union si_state queued;
|
||||
union si_state emitted;
|
||||
|
@@ -72,6 +72,7 @@ struct si_shader_context
|
||||
int param_streamout_offset[4];
|
||||
int param_vertex_id;
|
||||
int param_instance_id;
|
||||
LLVMTargetMachineRef tm;
|
||||
LLVMValueRef const_md;
|
||||
LLVMValueRef const_resource[SI_NUM_CONST_BUFFERS];
|
||||
LLVMValueRef ddxy_lds;
|
||||
@@ -1520,7 +1521,7 @@ static void tex_fetch_args(
|
||||
const struct tgsi_full_instruction * inst = emit_data->inst;
|
||||
unsigned opcode = inst->Instruction.Opcode;
|
||||
unsigned target = inst->Texture.Texture;
|
||||
LLVMValueRef coords[4];
|
||||
LLVMValueRef coords[5];
|
||||
LLVMValueRef address[16];
|
||||
int ref_pos;
|
||||
unsigned num_coords = tgsi_util_get_texture_coord_dim(target, &ref_pos);
|
||||
@@ -2638,13 +2639,13 @@ int si_shader_binary_read(struct si_screen *sscreen,
|
||||
}
|
||||
|
||||
int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader,
|
||||
LLVMModuleRef mod)
|
||||
LLVMTargetMachineRef tm, LLVMModuleRef mod)
|
||||
{
|
||||
int r = 0;
|
||||
bool dump = r600_can_dump_shader(&sscreen->b,
|
||||
shader->selector ? shader->selector->tokens : NULL);
|
||||
r = radeon_llvm_compile(mod, &shader->binary,
|
||||
r600_get_llvm_processor_name(sscreen->b.family), dump, sscreen->tm);
|
||||
r600_get_llvm_processor_name(sscreen->b.family), dump, tm);
|
||||
|
||||
if (r) {
|
||||
return r;
|
||||
@@ -2732,7 +2733,7 @@ static int si_generate_gs_copy_shader(struct si_screen *sscreen,
|
||||
fprintf(stderr, "Copy Vertex Shader for Geometry Shader:\n\n");
|
||||
|
||||
r = si_compile_llvm(sscreen, si_shader_ctx->shader,
|
||||
bld_base->base.gallivm->module);
|
||||
si_shader_ctx->tm, bld_base->base.gallivm->module);
|
||||
|
||||
radeon_llvm_dispose(&si_shader_ctx->radeon_bld);
|
||||
|
||||
@@ -2740,7 +2741,8 @@ static int si_generate_gs_copy_shader(struct si_screen *sscreen,
|
||||
return r;
|
||||
}
|
||||
|
||||
int si_shader_create(struct si_screen *sscreen, struct si_shader *shader)
|
||||
int si_shader_create(struct si_screen *sscreen, LLVMTargetMachineRef tm,
|
||||
struct si_shader *shader)
|
||||
{
|
||||
struct si_shader_selector *sel = shader->selector;
|
||||
struct tgsi_token *tokens = sel->tokens;
|
||||
@@ -2812,6 +2814,7 @@ int si_shader_create(struct si_screen *sscreen, struct si_shader *shader)
|
||||
si_shader_ctx.shader = shader;
|
||||
si_shader_ctx.type = tgsi_get_processor_type(tokens);
|
||||
si_shader_ctx.screen = sscreen;
|
||||
si_shader_ctx.tm = tm;
|
||||
|
||||
switch (si_shader_ctx.type) {
|
||||
case TGSI_PROCESSOR_VERTEX:
|
||||
@@ -2867,7 +2870,7 @@ int si_shader_create(struct si_screen *sscreen, struct si_shader *shader)
|
||||
radeon_llvm_finalize_module(&si_shader_ctx.radeon_bld);
|
||||
|
||||
mod = bld_base->base.gallivm->module;
|
||||
r = si_compile_llvm(sscreen, shader, mod);
|
||||
r = si_compile_llvm(sscreen, shader, tm, mod);
|
||||
if (r) {
|
||||
fprintf(stderr, "LLVM failed to compile shader\n");
|
||||
goto out;
|
||||
|
@@ -181,9 +181,10 @@ static inline struct si_shader* si_get_vs_state(struct si_context *sctx)
|
||||
}
|
||||
|
||||
/* radeonsi_shader.c */
|
||||
int si_shader_create(struct si_screen *sscreen, struct si_shader *shader);
|
||||
int si_shader_create(struct si_screen *sscreen, LLVMTargetMachineRef tm,
|
||||
struct si_shader *shader);
|
||||
int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader,
|
||||
LLVMModuleRef mod);
|
||||
LLVMTargetMachineRef tm, LLVMModuleRef mod);
|
||||
void si_shader_destroy(struct pipe_context *ctx, struct si_shader *shader);
|
||||
unsigned si_shader_io_get_unique_index(unsigned semantic_name, unsigned index);
|
||||
int si_shader_binary_read(struct si_screen *sscreen, struct si_shader *shader,
|
||||
|
@@ -398,6 +398,7 @@ static INLINE void si_shader_selector_key(struct pipe_context *ctx,
|
||||
static int si_shader_select(struct pipe_context *ctx,
|
||||
struct si_shader_selector *sel)
|
||||
{
|
||||
struct si_context *sctx = (struct si_context *)ctx;
|
||||
union si_shader_key key;
|
||||
struct si_shader * shader = NULL;
|
||||
int r;
|
||||
@@ -437,7 +438,8 @@ static int si_shader_select(struct pipe_context *ctx,
|
||||
|
||||
shader->next_variant = sel->current;
|
||||
sel->current = shader;
|
||||
r = si_shader_create((struct si_screen*)ctx->screen, shader);
|
||||
r = si_shader_create((struct si_screen*)ctx->screen, sctx->tm,
|
||||
shader);
|
||||
if (unlikely(r)) {
|
||||
R600_ERR("Failed to build shader variant (type=%u) %d\n",
|
||||
sel->type, r);
|
||||
|
@@ -175,7 +175,7 @@ namespace clover {
|
||||
virtual void unbind(exec_context &ctx);
|
||||
|
||||
private:
|
||||
size_t _storage;
|
||||
size_t _storage = 0;
|
||||
};
|
||||
|
||||
class constant_argument : public argument {
|
||||
|
@@ -90,6 +90,8 @@ cl_build_status
|
||||
program::build_status(const device &dev) const {
|
||||
if (_binaries.count(&dev))
|
||||
return CL_BUILD_SUCCESS;
|
||||
else if (_logs.count(&dev))
|
||||
return CL_BUILD_ERROR;
|
||||
else
|
||||
return CL_BUILD_NONE;
|
||||
}
|
||||
|
@@ -52,6 +52,5 @@ x11_FILES := \
|
||||
x11/native_ximage.c
|
||||
|
||||
x11_drm_FILES := \
|
||||
x11/dri2.c \
|
||||
x11/x11_screen.c \
|
||||
x11/x11_screen.h
|
||||
|
@@ -39,7 +39,8 @@ else:
|
||||
'#/src/mapi',
|
||||
])
|
||||
sources.append(env.ParseSourceList('Makefile.sources', 'x11_FILES'))
|
||||
if env['drm']:
|
||||
if env['drm'] and False:
|
||||
# XXX: Disabled as we're don't generate the x11/dri2.c symlink at buildtime.
|
||||
env.Append(CPPDEFINES = ['GLX_DIRECT_RENDERING'])
|
||||
sources.append(env.ParseSourceList('Makefile.sources', 'x11_drm_FILES'))
|
||||
if env['drm'] and False:
|
||||
|
@@ -1 +0,0 @@
|
||||
../../../../glx/dri2.c
|
@@ -27,10 +27,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(C_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(TARGET_OUT_HEADERS)/libdrm \
|
||||
$(TARGET_OUT_HEADERS)/freedreno
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_freedreno
|
||||
LOCAL_MODULE := libmesa_winsys_freedreno
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -30,8 +30,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(C_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/libdrm
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_intel
|
||||
LOCAL_MODULE := libmesa_winsys_i915
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -29,8 +29,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(C_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/libdrm
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_intel
|
||||
LOCAL_MODULE := libmesa_winsys_intel
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -30,8 +30,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(C_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/libdrm
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_nouveau
|
||||
LOCAL_MODULE := libmesa_winsys_nouveau
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -30,8 +30,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(C_SOURCES)
|
||||
|
||||
LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/libdrm
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm libdrm_radeon
|
||||
LOCAL_MODULE := libmesa_winsys_radeon
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -34,9 +34,9 @@ LOCAL_CFLAGS := -D_FILE_OFFSET_BITS=64
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(GALLIUM_TOP)/drivers/svga \
|
||||
$(GALLIUM_TOP)/drivers/svga/include \
|
||||
$(TARGET_OUT_HEADERS)/libdrm
|
||||
$(GALLIUM_TOP)/drivers/svga/include
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm
|
||||
LOCAL_MODULE := libmesa_winsys_svga
|
||||
|
||||
include $(GALLIUM_COMMON_MK)
|
||||
|
@@ -33,11 +33,23 @@ sources := \
|
||||
glsl_lexer.cpp \
|
||||
glsl_parser.cpp \
|
||||
glcpp/glcpp-lex.c \
|
||||
glcpp/glcpp-parse.c
|
||||
glcpp/glcpp-parse.c \
|
||||
nir/nir_constant_expressions.c \
|
||||
nir/nir_opcodes.c \
|
||||
nir/nir_opcodes.h \
|
||||
nir/nir_opt_algebraic.c
|
||||
|
||||
LOCAL_SRC_FILES := $(filter-out $(sources), $(LOCAL_SRC_FILES))
|
||||
|
||||
LOCAL_C_INCLUDES += $(intermediates) $(intermediates)/glcpp $(MESA_TOP)/src/glsl/glcpp
|
||||
LOCAL_C_INCLUDES += \
|
||||
$(intermediates) \
|
||||
$(intermediates)/glcpp \
|
||||
$(intermediates)/nir \
|
||||
$(MESA_TOP)/src/glsl/glcpp \
|
||||
$(MESA_TOP)/src/glsl/nir
|
||||
|
||||
LOCAL_EXPORT_C_INCLUDE_DIRS += \
|
||||
$(intermediates)/nir
|
||||
|
||||
sources := $(addprefix $(intermediates)/, $(sources))
|
||||
LOCAL_GENERATED_SOURCES += $(sources)
|
||||
@@ -77,3 +89,42 @@ $(intermediates)/glcpp/glcpp-lex.c: $(LOCAL_PATH)/glcpp/glcpp-lex.l
|
||||
|
||||
$(intermediates)/glcpp/glcpp-parse.c: $(LOCAL_PATH)/glcpp/glcpp-parse.y
|
||||
$(call glsl_local-y-to-c-and-h)
|
||||
|
||||
nir_constant_expressions_gen := $(LOCAL_PATH)/nir/nir_constant_expressions.py
|
||||
nir_constant_expressions_deps := \
|
||||
$(LOCAL_PATH)/nir/nir_opcodes.py \
|
||||
$(LOCAL_PATH)/nir/nir_constant_expressions.py \
|
||||
$(LOCAL_PATH)/nir/nir_constant_expressions.h
|
||||
|
||||
$(intermediates)/nir/nir_constant_expressions.c: $(nir_constant_expressions_deps)
|
||||
@mkdir -p $(dir $@)
|
||||
$(hide) $(MESA_PYTHON2) $(nir_constant_expressions_gen) $< > $@
|
||||
|
||||
nir_opcodes_h_gen := $(LOCAL_PATH)/nir/nir_opcodes_h.py
|
||||
nir_opcodes_h_deps := \
|
||||
$(LOCAL_PATH)/nir/nir_opcodes.py \
|
||||
$(LOCAL_PATH)/nir/nir_opcodes_h.py
|
||||
|
||||
$(intermediates)/nir/nir_opcodes.h: $(nir_opcodes_h_deps)
|
||||
@mkdir -p $(dir $@)
|
||||
$(hide) $(MESA_PYTHON2) $(nir_opcodes_h_gen) $< > $@
|
||||
|
||||
$(LOCAL_PATH)/nir/nir.h: $(intermediates)/nir/nir_opcodes.h
|
||||
|
||||
nir_opcodes_c_gen := $(LOCAL_PATH)/nir/nir_opcodes_c.py
|
||||
nir_opcodes_c_deps := \
|
||||
$(LOCAL_PATH)/nir/nir_opcodes.py \
|
||||
$(LOCAL_PATH)/nir/nir_opcodes_c.py
|
||||
|
||||
$(intermediates)/nir/nir_opcodes.c: $(nir_opcodes_c_deps)
|
||||
@mkdir -p $(dir $@)
|
||||
$(hide) $(MESA_PYTHON2) $(nir_opcodes_c_gen) $< > $@
|
||||
|
||||
nir_opt_algebraic_gen := $(LOCAL_PATH)/nir/nir_opt_algebraic.py
|
||||
nir_opt_algebraic_deps := \
|
||||
$(LOCAL_PATH)/nir/nir_opt_algebraic.py \
|
||||
$(LOCAL_PATH)/nir/nir_algebraic.py
|
||||
|
||||
$(intermediates)/nir/nir_opt_algebraic.c: $(nir_opt_algebraic_deps)
|
||||
@mkdir -p $(dir $@)
|
||||
$(hide) $(MESA_PYTHON2) $(nir_opt_algebraic_gen) $< > $@
|
||||
|
@@ -35,10 +35,10 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
$(LIBGLCPP_FILES) \
|
||||
$(LIBGLSL_FILES)
|
||||
$(LIBGLSL_FILES) \
|
||||
$(NIR_FILES)
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src/mesa
|
||||
|
||||
@@ -59,7 +59,6 @@ LOCAL_SRC_FILES := \
|
||||
$(GLSL_COMPILER_CXX_FILES)
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src/mesa
|
||||
|
||||
|
@@ -690,24 +690,27 @@ glsl_type::record_key_compare(const void *a, const void *b)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate an integer hash value for a glsl_type structure type.
|
||||
*/
|
||||
unsigned
|
||||
glsl_type::record_key_hash(const void *a)
|
||||
{
|
||||
const glsl_type *const key = (glsl_type *) a;
|
||||
char hash_key[128];
|
||||
unsigned size = 0;
|
||||
|
||||
size = snprintf(hash_key, sizeof(hash_key), "%08x", key->length);
|
||||
uintptr_t hash = key->length;
|
||||
unsigned retval;
|
||||
|
||||
for (unsigned i = 0; i < key->length; i++) {
|
||||
if (size >= sizeof(hash_key))
|
||||
break;
|
||||
|
||||
size += snprintf(& hash_key[size], sizeof(hash_key) - size,
|
||||
"%p", (void *) key->fields.structure[i].type);
|
||||
/* casting pointer to uintptr_t */
|
||||
hash = (hash * 13 ) + (uintptr_t) key->fields.structure[i].type;
|
||||
}
|
||||
|
||||
return hash_table_string_hash(& hash_key);
|
||||
if (sizeof(hash) == 8)
|
||||
retval = (hash & 0xffffffff) ^ ((uint64_t) hash >> 32);
|
||||
else
|
||||
retval = hash;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -1364,24 +1364,13 @@ link_fs_input_layout_qualifiers(struct gl_shader_program *prog,
|
||||
* "If gl_FragCoord is redeclared in any fragment shader in a program,
|
||||
* it must be redeclared in all the fragment shaders in that program
|
||||
* that have a static use gl_FragCoord."
|
||||
*
|
||||
* Exclude the case when one of the 'linked_shader' or 'shader' redeclares
|
||||
* gl_FragCoord with no layout qualifiers but the other one doesn't
|
||||
* redeclare it. If we strictly follow GLSL 1.50 spec's language, it
|
||||
* should be a link error. But, generating link error for this case will
|
||||
* be a wrong behaviour which spec didn't intend to do and it could also
|
||||
* break some applications.
|
||||
*/
|
||||
if ((linked_shader->redeclares_gl_fragcoord
|
||||
&& !shader->redeclares_gl_fragcoord
|
||||
&& shader->uses_gl_fragcoord
|
||||
&& (linked_shader->origin_upper_left
|
||||
|| linked_shader->pixel_center_integer))
|
||||
&& shader->uses_gl_fragcoord)
|
||||
|| (shader->redeclares_gl_fragcoord
|
||||
&& !linked_shader->redeclares_gl_fragcoord
|
||||
&& linked_shader->uses_gl_fragcoord
|
||||
&& (shader->origin_upper_left
|
||||
|| shader->pixel_center_integer))) {
|
||||
&& linked_shader->uses_gl_fragcoord)) {
|
||||
linker_error(prog, "fragment shader defined with conflicting "
|
||||
"layout qualifiers for gl_FragCoord\n");
|
||||
}
|
||||
|
@@ -49,7 +49,6 @@ public:
|
||||
{
|
||||
instructions = insts;
|
||||
progress = false;
|
||||
index = 0;
|
||||
}
|
||||
|
||||
bool run()
|
||||
@@ -63,7 +62,6 @@ public:
|
||||
private:
|
||||
exec_list *instructions;
|
||||
bool progress;
|
||||
unsigned index;
|
||||
};
|
||||
|
||||
void
|
||||
@@ -82,7 +80,7 @@ lower_const_array_visitor::handle_rvalue(ir_rvalue **rvalue)
|
||||
|
||||
void *mem_ctx = ralloc_parent(con);
|
||||
|
||||
char *uniform_name = ralloc_asprintf(mem_ctx, "constarray__%d", index++);
|
||||
char *uniform_name = ralloc_asprintf(mem_ctx, "constarray__%p", dra);
|
||||
|
||||
ir_variable *uni =
|
||||
new(mem_ctx) ir_variable(con->type, uniform_name, ir_var_uniform);
|
||||
|
@@ -101,7 +101,7 @@ optimizations = [
|
||||
(('ishr', 0, a), 0),
|
||||
(('ishr', a, 0), a),
|
||||
(('ushr', 0, a), 0),
|
||||
(('ushr', a, 0), 0),
|
||||
(('ushr', a, 0), a),
|
||||
# Exponential/logarithmic identities
|
||||
(('fexp2', ('flog2', a)), a), # 2^lg2(a) = a
|
||||
(('fexp', ('flog', a)), a), # e^ln(a) = a
|
||||
|
@@ -578,9 +578,18 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
|
||||
if (!is_vec_zero(zero))
|
||||
continue;
|
||||
|
||||
return new(mem_ctx) ir_expression(ir->operation,
|
||||
add->operands[0],
|
||||
neg(add->operands[1]));
|
||||
/* Depending of the zero position we want to optimize
|
||||
* (0 cmp x+y) into (-x cmp y) or (x+y cmp 0) into (x cmp -y)
|
||||
*/
|
||||
if (add_pos == 1) {
|
||||
return new(mem_ctx) ir_expression(ir->operation,
|
||||
neg(add->operands[0]),
|
||||
add->operands[1]);
|
||||
} else {
|
||||
return new(mem_ctx) ir_expression(ir->operation,
|
||||
add->operands[0],
|
||||
neg(add->operands[1]));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
@@ -143,8 +143,13 @@ __glXWireToEvent(Display *dpy, XEvent *event, xEvent *wire)
|
||||
aevent->ust = ((CARD64)awire->ust_hi << 32) | awire->ust_lo;
|
||||
aevent->msc = ((CARD64)awire->msc_hi << 32) | awire->msc_lo;
|
||||
|
||||
if (awire->sbc < glxDraw->lastEventSbc)
|
||||
glxDraw->eventSbcWrap += 0x100000000;
|
||||
/* Handle 32-Bit wire sbc wraparound in both directions to cope with out
|
||||
* of sequence 64-Bit sbc's
|
||||
*/
|
||||
if ((int64_t) awire->sbc < ((int64_t) glxDraw->lastEventSbc - 0x40000000))
|
||||
glxDraw->eventSbcWrap += 0x100000000;
|
||||
if ((int64_t) awire->sbc > ((int64_t) glxDraw->lastEventSbc + 0x40000000))
|
||||
glxDraw->eventSbcWrap -= 0x100000000;
|
||||
glxDraw->lastEventSbc = awire->sbc;
|
||||
aevent->sbc = awire->sbc + glxDraw->eventSbcWrap;
|
||||
return True;
|
||||
|
@@ -37,7 +37,7 @@ LOCAL_SRC_FILES := \
|
||||
ifeq ($(MESA_GPU_DRIVERS),swrast)
|
||||
LOCAL_CFLAGS += -D__NOT_HAVE_DRM_H
|
||||
else
|
||||
LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/libdrm
|
||||
LOCAL_SHARED_LIBRARIES := libdrm
|
||||
endif
|
||||
|
||||
LOCAL_MODULE := libmesa_loader
|
||||
|
@@ -64,6 +64,7 @@
|
||||
* Rob Clark <robclark@freedesktop.org>
|
||||
*/
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@@ -80,7 +81,6 @@
|
||||
#endif
|
||||
#endif
|
||||
#ifdef HAVE_SYSFS
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#include "loader.h"
|
||||
|
@@ -231,7 +231,7 @@ es2api/glapi_mapi_tmp.h: glapi/gen/gl_and_es_API.xml $(glapi_gen_mapi_deps)
|
||||
$(call glapi_gen_mapi,$<,es2api)
|
||||
|
||||
# XXX: Inline vgapi's Makefile.am here.
|
||||
EXTRA_DIST += vgapi
|
||||
EXTRA_DIST += vgapi mapi.c mapi.h
|
||||
# if HAVE_OPENVG
|
||||
# SUBDIRS += vgapi
|
||||
# endif
|
||||
|
@@ -110,7 +110,7 @@ stub_add_dynamic(const char *name)
|
||||
if (!stub->addr)
|
||||
return NULL;
|
||||
|
||||
stub->name = (const void *) name;
|
||||
stub->name = (const void *) strdup(name);
|
||||
/* to be fixed later */
|
||||
stub->slot = -1;
|
||||
|
||||
|
@@ -34,6 +34,9 @@ sources := \
|
||||
main/enums.c \
|
||||
main/api_exec.c \
|
||||
main/dispatch.h \
|
||||
main/format_pack.c \
|
||||
main/format_unpack.c \
|
||||
main/format_info.h \
|
||||
main/remap_helper.h \
|
||||
main/get_hash.h
|
||||
|
||||
@@ -124,3 +127,21 @@ format_info_deps := \
|
||||
|
||||
$(intermediates)/main/format_info.h: $(format_info_deps)
|
||||
@$(MESA_PYTHON2) $(FORMAT_INFO) $< > $@
|
||||
|
||||
FORMAT_PACK := $(LOCAL_PATH)/main/format_pack.py
|
||||
format_pack_deps := \
|
||||
$(LOCAL_PATH)/main/formats.csv \
|
||||
$(LOCAL_PATH)/main/format_parser.py \
|
||||
$(FORMAT_PACK)
|
||||
|
||||
$(intermediates)/main/format_pack.c: $(format_pack_deps)
|
||||
$(hide) $(MESA_PYTHON2) $(FORMAT_PACK) $< > $@
|
||||
|
||||
FORMAT_UNPACK := $(LOCAL_PATH)/main/format_unpack.py
|
||||
format_unpack_deps := \
|
||||
$(LOCAL_PATH)/main/formats.csv \
|
||||
$(LOCAL_PATH)/main/format_parser.py \
|
||||
$(FORMAT_UNPACK)
|
||||
|
||||
$(intermediates)/main/format_unpack.c: $(format_unpack_deps)
|
||||
$(hide) $(MESA_PYTHON2) $(FORMAT_UNPACK) $< > $@
|
||||
|
@@ -49,8 +49,8 @@ endif # MESA_ENABLE_ASM
|
||||
|
||||
ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
|
||||
LOCAL_SRC_FILES += \
|
||||
$(SRCDIR)main/streaming-load-memcpy.c \
|
||||
$(SRCDIR)main/sse_minmax.c
|
||||
main/streaming-load-memcpy.c \
|
||||
mesa/main/sse_minmax.c
|
||||
LOCAL_CFLAGS := -msse4.1
|
||||
endif
|
||||
|
||||
@@ -61,8 +61,8 @@ endif
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(call intermediates-dir-for STATIC_LIBRARIES,libmesa_program,,) \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src/mesa/main \
|
||||
$(MESA_TOP)/src/glsl \
|
||||
$(MESA_TOP)/src/gallium/auxiliary
|
||||
|
||||
|
@@ -36,7 +36,6 @@ include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := libmesa_glsl_utils
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/src/glsl \
|
||||
$(MESA_TOP)/src/mapi
|
||||
|
||||
@@ -59,7 +58,6 @@ LOCAL_IS_HOST_MODULE := true
|
||||
LOCAL_CFLAGS := -D_POSIX_C_SOURCE=199309L
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/src/glsl \
|
||||
$(MESA_TOP)/src/mapi
|
||||
|
||||
|
@@ -53,11 +53,11 @@ endif
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(call intermediates-dir-for STATIC_LIBRARIES,libmesa_program,,) \
|
||||
$(MESA_TOP)/src/gallium/auxiliary \
|
||||
$(MESA_TOP)/src/gallium/include \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src/mesa/main \
|
||||
$(MESA_TOP)/src/glsl \
|
||||
$(MESA_TOP)/src/mapi
|
||||
$(MESA_TOP)/src/gallium/auxiliary \
|
||||
$(MESA_TOP)/src/gallium/include
|
||||
|
||||
LOCAL_WHOLE_STATIC_LIBRARIES := \
|
||||
libmesa_program
|
||||
|
@@ -35,17 +35,16 @@ MESA_DRI_CFLAGS := \
|
||||
-DHAVE_ANDROID_PLATFORM
|
||||
|
||||
MESA_DRI_C_INCLUDES := \
|
||||
$(MESA_TOP)/src \
|
||||
$(call intermediates-dir-for,STATIC_LIBRARIES,libmesa_dri_common) \
|
||||
$(addprefix $(MESA_TOP)/, $(mesa_dri_common_INCLUDES)) \
|
||||
$(TARGET_OUT_HEADERS)/libdrm \
|
||||
external/expat/lib
|
||||
|
||||
MESA_DRI_WHOLE_STATIC_LIBRARIES := \
|
||||
libmesa_glsl \
|
||||
libmesa_megadriver_stub \
|
||||
libmesa_dri_common \
|
||||
libmesa_dricore
|
||||
libmesa_dricore \
|
||||
libmesa_util
|
||||
|
||||
MESA_DRI_SHARED_LIBRARIES := \
|
||||
libcutils \
|
||||
|
@@ -40,6 +40,13 @@ LOCAL_C_INCLUDES := \
|
||||
$(intermediates) \
|
||||
$(MESA_DRI_C_INCLUDES)
|
||||
|
||||
# swrast only
|
||||
ifeq ($(MESA_GPU_DRIVERS),swrast)
|
||||
LOCAL_CFLAGS := -D__NOT_HAVE_DRM_H
|
||||
else
|
||||
LOCAL_SHARED_LIBRARIES := libdrm
|
||||
endif
|
||||
|
||||
LOCAL_SRC_FILES := $(DRI_COMMON_FILES)
|
||||
|
||||
LOCAL_GENERATED_SOURCES := \
|
||||
@@ -99,6 +106,13 @@ LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_DRI_C_INCLUDES)
|
||||
|
||||
# swrast only
|
||||
ifeq ($(MESA_GPU_DRIVERS),swrast)
|
||||
LOCAL_CFLAGS := -D__NOT_HAVE_DRM_H
|
||||
else
|
||||
LOCAL_SHARED_LIBRARIES := libdrm
|
||||
endif
|
||||
|
||||
LOCAL_SRC_FILES := $(megadriver_stub_FILES)
|
||||
|
||||
include $(MESA_COMMON_MK)
|
||||
|
@@ -91,5 +91,9 @@ TODO: document the other workarounds.
|
||||
<application name="Dead Island" executable="DeadIslandGame">
|
||||
<option name="allow_glsl_extension_directive_midshader" value="true" />
|
||||
</application>
|
||||
|
||||
<application name="Second Life" executable="do-not-directly-run-secondlife-bin">
|
||||
<option name="allow_glsl_extension_directive_midshader" value="true" />
|
||||
</application>
|
||||
</device>
|
||||
</driconf>
|
||||
|
@@ -52,7 +52,14 @@ POT=xmlpool.pot
|
||||
|
||||
.PHONY: all clean pot po mo
|
||||
|
||||
EXTRA_DIST = gen_xmlpool.py options.h t_options.h $(POS) SConscript
|
||||
EXTRA_DIST = \
|
||||
gen_xmlpool.py \
|
||||
options.h \
|
||||
t_options.h \
|
||||
$(POS) \
|
||||
$(MOS) \
|
||||
SConscript
|
||||
|
||||
BUILT_SOURCES = options.h
|
||||
CLEANFILES = $(MOS) options.h
|
||||
|
||||
|
@@ -241,7 +241,7 @@ static const struct brw_device_info brw_device_info_chv = {
|
||||
.max_gs_threads = 80,
|
||||
.max_wm_threads = 128,
|
||||
.urb = {
|
||||
.size = 128,
|
||||
.size = 192,
|
||||
.min_vs_entries = 34,
|
||||
.max_vs_entries = 640,
|
||||
.max_gs_entries = 256,
|
||||
|
@@ -1683,6 +1683,15 @@ fs_visitor::emit_texture_gen7(ir_texture_opcode op, fs_reg dst,
|
||||
offset_value.file != BAD_FILE && offset_value.file != IMM;
|
||||
bool coordinate_done = false;
|
||||
|
||||
/* The sampler can only meaningfully compute LOD for fragment shader
|
||||
* messages. For all other stages, we change the opcode to ir_txl and
|
||||
* hardcode the LOD to 0.
|
||||
*/
|
||||
if (stage != MESA_SHADER_FRAGMENT && op == ir_tex) {
|
||||
op = ir_txl;
|
||||
lod = fs_reg(0.0f);
|
||||
}
|
||||
|
||||
/* Set up the LOD info */
|
||||
switch (op) {
|
||||
case ir_tex:
|
||||
|
@@ -69,11 +69,7 @@ do_gs_prog(struct brw_context *brw,
|
||||
rzalloc_array(NULL, const gl_constant_value *, param_count);
|
||||
c.prog_data.base.base.pull_param =
|
||||
rzalloc_array(NULL, const gl_constant_value *, param_count);
|
||||
/* Setting nr_params here NOT to the size of the param and pull_param
|
||||
* arrays, but to the number of uniform components vec4_visitor
|
||||
* needs. vec4_visitor::setup_uniforms() will set it back to a proper value.
|
||||
*/
|
||||
c.prog_data.base.base.nr_params = ALIGN(param_count, 4) / 4 + gs->num_samplers;
|
||||
c.prog_data.base.base.nr_params = param_count;
|
||||
|
||||
if (brw->gen >= 7) {
|
||||
if (gp->program.OutputType == GL_POINTS) {
|
||||
|
@@ -476,6 +476,8 @@ brw_query_counter(struct gl_context *ctx, struct gl_query_object *q)
|
||||
drm_intel_bo_unreference(query->bo);
|
||||
query->bo = drm_intel_bo_alloc(brw->bufmgr, "timestamp query", 4096, 4096);
|
||||
brw_write_timestamp(brw, query->bo, 0);
|
||||
|
||||
query->flushed = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -476,6 +476,19 @@ vec4_gs_visitor::visit(ir_emit_vertex *ir)
|
||||
{
|
||||
this->current_annotation = "emit vertex: safety check";
|
||||
|
||||
/* Haswell and later hardware ignores the "Render Stream Select" bits
|
||||
* from the 3DSTATE_STREAMOUT packet when the SOL stage is disabled,
|
||||
* and instead sends all primitives down the pipeline for rasterization.
|
||||
* If the SOL stage is enabled, "Render Stream Select" is honored and
|
||||
* primitives bound to non-zero streams are discarded after stream output.
|
||||
*
|
||||
* Since the only purpose of primives sent to non-zero streams is to
|
||||
* be recorded by transform feedback, we can simply discard all geometry
|
||||
* bound to these streams when transform feedback is disabled.
|
||||
*/
|
||||
if (ir->stream_id() > 0 && shader_prog->TransformFeedback.NumVarying == 0)
|
||||
return;
|
||||
|
||||
/* To ensure that we don't output more vertices than the shader specified
|
||||
* using max_vertices, do the logic inside a conditional of the form "if
|
||||
* (vertex_count < MAX)"
|
||||
|
@@ -3628,7 +3628,8 @@ vec4_visitor::vec4_visitor(struct brw_context *brw,
|
||||
*/
|
||||
this->uniform_array_size = 1;
|
||||
if (prog_data) {
|
||||
this->uniform_array_size = MAX2(stage_prog_data->nr_params, 1);
|
||||
this->uniform_array_size =
|
||||
MAX2(CEILING(stage_prog_data->nr_params, 4), 1);
|
||||
}
|
||||
|
||||
this->uniform_size = rzalloc_array(mem_ctx, int, this->uniform_array_size);
|
||||
|
@@ -241,15 +241,7 @@ do_vs_prog(struct brw_context *brw,
|
||||
rzalloc_array(NULL, const gl_constant_value *, param_count);
|
||||
stage_prog_data->pull_param =
|
||||
rzalloc_array(NULL, const gl_constant_value *, param_count);
|
||||
|
||||
/* Setting nr_params here NOT to the size of the param and pull_param
|
||||
* arrays, but to the number of uniform components vec4_visitor
|
||||
* needs. vec4_visitor::setup_uniforms() will set it back to a proper value.
|
||||
*/
|
||||
stage_prog_data->nr_params = ALIGN(param_count, 4) / 4;
|
||||
if (vs) {
|
||||
stage_prog_data->nr_params += vs->num_samplers;
|
||||
}
|
||||
stage_prog_data->nr_params = param_count;
|
||||
|
||||
GLbitfield64 outputs_written = vp->program.Base.OutputsWritten;
|
||||
prog_data.inputs_read = vp->program.Base.InputsRead;
|
||||
|
@@ -82,6 +82,8 @@ gen8_upload_gs_state(struct brw_context *brw)
|
||||
uint32_t dw7 = (brw->gs.prog_data->control_data_header_size_hwords <<
|
||||
GEN7_GS_CONTROL_DATA_HEADER_SIZE_SHIFT) |
|
||||
brw->gs.prog_data->dispatch_mode |
|
||||
((brw->gs.prog_data->invocations - 1) <<
|
||||
GEN7_GS_INSTANCE_CONTROL_SHIFT) |
|
||||
GEN6_GS_STATISTICS_ENABLE |
|
||||
(brw->gs.prog_data->include_primitive_id ?
|
||||
GEN7_GS_INCLUDE_PRIMITIVE_ID : 0) |
|
||||
|
@@ -128,6 +128,15 @@ gen8_upload_3dstate_streamout(struct brw_context *brw, bool active,
|
||||
dw2 |= urb_entry_read_offset << SO_STREAM_0_VERTEX_READ_OFFSET_SHIFT;
|
||||
dw2 |= (urb_entry_read_length - 1) << SO_STREAM_0_VERTEX_READ_LENGTH_SHIFT;
|
||||
|
||||
dw2 |= urb_entry_read_offset << SO_STREAM_1_VERTEX_READ_OFFSET_SHIFT;
|
||||
dw2 |= (urb_entry_read_length - 1) << SO_STREAM_1_VERTEX_READ_LENGTH_SHIFT;
|
||||
|
||||
dw2 |= urb_entry_read_offset << SO_STREAM_2_VERTEX_READ_OFFSET_SHIFT;
|
||||
dw2 |= (urb_entry_read_length - 1) << SO_STREAM_2_VERTEX_READ_LENGTH_SHIFT;
|
||||
|
||||
dw2 |= urb_entry_read_offset << SO_STREAM_3_VERTEX_READ_OFFSET_SHIFT;
|
||||
dw2 |= (urb_entry_read_length - 1) << SO_STREAM_3_VERTEX_READ_LENGTH_SHIFT;
|
||||
|
||||
/* Set buffer pitches; 0 means unbound. */
|
||||
if (xfb_obj->Buffers[0])
|
||||
dw3 |= linked_xfb_info->BufferStride[0] * 4;
|
||||
|
@@ -71,7 +71,6 @@ $(intermediates)/program/lex.yy.c: $(LOCAL_PATH)/program_lexer.l
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(intermediates) \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src/mesa \
|
||||
$(MESA_TOP)/src/glsl
|
||||
|
@@ -598,7 +598,7 @@ static void update_array(struct st_context *st)
|
||||
const struct st_tracked_state st_update_array = {
|
||||
"st_update_array", /* name */
|
||||
{ /* dirty */
|
||||
0, /* mesa */
|
||||
_NEW_CURRENT_ATTRIB, /* mesa */
|
||||
ST_NEW_VERTEX_ARRAYS | ST_NEW_VERTEX_PROGRAM, /* st */
|
||||
},
|
||||
update_array /* update */
|
||||
|
@@ -741,6 +741,11 @@ st_TexSubImage(struct gl_context *ctx, GLuint dims,
|
||||
if (gl_target == GL_TEXTURE_CUBE_MAP) {
|
||||
gl_target = GL_TEXTURE_2D;
|
||||
}
|
||||
/* TexSubImage can specify subsets of cube map array faces
|
||||
* so we need to upload via 2D array instead */
|
||||
if (gl_target == GL_TEXTURE_CUBE_MAP_ARRAY) {
|
||||
gl_target = GL_TEXTURE_2D_ARRAY;
|
||||
}
|
||||
|
||||
/* Initialize the source texture description. */
|
||||
memset(&src_templ, 0, sizeof(src_templ));
|
||||
|
@@ -2860,7 +2860,7 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
|
||||
break;
|
||||
case ir_query_levels:
|
||||
opcode = TGSI_OPCODE_TXQ;
|
||||
lod_info = st_src_reg(PROGRAM_IMMEDIATE, 0, GLSL_TYPE_INT);
|
||||
lod_info = undef_src;
|
||||
levels_src = get_temp(ir->type);
|
||||
break;
|
||||
case ir_txf:
|
||||
@@ -3668,6 +3668,7 @@ glsl_to_tgsi_visitor::copy_propagate(void)
|
||||
inst->dst.index == inst->src[0].index) &&
|
||||
!inst->dst.reladdr &&
|
||||
!inst->saturate &&
|
||||
inst->src[0].file != PROGRAM_ARRAY &&
|
||||
!inst->src[0].reladdr &&
|
||||
!inst->src[0].reladdr2 &&
|
||||
!inst->src[0].negate) {
|
||||
@@ -4151,6 +4152,7 @@ struct st_translate {
|
||||
|
||||
struct ureg_dst arrays[MAX_ARRAYS];
|
||||
struct ureg_src *constants;
|
||||
int num_constants;
|
||||
struct ureg_src *immediates;
|
||||
struct ureg_dst outputs[PIPE_MAX_SHADER_OUTPUTS];
|
||||
struct ureg_src inputs[PIPE_MAX_SHADER_INPUTS];
|
||||
@@ -4351,7 +4353,7 @@ src_register(struct st_translate *t, const struct st_src_reg *reg)
|
||||
{
|
||||
switch(reg->file) {
|
||||
case PROGRAM_UNDEFINED:
|
||||
return ureg_src_undef();
|
||||
return ureg_imm4f(t->ureg, 0, 0, 0, 0);
|
||||
|
||||
case PROGRAM_TEMPORARY:
|
||||
case PROGRAM_ARRAY:
|
||||
@@ -4359,15 +4361,15 @@ src_register(struct st_translate *t, const struct st_src_reg *reg)
|
||||
|
||||
case PROGRAM_UNIFORM:
|
||||
assert(reg->index >= 0);
|
||||
return t->constants[reg->index];
|
||||
return reg->index < t->num_constants ?
|
||||
t->constants[reg->index] : ureg_imm4f(t->ureg, 0, 0, 0, 0);
|
||||
case PROGRAM_STATE_VAR:
|
||||
case PROGRAM_CONSTANT: /* ie, immediate */
|
||||
if (reg->has_index2)
|
||||
return ureg_src_register(TGSI_FILE_CONSTANT, reg->index);
|
||||
else if (reg->index < 0)
|
||||
return ureg_DECL_constant(t->ureg, 0);
|
||||
else
|
||||
return t->constants[reg->index];
|
||||
return reg->index >= 0 && reg->index < t->num_constants ?
|
||||
t->constants[reg->index] : ureg_imm4f(t->ureg, 0, 0, 0, 0);
|
||||
|
||||
case PROGRAM_IMMEDIATE:
|
||||
return t->immediates[reg->index];
|
||||
@@ -4549,10 +4551,8 @@ compile_tgsi_instruction(struct st_translate *t,
|
||||
inst->saturate,
|
||||
clamp_dst_color_output);
|
||||
|
||||
for (i = 0; i < num_src; i++) {
|
||||
assert(inst->src[i].file != PROGRAM_UNDEFINED);
|
||||
for (i = 0; i < num_src; i++)
|
||||
src[i] = translate_src(t, &inst->src[i]);
|
||||
}
|
||||
|
||||
switch(inst->op) {
|
||||
case TGSI_OPCODE_BGNLOOP:
|
||||
@@ -5082,6 +5082,7 @@ st_translate_program(
|
||||
ret = PIPE_ERROR_OUT_OF_MEMORY;
|
||||
goto out;
|
||||
}
|
||||
t->num_constants = proginfo->Parameters->NumParameters;
|
||||
|
||||
for (i = 0; i < proginfo->Parameters->NumParameters; i++) {
|
||||
switch (proginfo->Parameters->Parameters[i].Type) {
|
||||
@@ -5181,6 +5182,7 @@ out:
|
||||
free(t->insn);
|
||||
free(t->labels);
|
||||
free(t->constants);
|
||||
t->num_constants = 0;
|
||||
free(t->immediates);
|
||||
|
||||
if (t->error) {
|
||||
|
@@ -177,7 +177,7 @@ st_gl_texture_dims_to_pipe_dims(GLenum texture,
|
||||
*widthOut = widthIn;
|
||||
*heightOut = heightIn;
|
||||
*depthOut = 1;
|
||||
*layersOut = depthIn;
|
||||
*layersOut = util_align_npot(depthIn, 6);
|
||||
break;
|
||||
default:
|
||||
assert(0 && "Unexpected texture in st_gl_texture_dims_to_pipe_dims()");
|
||||
|
@@ -167,6 +167,8 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
|
||||
struct gl_buffer_object *indirect)
|
||||
{
|
||||
GLuint prim_num;
|
||||
struct _mesa_prim new_prim;
|
||||
struct _mesa_index_buffer new_ib;
|
||||
struct sub_primitive *sub_prims;
|
||||
struct sub_primitive *sub_prim;
|
||||
GLuint num_sub_prims;
|
||||
@@ -182,8 +184,6 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
|
||||
|
||||
/* If there is an indirect buffer, map it and extract the draw params */
|
||||
if (indirect && prims[0].is_indirect) {
|
||||
struct _mesa_prim new_prim = *prims;
|
||||
struct _mesa_index_buffer new_ib = *ib;
|
||||
const uint32_t *indirect_params;
|
||||
if (!ctx->Driver.MapBufferRange(ctx, 0, indirect->Size, GL_MAP_READ_BIT,
|
||||
indirect, MAP_INTERNAL)) {
|
||||
@@ -195,6 +195,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
|
||||
}
|
||||
|
||||
assert(nr_prims == 1);
|
||||
new_prim = prims[0];
|
||||
indirect_params = (const uint32_t *)
|
||||
ADD_POINTERS(indirect->Mappings[MAP_INTERNAL].Pointer,
|
||||
new_prim.indirect_offset);
|
||||
@@ -206,6 +207,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
|
||||
new_prim.basevertex = indirect_params[3];
|
||||
new_prim.base_instance = indirect_params[4];
|
||||
|
||||
new_ib = *ib;
|
||||
new_ib.count = new_prim.count;
|
||||
|
||||
prims = &new_prim;
|
||||
|
@@ -35,8 +35,7 @@ LOCAL_SRC_FILES := \
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src/mesa \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src
|
||||
$(MESA_TOP)/src/mapi
|
||||
|
||||
LOCAL_MODULE := libmesa_util
|
||||
|
||||
@@ -75,8 +74,7 @@ LOCAL_SRC_FILES := \
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src/mesa \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src
|
||||
$(MESA_TOP)/src/mapi
|
||||
|
||||
LOCAL_MODULE := libmesa_util
|
||||
|
||||
|
Reference in New Issue
Block a user