Merge branch 'mesa_7_5_branch'
Conflicts: Makefile src/gallium/drivers/softpipe/sp_screen.c src/mesa/main/version.h
This commit is contained in:
commit
a18e209edb
|
@ -123,48 +123,46 @@ These are the instructions for making a new Mesa release.
|
||||||
|
|
||||||
<H3>Get latest source files</H3>
|
<H3>Get latest source files</H3>
|
||||||
<p>
|
<p>
|
||||||
Use "cvs update -dAP " to get the latest Mesa files from CVS.
|
Use git to get the latest Mesa files from the git repository, from whatever
|
||||||
|
branch is relevant.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<H3>Verify and update version info</H3>
|
<H3>Verify and update version info</H3>
|
||||||
<p>
|
<p>
|
||||||
Create/edit the docs/RELNOTES-X.Y file to document what's new in the release.
|
Create/edit the docs/relnotes-x.y.html file to document what's new in the release.
|
||||||
Add the new RELNOTES-X.Y file to <a href="relnotes.html">relnotes.html</a>.
|
Add the new relnotes-x.y.html file to <a href="relnotes.html">relnotes.html</a>.
|
||||||
Update the docs/VERSIONS file too.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Edit the MESA_MAJOR, MESA_MINOR and MESA_TINY version numbers in
|
Update the MESA_MAJOR, MESA_MINOR and MESA_TINY version numbers in
|
||||||
configs/default.
|
configs/default.
|
||||||
|
Also update the VERSION line in the top-level Makefile.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Make sure the values in src/mesa/main/version.h are correct.
|
Make sure the values in src/mesa/main/version.h are correct.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
|
||||||
Edit the top-level Makefile and verify that DIRECTORY, LIB_NAME and
|
|
||||||
DEMO_NAME are correct.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Update the docs/news.html file and docs/download.html files.
|
Update the docs/news.html file and docs/download.html files.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Check in all updates to CVS.
|
Check in all updates to git.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Tag the CVS files with the release name (in the form <b>mesa_X_Y</b>).
|
Tag the files with the release name (in the form <b>mesa_X_Y</b>)
|
||||||
|
with: <code>git tag -a mesa_X_Y</code>
|
||||||
|
Then: <code>git push origin mesa_X_Y</code>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<H3>Make the tarballs</H3>
|
<H3>Make the tarballs</H3>
|
||||||
<p>
|
<p>
|
||||||
Make a symbolic link from $(DIRECTORY) to 'Mesa'. For example,
|
Make a symbolic link from $(DIRECTORY) to 'Mesa'. For example,
|
||||||
ln -s Mesa Mesa-6.3
|
<code>ln -s Mesa Mesa-7.5</code>
|
||||||
This is needed in order to make a correct tar file in the next step.
|
This is needed in order to make a correct tar file in the next step.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -177,7 +175,7 @@ Make the distribution files. From inside the Mesa directory:
|
||||||
<p>
|
<p>
|
||||||
After the tarballs are created, the md5 checksums for the files will
|
After the tarballs are created, the md5 checksums for the files will
|
||||||
be computed.
|
be computed.
|
||||||
Add them to the docs/news.html file.
|
Add them to the docs/relnotes-X.Y.html file.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -191,9 +189,21 @@ Follow the directions on SourceForge for creating a new "release" and
|
||||||
uploading the tarballs.
|
uploading the tarballs.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Basically, to upload the tarball files with:
|
||||||
|
<br>
|
||||||
|
<code>
|
||||||
|
rsync -avP ssh Mesa*-X.Y.* USERNAME@frs.sourceforge.net:uploads/
|
||||||
|
</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Update the web site by copying the docs/ directory's files to
|
Update the web site by copying the docs/ directory's files to
|
||||||
/home/users/b/br/brianp/mesa-www/htdocs/
|
/home/users/b/br/brianp/mesa-www/htdocs/ with:
|
||||||
|
<br>
|
||||||
|
<code>
|
||||||
|
sftp USERNAME,mesa3d@web.sourceforge.net
|
||||||
|
</code>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -11,6 +11,21 @@
|
||||||
<H1>News</H1>
|
<H1>News</H1>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>June 23, 2009</h2>
|
||||||
|
<p>
|
||||||
|
<a href="relnotes-7.4.4.html">Mesa 7.4.4</a> is released.
|
||||||
|
This is a stable release that fixes a regression in the i915/i965 drivers
|
||||||
|
that slipped into the 7.4.3 release.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>June 19, 2009</h2>
|
||||||
|
<p>
|
||||||
|
<a href="relnotes-7.4.3.html">Mesa 7.4.3</a> is released.
|
||||||
|
This is a stable release fixing bugs since the 7.4.2 release.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<h2>May 15, 2009</h2>
|
<h2>May 15, 2009</h2>
|
||||||
<p>
|
<p>
|
||||||
<a href="relnotes-7.4.2.html">Mesa 7.4.2</a> is released.
|
<a href="relnotes-7.4.2.html">Mesa 7.4.2</a> is released.
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
<HTML>
|
||||||
|
|
||||||
|
<TITLE>Mesa Release Notes</TITLE>
|
||||||
|
|
||||||
|
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
|
||||||
|
|
||||||
|
<BODY>
|
||||||
|
|
||||||
|
<body bgcolor="#eeeeee">
|
||||||
|
|
||||||
|
<H1>Mesa 7.4.3 Release Notes / 19 June 2009</H1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Mesa 7.4.3 is a stable development release fixing bugs since the 7.4.2 release.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Mesa 7.4.3 implements the OpenGL 2.1 API, but the version reported by
|
||||||
|
glGetString(GL_VERSION) depends on the particular driver being used.
|
||||||
|
Some drivers don't support all the features required in OpenGL 2.1.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
|
||||||
|
for DRI hardware acceleration.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>MD5 checksums</h2>
|
||||||
|
<pre>
|
||||||
|
34c5a6c47ed51f31c4fa36e269831352 MesaLib-7.4.3.tar.gz
|
||||||
|
70a983ba3deaa8bd63b18bbab283f698 MesaLib-7.4.3.tar.bz2
|
||||||
|
34f21b3205b271d575030aa98a2dda51 MesaLib-7.4.3.zip
|
||||||
|
56752b7adede212e6097afb10d0c0d59 MesaDemos-7.4.3.tar.gz
|
||||||
|
8ffa51c4833b1e298300a005e2d7ca2a MesaDemos-7.4.3.tar.bz2
|
||||||
|
0037d24d41400d6fb9800ae55b8c863f MesaDemos-7.4.3.zip
|
||||||
|
20e24f6692c0c90e7e3b220f79c4108d MesaGLUT-7.4.3.tar.gz
|
||||||
|
03a4beeef74fc5ef0b1d6d04710e5a8a MesaGLUT-7.4.3.tar.bz2
|
||||||
|
273788230adbdb9d57371309adedcf5f MesaGLUT-7.4.3.zip
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Bug fixes</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Fixed texture object reference counting bug (bug 21756)
|
||||||
|
<li>Allow depth/stencil textures to be attached to GL_STENCIL_ATTACHMENT point
|
||||||
|
(SF bug 2793846)
|
||||||
|
<li>Added missing glGet case for GL_VERTEX_ARRAY_BINDING_APPLE
|
||||||
|
<li>Fixed some OSMesa build issues
|
||||||
|
<li>Fixed a vertex buffer object crash
|
||||||
|
<li>Fixed broken glTexImage3D() when image type = GL_BITMAP
|
||||||
|
<li>Fixed some GLSL preprocessor bugs
|
||||||
|
<li>Fixed framebuffer mem leak in i945/i965 DRI drivers
|
||||||
|
<li>Fixed texture coordinate repeat bug in swrast (bug 21872)
|
||||||
|
<li>Fixed incorrect viewport clamping (lower bound is zero, not one)
|
||||||
|
<li>GLX fix for glean's makeCurrent test case
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Driver Status</h2>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
Driver Status
|
||||||
|
---------------------- ----------------------
|
||||||
|
DRI drivers varies with the driver
|
||||||
|
XMesa/GLX (on Xlib) implements OpenGL 2.1
|
||||||
|
OSMesa (off-screen) implements OpenGL 2.1
|
||||||
|
Windows/Win32 implements OpenGL 2.1
|
||||||
|
Glide (3dfx Voodoo1/2) implements OpenGL 1.3
|
||||||
|
SVGA unsupported
|
||||||
|
Wind River UGL unsupported
|
||||||
|
DJGPP unsupported
|
||||||
|
GGI unsupported
|
||||||
|
BeOS unsupported
|
||||||
|
Allegro unsupported
|
||||||
|
D3D unsupported
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,68 @@
|
||||||
|
<HTML>
|
||||||
|
|
||||||
|
<TITLE>Mesa Release Notes</TITLE>
|
||||||
|
|
||||||
|
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
|
||||||
|
|
||||||
|
<BODY>
|
||||||
|
|
||||||
|
<body bgcolor="#eeeeee">
|
||||||
|
|
||||||
|
<H1>Mesa 7.4.4 Release Notes / 23 June 2009</H1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Mesa 7.4.4 is a stable development release fixing bugs since the 7.4.3 release.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Mesa 7.4.4 implements the OpenGL 2.1 API, but the version reported by
|
||||||
|
glGetString(GL_VERSION) depends on the particular driver being used.
|
||||||
|
Some drivers don't support all the features required in OpenGL 2.1.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
|
||||||
|
for DRI hardware acceleration.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>MD5 checksums</h2>
|
||||||
|
<pre>
|
||||||
|
0b56fe5a88ab0c3c5b2da5068f63f416 MesaLib-7.4.4.tar.gz
|
||||||
|
b66528d314c574dccbe0ed963cac5e93 MesaLib-7.4.4.tar.bz2
|
||||||
|
2818076f3ba23fa87fdfe4602a637a18 MesaLib-7.4.4.zip
|
||||||
|
3e77b208386c47b18165bce5ae317e2c MesaDemos-7.4.4.tar.gz
|
||||||
|
628142ec9a54cd28cc027e6ce26cff47 MesaDemos-7.4.4.tar.bz2
|
||||||
|
d08a30d30ab7174859aa709cba6c726d MesaDemos-7.4.4.zip
|
||||||
|
e6e91ba16e274d40cf3a97ad3218af01 MesaGLUT-7.4.4.tar.gz
|
||||||
|
e14bbb52517e8121b31f1387515365ab MesaGLUT-7.4.4.tar.bz2
|
||||||
|
f10ed20469753c2b3d68c99854f80fd4 MesaGLUT-7.4.4.zip
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Bug fixes</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Fixed i965/i915 segfault in screen destruction (bug 22408)
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Driver Status</h2>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
Driver Status
|
||||||
|
---------------------- ----------------------
|
||||||
|
DRI drivers varies with the driver
|
||||||
|
XMesa/GLX (on Xlib) implements OpenGL 2.1
|
||||||
|
OSMesa (off-screen) implements OpenGL 2.1
|
||||||
|
Windows/Win32 implements OpenGL 2.1
|
||||||
|
Glide (3dfx Voodoo1/2) implements OpenGL 1.3
|
||||||
|
SVGA unsupported
|
||||||
|
Wind River UGL unsupported
|
||||||
|
DJGPP unsupported
|
||||||
|
GGI unsupported
|
||||||
|
BeOS unsupported
|
||||||
|
Allegro unsupported
|
||||||
|
D3D unsupported
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -68,6 +68,8 @@ including GL_ATI_separate_stencil, GL_EXT_stencil_two_side and OpenGL 2.0
|
||||||
<li>GL_EXT_texture_swizzle extension (software drivers, i965 driver)
|
<li>GL_EXT_texture_swizzle extension (software drivers, i965 driver)
|
||||||
<li>Updated SPARC assembly optimizations (David S. Miller)
|
<li>Updated SPARC assembly optimizations (David S. Miller)
|
||||||
<li>Initial support for separate compilation units in GLSL compiler.
|
<li>Initial support for separate compilation units in GLSL compiler.
|
||||||
|
<li>Increased max number of generic GLSL varying variables to 16 (formerly 8).
|
||||||
|
<li>GLSL linker now detects when too many varying variables are used.
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
@ -75,6 +77,7 @@ including GL_ATI_separate_stencil, GL_EXT_stencil_two_side and OpenGL 2.0
|
||||||
<ul>
|
<ul>
|
||||||
<li>Lots of i965 driver bug fixes
|
<li>Lots of i965 driver bug fixes
|
||||||
<li>Fixed some GLSL preprocessor bugs
|
<li>Fixed some GLSL preprocessor bugs
|
||||||
|
<li>GLSL: continue inside of a for-loop didn't work
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,6 @@
|
||||||
|
|
||||||
<H1>Release Notes</H1>
|
<H1>Release Notes</H1>
|
||||||
|
|
||||||
<p>
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 6.5) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 6.4) designate stable releases.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The release notes summarize what's new or changed in each Mesa release.
|
The release notes summarize what's new or changed in each Mesa release.
|
||||||
</p>
|
</p>
|
||||||
|
@ -22,6 +15,8 @@ The release notes summarize what's new or changed in each Mesa release.
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="relnotes-7.6.html">7.6 release notes</A>
|
<LI><A HREF="relnotes-7.6.html">7.6 release notes</A>
|
||||||
<LI><A HREF="relnotes-7.5.html">7.5 release notes</A>
|
<LI><A HREF="relnotes-7.5.html">7.5 release notes</A>
|
||||||
|
<LI><A HREF="relnotes-7.4.4.html">7.4.4 release notes</A>
|
||||||
|
<LI><A HREF="relnotes-7.4.3.html">7.4.3 release notes</A>
|
||||||
<LI><A HREF="relnotes-7.4.2.html">7.4.2 release notes</A>
|
<LI><A HREF="relnotes-7.4.2.html">7.4.2 release notes</A>
|
||||||
<LI><A HREF="relnotes-7.4.1.html">7.4.1 release notes</A>
|
<LI><A HREF="relnotes-7.4.1.html">7.4.1 release notes</A>
|
||||||
<LI><A HREF="relnotes-7.4.html">7.4 release notes</A>
|
<LI><A HREF="relnotes-7.4.html">7.4 release notes</A>
|
||||||
|
|
|
@ -583,10 +583,14 @@ ParseOptions(int argc, char *argv[])
|
||||||
int i;
|
int i;
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-fs") == 0) {
|
if (strcmp(argv[i], "-fs") == 0) {
|
||||||
FragProgFile = argv[i+1];
|
FragProgFile = argv[++i];
|
||||||
}
|
}
|
||||||
else if (strcmp(argv[i], "-vs") == 0) {
|
else if (strcmp(argv[i], "-vs") == 0) {
|
||||||
VertProgFile = argv[i+1];
|
VertProgFile = argv[++i];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "unknown option %s\n", argv[i]);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
"""dxsdk
|
||||||
|
|
||||||
|
Tool-specific initialization for Microsoft DirectX SDK
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (c) 2009 VMware, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
# a copy of this software and associated documentation files (the
|
||||||
|
# "Software"), to deal in the Software without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
# permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# in all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
||||||
|
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||||
|
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
|
||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
import SCons.Errors
|
||||||
|
import SCons.Util
|
||||||
|
|
||||||
|
|
||||||
|
def get_dxsdk_root(env):
|
||||||
|
try:
|
||||||
|
return os.environ['DXSDK_DIR']
|
||||||
|
except KeyError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_dxsdk_paths(env):
|
||||||
|
dxsdk_root = get_dxsdk_root(env)
|
||||||
|
if dxsdk_root is None:
|
||||||
|
raise SCons.Errors.InternalError, "DirectX SDK not found"
|
||||||
|
|
||||||
|
if env['machine'] in ('generic', 'x86'):
|
||||||
|
target_cpu = 'x86'
|
||||||
|
elif env['machine'] == 'x86_64':
|
||||||
|
target_cpu = 'x64'
|
||||||
|
else:
|
||||||
|
raise SCons.Errors.InternalError, "Unsupported target machine"
|
||||||
|
include_dir = 'Include'
|
||||||
|
|
||||||
|
env.Append(CPPDEFINES = [('HAVE_DXSDK', '1')])
|
||||||
|
env.Prepend(CPPPATH = [os.path.join(dxsdk_root, 'Include')])
|
||||||
|
env.Prepend(LIBPATH = [os.path.join(dxsdk_root, 'Lib', target_cpu)])
|
||||||
|
|
||||||
|
def generate(env):
|
||||||
|
get_dxsdk_paths(env)
|
||||||
|
|
||||||
|
def exists(env):
|
||||||
|
return get_dxsdk_root(env) is not None
|
||||||
|
|
||||||
|
# vim:set ts=4 sw=4 et:
|
|
@ -319,74 +319,78 @@ def generate(env):
|
||||||
env.Append(CPPDEFINES = cppdefines)
|
env.Append(CPPDEFINES = cppdefines)
|
||||||
|
|
||||||
# C compiler options
|
# C compiler options
|
||||||
cflags = []
|
cflags = [] # C
|
||||||
|
cxxflags = [] # C++
|
||||||
|
ccflags = [] # C & C++
|
||||||
if gcc:
|
if gcc:
|
||||||
if debug:
|
if debug:
|
||||||
cflags += ['-O0', '-g3']
|
ccflags += ['-O0', '-g3']
|
||||||
elif env['toolchain'] == 'crossmingw':
|
elif env['toolchain'] == 'crossmingw':
|
||||||
cflags += ['-O0', '-g3'] # mingw 4.2.1 optimizer is broken
|
ccflags += ['-O0', '-g3'] # mingw 4.2.1 optimizer is broken
|
||||||
else:
|
else:
|
||||||
cflags += ['-O3', '-g3']
|
ccflags += ['-O3', '-g3']
|
||||||
if env['profile']:
|
if env['profile']:
|
||||||
cflags += ['-pg']
|
ccflags += ['-pg']
|
||||||
if env['machine'] == 'x86':
|
if env['machine'] == 'x86':
|
||||||
cflags += [
|
ccflags += [
|
||||||
'-m32',
|
'-m32',
|
||||||
#'-march=pentium4',
|
#'-march=pentium4',
|
||||||
'-mmmx', '-msse', '-msse2', # enable SIMD intrinsics
|
'-mmmx', '-msse', '-msse2', # enable SIMD intrinsics
|
||||||
#'-mfpmath=sse',
|
#'-mfpmath=sse',
|
||||||
]
|
]
|
||||||
if env['machine'] == 'x86_64':
|
if env['machine'] == 'x86_64':
|
||||||
cflags += ['-m64']
|
ccflags += ['-m64']
|
||||||
# See also:
|
# See also:
|
||||||
# - http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
|
# - http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
|
||||||
cflags += [
|
ccflags += [
|
||||||
'-Werror=declaration-after-statement',
|
|
||||||
'-Wall',
|
'-Wall',
|
||||||
'-Wmissing-prototypes',
|
|
||||||
'-Wmissing-field-initializers',
|
'-Wmissing-field-initializers',
|
||||||
'-Wpointer-arith',
|
'-Wpointer-arith',
|
||||||
'-Wno-long-long',
|
'-Wno-long-long',
|
||||||
'-ffast-math',
|
'-ffast-math',
|
||||||
'-std=gnu99',
|
|
||||||
'-fmessage-length=0', # be nice to Eclipse
|
'-fmessage-length=0', # be nice to Eclipse
|
||||||
]
|
]
|
||||||
|
cflags += [
|
||||||
|
'-Werror=declaration-after-statement',
|
||||||
|
'-Wmissing-prototypes',
|
||||||
|
'-std=gnu99',
|
||||||
|
]
|
||||||
if msvc:
|
if msvc:
|
||||||
# See also:
|
# See also:
|
||||||
# - http://msdn.microsoft.com/en-us/library/19z1t1wy.aspx
|
# - http://msdn.microsoft.com/en-us/library/19z1t1wy.aspx
|
||||||
# - cl /?
|
# - cl /?
|
||||||
if debug:
|
if debug:
|
||||||
cflags += [
|
ccflags += [
|
||||||
'/Od', # disable optimizations
|
'/Od', # disable optimizations
|
||||||
'/Oi', # enable intrinsic functions
|
'/Oi', # enable intrinsic functions
|
||||||
'/Oy-', # disable frame pointer omission
|
'/Oy-', # disable frame pointer omission
|
||||||
'/GL-', # disable whole program optimization
|
'/GL-', # disable whole program optimization
|
||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
cflags += [
|
ccflags += [
|
||||||
'/O2', # optimize for speed
|
'/O2', # optimize for speed
|
||||||
#'/fp:fast', # fast floating point
|
#'/fp:fast', # fast floating point
|
||||||
]
|
]
|
||||||
if env['profile']:
|
if env['profile']:
|
||||||
cflags += [
|
ccflags += [
|
||||||
'/Gh', # enable _penter hook function
|
'/Gh', # enable _penter hook function
|
||||||
'/GH', # enable _pexit hook function
|
'/GH', # enable _pexit hook function
|
||||||
]
|
]
|
||||||
cflags += [
|
ccflags += [
|
||||||
'/W3', # warning level
|
'/W3', # warning level
|
||||||
#'/Wp64', # enable 64 bit porting warnings
|
#'/Wp64', # enable 64 bit porting warnings
|
||||||
]
|
]
|
||||||
if env['machine'] == 'x86':
|
if env['machine'] == 'x86':
|
||||||
cflags += [
|
ccflags += [
|
||||||
#'/QIfist', # Suppress _ftol
|
#'/QIfist', # Suppress _ftol
|
||||||
#'/arch:SSE2', # use the SSE2 instructions
|
#'/arch:SSE2', # use the SSE2 instructions
|
||||||
]
|
]
|
||||||
if platform == 'windows':
|
if platform == 'windows':
|
||||||
cflags += [
|
ccflags += [
|
||||||
# TODO
|
# TODO
|
||||||
]
|
]
|
||||||
if platform == 'winddk':
|
if platform == 'winddk':
|
||||||
cflags += [
|
ccflags += [
|
||||||
'/Zl', # omit default library name in .OBJ
|
'/Zl', # omit default library name in .OBJ
|
||||||
'/Zp8', # 8bytes struct member alignment
|
'/Zp8', # 8bytes struct member alignment
|
||||||
'/Gy', # separate functions for linker
|
'/Gy', # separate functions for linker
|
||||||
|
@ -405,7 +409,7 @@ def generate(env):
|
||||||
]
|
]
|
||||||
if platform == 'wince':
|
if platform == 'wince':
|
||||||
# See also C:\WINCE600\public\common\oak\misc\makefile.def
|
# See also C:\WINCE600\public\common\oak\misc\makefile.def
|
||||||
cflags += [
|
ccflags += [
|
||||||
'/Zl', # omit default library name in .OBJ
|
'/Zl', # omit default library name in .OBJ
|
||||||
'/GF', # enable read-only string pooling
|
'/GF', # enable read-only string pooling
|
||||||
'/GR-', # disable C++ RTTI
|
'/GR-', # disable C++ RTTI
|
||||||
|
@ -422,8 +426,9 @@ def generate(env):
|
||||||
# See http://scons.tigris.org/issues/show_bug.cgi?id=1656
|
# See http://scons.tigris.org/issues/show_bug.cgi?id=1656
|
||||||
env.EnsureSConsVersion(0, 98, 0)
|
env.EnsureSConsVersion(0, 98, 0)
|
||||||
env['PDB'] = '${TARGET.base}.pdb'
|
env['PDB'] = '${TARGET.base}.pdb'
|
||||||
|
env.Append(CCFLAGS = ccflags)
|
||||||
env.Append(CFLAGS = cflags)
|
env.Append(CFLAGS = cflags)
|
||||||
env.Append(CXXFLAGS = cflags)
|
env.Append(CXXFLAGS = cxxflags)
|
||||||
|
|
||||||
if env['platform'] == 'windows' and msvc:
|
if env['platform'] == 'windows' and msvc:
|
||||||
# Choose the appropriate MSVC CRT
|
# Choose the appropriate MSVC CRT
|
||||||
|
|
|
@ -416,16 +416,18 @@ def generate(env):
|
||||||
# See also:
|
# See also:
|
||||||
# - http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
|
# - http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
|
||||||
ccflags += [
|
ccflags += [
|
||||||
'-Werror=declaration-after-statement',
|
|
||||||
'-Wall',
|
'-Wall',
|
||||||
'-Wmissing-prototypes',
|
|
||||||
'-Wmissing-field-initializers',
|
'-Wmissing-field-initializers',
|
||||||
'-Wpointer-arith',
|
'-Wpointer-arith',
|
||||||
'-Wno-long-long',
|
'-Wno-long-long',
|
||||||
'-ffast-math',
|
'-ffast-math',
|
||||||
'-std=gnu99',
|
|
||||||
'-fmessage-length=0', # be nice to Eclipse
|
'-fmessage-length=0', # be nice to Eclipse
|
||||||
]
|
]
|
||||||
|
cflags += [
|
||||||
|
'-Werror=declaration-after-statement',
|
||||||
|
'-Wmissing-prototypes',
|
||||||
|
'-std=gnu99',
|
||||||
|
]
|
||||||
if msvc:
|
if msvc:
|
||||||
# See also:
|
# See also:
|
||||||
# - http://msdn.microsoft.com/en-us/library/19z1t1wy.aspx
|
# - http://msdn.microsoft.com/en-us/library/19z1t1wy.aspx
|
||||||
|
|
|
@ -86,6 +86,8 @@ cell_get_param(struct pipe_screen *screen, int param)
|
||||||
return 1; /* XXX not really true */
|
return 1; /* XXX not really true */
|
||||||
case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
|
case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
|
||||||
return 0; /* XXX to do */
|
return 0; /* XXX to do */
|
||||||
|
case PIPE_CAP_TGSI_CONT_SUPPORTED:
|
||||||
|
return 1;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,6 +87,8 @@ softpipe_get_param(struct pipe_screen *screen, int param)
|
||||||
return 8; /* max 128x128x128 */
|
return 8; /* max 128x128x128 */
|
||||||
case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
|
case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
|
||||||
return 13; /* max 4Kx4K */
|
return 13; /* max 4Kx4K */
|
||||||
|
case PIPE_CAP_TGSI_CONT_SUPPORTED:
|
||||||
|
return 1;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -302,6 +302,7 @@ enum pipe_transfer_usage {
|
||||||
#define PIPE_CAP_TEXTURE_MIRROR_CLAMP 24
|
#define PIPE_CAP_TEXTURE_MIRROR_CLAMP 24
|
||||||
#define PIPE_CAP_TEXTURE_MIRROR_REPEAT 25
|
#define PIPE_CAP_TEXTURE_MIRROR_REPEAT 25
|
||||||
#define PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS 26
|
#define PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS 26
|
||||||
|
#define PIPE_CAP_TGSI_CONT_SUPPORTED 27
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -71,6 +71,8 @@ int INTEL_DEBUG = (0);
|
||||||
#define DRIVER_DATE_GEM "GEM " DRIVER_DATE
|
#define DRIVER_DATE_GEM "GEM " DRIVER_DATE
|
||||||
|
|
||||||
|
|
||||||
|
static void intel_flush(GLcontext *ctx, GLboolean needs_mi_flush);
|
||||||
|
|
||||||
static const GLubyte *
|
static const GLubyte *
|
||||||
intelGetString(GLcontext * ctx, GLenum name)
|
intelGetString(GLcontext * ctx, GLenum name)
|
||||||
{
|
{
|
||||||
|
@ -397,6 +399,15 @@ intel_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!intel->internal_viewport_call && ctx->DrawBuffer->Name == 0) {
|
if (!intel->internal_viewport_call && ctx->DrawBuffer->Name == 0) {
|
||||||
|
/* If we're rendering to the fake front buffer, make sure all the pending
|
||||||
|
* drawing has landed on the real front buffer. Otherwise when we
|
||||||
|
* eventually get to DRI2GetBuffersWithFormat the stale real front
|
||||||
|
* buffer contents will get copied to the new fake front buffer.
|
||||||
|
*/
|
||||||
|
if (intel->is_front_buffer_rendering) {
|
||||||
|
intel_flush(ctx, GL_FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
intel_update_renderbuffers(driContext, driContext->driDrawablePriv);
|
intel_update_renderbuffers(driContext, driContext->driDrawablePriv);
|
||||||
if (driContext->driDrawablePriv != driContext->driReadablePriv)
|
if (driContext->driDrawablePriv != driContext->driReadablePriv)
|
||||||
intel_update_renderbuffers(driContext, driContext->driReadablePriv);
|
intel_update_renderbuffers(driContext, driContext->driReadablePriv);
|
||||||
|
|
|
@ -2049,6 +2049,7 @@ struct gl_shader_state
|
||||||
struct gl_shader_program *CurrentProgram; /**< The user-bound program */
|
struct gl_shader_program *CurrentProgram; /**< The user-bound program */
|
||||||
/** Driver-selectable options: */
|
/** Driver-selectable options: */
|
||||||
GLboolean EmitHighLevelInstructions; /**< IF/ELSE/ENDIF vs. BRA, etc. */
|
GLboolean EmitHighLevelInstructions; /**< IF/ELSE/ENDIF vs. BRA, etc. */
|
||||||
|
GLboolean EmitContReturn; /**< Emit CONT/RET opcodes? */
|
||||||
GLboolean EmitCondCodes; /**< Use condition codes? */
|
GLboolean EmitCondCodes; /**< Use condition codes? */
|
||||||
GLboolean EmitComments; /**< Annotated instructions */
|
GLboolean EmitComments; /**< Annotated instructions */
|
||||||
void *MemPool;
|
void *MemPool;
|
||||||
|
|
|
@ -402,6 +402,7 @@ _mesa_init_shader_state(GLcontext * ctx)
|
||||||
* are generated by the GLSL compiler.
|
* are generated by the GLSL compiler.
|
||||||
*/
|
*/
|
||||||
ctx->Shader.EmitHighLevelInstructions = GL_TRUE;
|
ctx->Shader.EmitHighLevelInstructions = GL_TRUE;
|
||||||
|
ctx->Shader.EmitContReturn = GL_TRUE;
|
||||||
ctx->Shader.EmitCondCodes = GL_FALSE;
|
ctx->Shader.EmitCondCodes = GL_FALSE;
|
||||||
ctx->Shader.EmitComments = GL_FALSE;
|
ctx->Shader.EmitComments = GL_FALSE;
|
||||||
ctx->Shader.Flags = get_shader_flags();
|
ctx->Shader.Flags = get_shader_flags();
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -31,6 +31,9 @@
|
||||||
#include "slang_compile.h"
|
#include "slang_compile.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_LOOP_DEPTH 30
|
||||||
|
|
||||||
|
|
||||||
typedef struct slang_assemble_ctx_
|
typedef struct slang_assemble_ctx_
|
||||||
{
|
{
|
||||||
slang_atom_pool *atoms;
|
slang_atom_pool *atoms;
|
||||||
|
@ -39,11 +42,19 @@ typedef struct slang_assemble_ctx_
|
||||||
struct gl_sl_pragmas *pragmas;
|
struct gl_sl_pragmas *pragmas;
|
||||||
slang_var_table *vartable;
|
slang_var_table *vartable;
|
||||||
slang_info_log *log;
|
slang_info_log *log;
|
||||||
struct slang_label_ *curFuncEndLabel;
|
|
||||||
struct slang_ir_node_ *CurLoop;
|
/* current loop stack */
|
||||||
|
const slang_operation *LoopOperStack[MAX_LOOP_DEPTH];
|
||||||
|
struct slang_ir_node_ *LoopIRStack[MAX_LOOP_DEPTH];
|
||||||
|
GLuint LoopDepth;
|
||||||
|
|
||||||
|
/* current function */
|
||||||
struct slang_function_ *CurFunction;
|
struct slang_function_ *CurFunction;
|
||||||
GLuint UnrollLoop;
|
struct slang_label_ *curFuncEndLabel;
|
||||||
|
GLboolean UseReturnFlag;
|
||||||
|
|
||||||
GLboolean UnresolvedRefs;
|
GLboolean UnresolvedRefs;
|
||||||
|
GLboolean EmitContReturn;
|
||||||
} slang_assemble_ctx;
|
} slang_assemble_ctx;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1953,6 +1953,7 @@ static int
|
||||||
parse_init_declarator(slang_parse_ctx * C, slang_output_ctx * O,
|
parse_init_declarator(slang_parse_ctx * C, slang_output_ctx * O,
|
||||||
const slang_fully_specified_type * type)
|
const slang_fully_specified_type * type)
|
||||||
{
|
{
|
||||||
|
GET_CURRENT_CONTEXT(ctx); /* a hack */
|
||||||
slang_variable *var;
|
slang_variable *var;
|
||||||
slang_atom a_name;
|
slang_atom a_name;
|
||||||
|
|
||||||
|
@ -2066,6 +2067,7 @@ parse_init_declarator(slang_parse_ctx * C, slang_output_ctx * O,
|
||||||
A.vartable = O->vartable;
|
A.vartable = O->vartable;
|
||||||
A.log = C->L;
|
A.log = C->L;
|
||||||
A.curFuncEndLabel = NULL;
|
A.curFuncEndLabel = NULL;
|
||||||
|
A.EmitContReturn = ctx->Shader.EmitContReturn;
|
||||||
if (!_slang_codegen_global_variable(&A, var, C->type))
|
if (!_slang_codegen_global_variable(&A, var, C->type))
|
||||||
RETURN0;
|
RETURN0;
|
||||||
}
|
}
|
||||||
|
@ -2430,6 +2432,7 @@ parse_code_unit(slang_parse_ctx * C, slang_code_unit * unit,
|
||||||
A.program = o.program;
|
A.program = o.program;
|
||||||
A.pragmas = &shader->Pragmas;
|
A.pragmas = &shader->Pragmas;
|
||||||
A.vartable = o.vartable;
|
A.vartable = o.vartable;
|
||||||
|
A.EmitContReturn = ctx->Shader.EmitContReturn;
|
||||||
A.log = C->L;
|
A.log = C->L;
|
||||||
|
|
||||||
/* main() takes no parameters */
|
/* main() takes no parameters */
|
||||||
|
|
|
@ -119,12 +119,14 @@ slang_operation_copy(slang_operation * x, const slang_operation * y)
|
||||||
if (!slang_operation_construct(&z))
|
if (!slang_operation_construct(&z))
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
z.type = y->type;
|
z.type = y->type;
|
||||||
|
if (y->num_children > 0) {
|
||||||
z.children = (slang_operation *)
|
z.children = (slang_operation *)
|
||||||
_slang_alloc(y->num_children * sizeof(slang_operation));
|
_slang_alloc(y->num_children * sizeof(slang_operation));
|
||||||
if (z.children == NULL) {
|
if (z.children == NULL) {
|
||||||
slang_operation_destruct(&z);
|
slang_operation_destruct(&z);
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
for (z.num_children = 0; z.num_children < y->num_children;
|
for (z.num_children = 0; z.num_children < y->num_children;
|
||||||
z.num_children++) {
|
z.num_children++) {
|
||||||
if (!slang_operation_construct(&z.children[z.num_children])) {
|
if (!slang_operation_construct(&z.children[z.num_children])) {
|
||||||
|
@ -152,6 +154,15 @@ slang_operation_copy(slang_operation * x, const slang_operation * y)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* update scoping for children */
|
||||||
|
for (i = 0; i < y->num_children; i++) {
|
||||||
|
if (y->children[i].locals &&
|
||||||
|
y->children[i].locals->outer_scope == y->locals) {
|
||||||
|
z.children[i].locals->outer_scope = z.locals;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
z.var = y->var;
|
z.var = y->var;
|
||||||
z.fun = y->fun;
|
z.fun = y->fun;
|
||||||
|
@ -198,6 +209,20 @@ slang_operation_delete(slang_operation *oper)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
slang_operation_free_children(slang_operation *oper)
|
||||||
|
{
|
||||||
|
GLuint i;
|
||||||
|
for (i = 0; i < slang_oper_num_children(oper); i++) {
|
||||||
|
slang_operation *child = slang_oper_child(oper, i);
|
||||||
|
slang_operation_destruct(child);
|
||||||
|
}
|
||||||
|
_slang_free(oper->children);
|
||||||
|
oper->children = NULL;
|
||||||
|
oper->num_children = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
slang_operation *
|
slang_operation *
|
||||||
slang_operation_grow(GLuint *numChildren, slang_operation **children)
|
slang_operation_grow(GLuint *numChildren, slang_operation **children)
|
||||||
{
|
{
|
||||||
|
@ -263,6 +288,26 @@ slang_operation_insert(GLuint *numElements, slang_operation **array,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add/insert new child into given node at given position.
|
||||||
|
* \return pointer to the new child node
|
||||||
|
*/
|
||||||
|
slang_operation *
|
||||||
|
slang_operation_insert_child(slang_operation *oper, GLuint pos)
|
||||||
|
{
|
||||||
|
slang_operation *newOp;
|
||||||
|
|
||||||
|
newOp = slang_operation_insert(&oper->num_children,
|
||||||
|
&oper->children,
|
||||||
|
pos);
|
||||||
|
if (newOp) {
|
||||||
|
newOp->locals->outer_scope = oper->locals;
|
||||||
|
}
|
||||||
|
|
||||||
|
return newOp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_slang_operation_swap(slang_operation *oper0, slang_operation *oper1)
|
_slang_operation_swap(slang_operation *oper0, slang_operation *oper1)
|
||||||
{
|
{
|
||||||
|
@ -272,3 +317,16 @@ _slang_operation_swap(slang_operation *oper0, slang_operation *oper1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
slang_operation_add_children(slang_operation *oper, GLuint num_children)
|
||||||
|
{
|
||||||
|
GLuint i;
|
||||||
|
assert(oper->num_children == 0);
|
||||||
|
assert(oper->children == NULL);
|
||||||
|
oper->num_children = num_children;
|
||||||
|
oper->children = slang_operation_new(num_children);
|
||||||
|
for (i = 0; i < num_children; i++) {
|
||||||
|
oper->children[i].locals = _slang_variable_scope_new(oper->locals);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ typedef enum slang_operation_type_
|
||||||
SLANG_OPER_CONTINUE, /* "continue" statement */
|
SLANG_OPER_CONTINUE, /* "continue" statement */
|
||||||
SLANG_OPER_DISCARD, /* "discard" (kill fragment) statement */
|
SLANG_OPER_DISCARD, /* "discard" (kill fragment) statement */
|
||||||
SLANG_OPER_RETURN, /* "return" [expr] */
|
SLANG_OPER_RETURN, /* "return" [expr] */
|
||||||
|
SLANG_OPER_RETURN_INLINED, /* "return" [expr] from inlined function */
|
||||||
SLANG_OPER_LABEL, /* a jump target */
|
SLANG_OPER_LABEL, /* a jump target */
|
||||||
SLANG_OPER_EXPRESSION, /* [expr] */
|
SLANG_OPER_EXPRESSION, /* [expr] */
|
||||||
SLANG_OPER_IF, /* "if" [0] then [1] else [2] */
|
SLANG_OPER_IF, /* "if" [0] then [1] else [2] */
|
||||||
|
@ -150,6 +151,9 @@ slang_operation_new(GLuint count);
|
||||||
extern void
|
extern void
|
||||||
slang_operation_delete(slang_operation *oper);
|
slang_operation_delete(slang_operation *oper);
|
||||||
|
|
||||||
|
extern void
|
||||||
|
slang_operation_free_children(slang_operation *oper);
|
||||||
|
|
||||||
extern slang_operation *
|
extern slang_operation *
|
||||||
slang_operation_grow(GLuint *numChildren, slang_operation **children);
|
slang_operation_grow(GLuint *numChildren, slang_operation **children);
|
||||||
|
|
||||||
|
@ -157,8 +161,66 @@ extern slang_operation *
|
||||||
slang_operation_insert(GLuint *numChildren, slang_operation **children,
|
slang_operation_insert(GLuint *numChildren, slang_operation **children,
|
||||||
GLuint pos);
|
GLuint pos);
|
||||||
|
|
||||||
|
extern slang_operation *
|
||||||
|
slang_operation_insert_child(slang_operation *oper, GLuint pos);
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
_slang_operation_swap(slang_operation *oper0, slang_operation *oper1);
|
_slang_operation_swap(slang_operation *oper0, slang_operation *oper1);
|
||||||
|
|
||||||
|
|
||||||
|
extern void
|
||||||
|
slang_operation_add_children(slang_operation *oper, GLuint num_children);
|
||||||
|
|
||||||
|
|
||||||
|
/** Return number of children of given node */
|
||||||
|
static INLINE GLuint
|
||||||
|
slang_oper_num_children(const slang_operation *oper)
|
||||||
|
{
|
||||||
|
return oper->num_children;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return child of given operation node */
|
||||||
|
static INLINE slang_operation *
|
||||||
|
slang_oper_child(slang_operation *oper, GLuint child)
|
||||||
|
{
|
||||||
|
assert(child < oper->num_children);
|
||||||
|
return &oper->children[child];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Return child of given operation node, const version */
|
||||||
|
static INLINE const slang_operation *
|
||||||
|
slang_oper_child_const(const slang_operation *oper, GLuint child)
|
||||||
|
{
|
||||||
|
assert(child < oper->num_children);
|
||||||
|
return &oper->children[child];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Init oper to a boolean literal. */
|
||||||
|
static INLINE void
|
||||||
|
slang_operation_literal_bool(slang_operation *oper, GLboolean value)
|
||||||
|
{
|
||||||
|
oper->type = SLANG_OPER_LITERAL_BOOL;
|
||||||
|
oper->literal[0] =
|
||||||
|
oper->literal[1] =
|
||||||
|
oper->literal[2] =
|
||||||
|
oper->literal[3] = (float) value;
|
||||||
|
oper->literal_size = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Init oper to an int literal. */
|
||||||
|
static INLINE void
|
||||||
|
slang_operation_literal_int(slang_operation *oper, GLint value)
|
||||||
|
{
|
||||||
|
oper->type = SLANG_OPER_LITERAL_INT;
|
||||||
|
oper->literal[0] =
|
||||||
|
oper->literal[1] =
|
||||||
|
oper->literal[2] =
|
||||||
|
oper->literal[3] = (float) value;
|
||||||
|
oper->literal_size = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* SLANG_COMPILE_OPERATION_H */
|
#endif /* SLANG_COMPILE_OPERATION_H */
|
||||||
|
|
|
@ -39,6 +39,7 @@ typedef struct slang_variable_
|
||||||
GLuint array_len; /**< only if type == SLANG_SPEC_ARRAy */
|
GLuint array_len; /**< only if type == SLANG_SPEC_ARRAy */
|
||||||
struct slang_operation_ *initializer; /**< Optional initializer code */
|
struct slang_operation_ *initializer; /**< Optional initializer code */
|
||||||
GLuint size; /**< Variable's size in bytes */
|
GLuint size; /**< Variable's size in bytes */
|
||||||
|
GLboolean is_global;
|
||||||
GLboolean isTemp; /**< a named temporary (__resultTmp) */
|
GLboolean isTemp; /**< a named temporary (__resultTmp) */
|
||||||
GLboolean declared; /**< for debug */
|
GLboolean declared; /**< for debug */
|
||||||
struct slang_ir_storage_ *store; /**< Storage for this var */
|
struct slang_ir_storage_ *store; /**< Storage for this var */
|
||||||
|
|
|
@ -261,6 +261,7 @@ slang_print_tree(const slang_operation *op, int indent)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SLANG_OPER_BLOCK_NEW_SCOPE:
|
case SLANG_OPER_BLOCK_NEW_SCOPE:
|
||||||
|
case SLANG_OPER_NON_INLINED_CALL:
|
||||||
spaces(indent);
|
spaces(indent);
|
||||||
printf("{{ // new scope locals=%p outer=%p: ",
|
printf("{{ // new scope locals=%p outer=%p: ",
|
||||||
(void *) op->locals,
|
(void *) op->locals,
|
||||||
|
@ -348,6 +349,13 @@ slang_print_tree(const slang_operation *op, int indent)
|
||||||
slang_print_tree(&op->children[0], indent + 3);
|
slang_print_tree(&op->children[0], indent + 3);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SLANG_OPER_RETURN_INLINED:
|
||||||
|
spaces(indent);
|
||||||
|
printf("RETURN_INLINED\n");
|
||||||
|
if (op->num_children > 0)
|
||||||
|
slang_print_tree(&op->children[0], indent + 3);
|
||||||
|
break;
|
||||||
|
|
||||||
case SLANG_OPER_LABEL:
|
case SLANG_OPER_LABEL:
|
||||||
spaces(indent);
|
spaces(indent);
|
||||||
printf("LABEL %s\n", (char *) op->a_id);
|
printf("LABEL %s\n", (char *) op->a_id);
|
||||||
|
@ -478,7 +486,7 @@ slang_print_tree(const slang_operation *op, int indent)
|
||||||
(void *) scope,
|
(void *) scope,
|
||||||
(void *) op->locals,
|
(void *) op->locals,
|
||||||
(void *) op->locals->outer_scope);
|
(void *) op->locals->outer_scope);
|
||||||
assert(scope);
|
/*assert(scope);*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -120,6 +120,11 @@ void st_init_limits(struct st_context *st)
|
||||||
c->MaxDrawBuffers
|
c->MaxDrawBuffers
|
||||||
= CLAMP(screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS),
|
= CLAMP(screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS),
|
||||||
1, MAX_DRAW_BUFFERS);
|
1, MAX_DRAW_BUFFERS);
|
||||||
|
|
||||||
|
/* Is TGSI_OPCODE_CONT supported? */
|
||||||
|
/* XXX separate query for early function return? */
|
||||||
|
st->ctx->Shader.EmitContReturn =
|
||||||
|
screen->get_param(screen, PIPE_CAP_TGSI_CONT_SUPPORTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue