Commit Graph

45812 Commits

Author SHA1 Message Date
Paul Berry
e9ae4cadf5 glapi: update .gitignore for generated ES dispatch headers
Commit 6eff33dc (glapi: generate ES dispatch headers from core mesa)
replaced the autogenerated files
src/mapi/es1api/main/{dispatch,remap_helper}.h with new autogenerated
files src/mesa/main/api_exec_es{1,2}_{dispatch,remap_helper}.h.  This
patch updates the .gitignore files to properly ignore the new
autogenerated files, and stop ignoring the old autogenerated files.

Reviewed-by: Chia-I Wu <olv@lunarg.com>
2011-08-18 10:18:22 -07:00
José Fonseca
762bf931ca llvmpipe: Don't build lp_test_arit on MSVC.
Several issues due to expf/logf/etc either not being declared,
or being defined as a macro.
2011-08-18 18:04:44 +01:00
José Fonseca
a7f67b1c50 llvmpipe: snprintf->util_snprintf.
For MSVC.
2011-08-18 17:58:02 +01:00
José Fonseca
09042e08cb llvmpipe: Add u_math.h include.
Necessary on platforms with incomplete math.h
2011-08-18 16:06:00 +01:00
José Fonseca
7be4cf9c63 scons: Add support for LLVM-2.9 on Windows.
MinGW & MSVC, although I've only tested the former.
2011-08-18 16:00:59 +01:00
Kristian Høgsberg
4a7667b96b glx: Don't flush twice if we fallback to dri2CopySubBuffer
The flush extensions flush call indicates end of frame and should only
be called once per frame.  However, in the dri2SwapBuffer fallback
path, we call flush and then call dri2CopySubBuffer, which also calls
flush.  Refactor the code to only call flush once.
2011-08-18 09:46:06 -04:00
Marek Olšák
01680ce2f3 r600g: implement NV_primitive_restart functionality (v2)
Needed for GL3.

v2: evergreen support

I don't set PA_SU_SC_MODE_CNTL.MULTI_PRIM_IB_ENA.
piglit/primitive-restart does pass though. Tested on RV730 and EG-REDWOOD.
2011-08-18 00:25:07 +02:00
Marek Olšák
17867f06b1 r600g: fix scons build 2011-08-17 23:24:33 +02:00
Eric Anholt
3f78f71973 i965/fs: Fix 32-bit integer multiplication.
The MUL opcode does a 16bit * 32bit multiply, and we need to do the
MACH to get the top 16bit * 32bit added in.

Fixes fs-op-mult-int-*, fs-op-mult-ivec*

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2011-08-17 11:51:01 -07:00
Christoph Bumiller
34980cd153 nv50: don't drop flags definition when merging SAT with ADD/MAD 2011-08-17 20:40:43 +02:00
Brian Paul
718b894dbb st/mesa: fix incorrect loop over instruction src regs
The array of src regs is of size 3, not 4.
2011-08-17 08:12:54 -06:00
Lauri Kasanen
65bdb878a0 st/dri: Indent driconf options 2011-08-17 00:39:17 -07:00
Lauri Kasanen
59e56957cc xmlpool.h: fix a typo 2011-08-17 00:39:17 -07:00
Lauri Kasanen
b629d5ba24 xmlconfig: Make the error message more informative 2011-08-17 00:39:17 -07:00
Ian Romanick
7125f1e87d mesa: Bump instruction execution limit to 65536
Shader Model 3.0[1] requires that shaders be able to execute at least
65536 instructions.  Bump Mesa maxExec to that limit.  This allows
several vertex shaders in the OpenGL ES 2.0 conformance test suite to
run to completion.

1: http://en.wikipedia.org/wiki/High_Level_Shader_Language

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:38:44 -07:00
Ian Romanick
54c48a95e6 mesa: Add partial constant propagation pass for Mesa IR
This cleans up some code generated by the IR-to-Mesa pass for i915.
In particular, some shaders involving arrays of constant matrices
result in really bad code.

v2: Silence several warnings from merging the gl_constant_value work.
Fix DP[23] folding.  Add support for a bunch more opcodes that appear
in piglit runs on i915.

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:38:39 -07:00
Ian Romanick
ff2cfb8989 ir_to_mesa: Emit a MAD(b, -a, b) for !a && b
!a && b occurs frequently when nexted if-statements have been
flattened.  It should also be possible use a MAD for (a && b) || c,
though that would require a MAD_SAT.

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:09:44 -07:00
Ian Romanick
ba01df11c4 ir_to_mesa: Implement ir_binop_all_equal using DP4 w/SGE
The operation ir_binop_all_equal is !(a.x != b.x || a.y != b.y || a.z
!= b.z || a.w != b.w).  Logical-or is implemented using addition
(followed by clampling to [0,1]) on values of 0.0 and 1.0.  Replacing
the logical-or operators with addition gives !bool((int(a.x != b.x) +
int(a.y == b.y) + int(a.z == b.z) + int(a.w == b.w)).  This can be
implemented using a dot-product with a vector of all 1.0.  After the
dot-product, the value will be an integer on the range [0,4].

Previously a SEQ instruction was used to clamp the resulting logic
value to [0,1] and invert the result.  Using an SGE instruction on the
negation of the dot-product result has the same effect.  Many older
shader architectures do not support the SEQ instruction.  It must be
emulated using two SGE instructions and a MUL.  On these
architectures, the single SGE saves two instructions.

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:09:43 -07:00
Ian Romanick
e7bf096e8b ir_to_mesa: Implement ir_binop_any_nequal using DP4 w/saturate or DP4 w/SLT
The operation ir_binop_any_nequal is (a.x != b.x) || (a.y != b.y) ||
(a.z != b.z) || (a.w != b.w), and that is the same as any(bvec4(a.x !=
b.x, a.y != b.y, a.z != b.z, a.w != b.w)).  Implement the any() part
the same way the regular ir_unop_any is implemented.

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:09:43 -07:00
Ian Romanick
92ca560d68 ir_to_mesa: Implement ir_unop_any using DP4 w/saturate or DP4 w/SLT
This is just like the ir_binop_logic_or case.  The operation
ir_unop_any is (a.x || a.y || a.z || a.w).  Logical-or is implemented
using addition (followed by clampling to [0,1]) on values of 0.0 and
1.0.  Replacing the logical-or operators with addition gives (a.x +
a.y + a.z + a.w).  This can be implemented using a dot-product with a
vector of all 1.0.

Previously a SNE instruction was used to clamp the resulting logic
value to [0,1].  In a fragment shader, using a saturate on the
dot-product has the same effect.  Adding the saturate to the
dot-product is free, so (at least) one instruction is saved.

In a vertex shader, using an SLT on the negation of the dot-product
result has the same effect.  Many older shader architectures do not
support the SNE instruction.  It must be emulated using two SLT
instructions and an ADD.  On these architectures, the single SLT saves
two instructions.

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:09:42 -07:00
Ian Romanick
7f4c65256c ir_to_mesa: Make ir_to_mesa_visitor::emit_dp return the instruction
Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:09:41 -07:00
Ian Romanick
41f8ffe5e0 ir_to_mesa: Implement ir_binop_logic_or using an add w/saturate or add w/SLT
Logical-or is implemented using addition (followed by clampling to
[0,1]) on values of 0.0 and 1.0.  Replacing the logical-or operators
with addition gives a + b which has a result on the range [0, 2].

Previously a SNE instruction was used to clamp the resulting logic
value to [0,1].  In a fragment shader, using a saturate on the add has
the same effect.  Adding the saturate to the add is free, so (at
least) one instruction is saved.

In a vertex shader, using an SLT on the negation of the add result has
the same effect.  Many older shader architectures do not support the
SNE instruction.  It must be emulated using two SLT instructions and
an ADD.  On these architectures, the single SLT saves two
instructions.

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:09:40 -07:00
Ian Romanick
6ad08989d7 ir_to_mesa: Implement ir_unop_logic_not using 1-x
Since our logic values are 0.0 (false) and 1.0 (true), 1.0 - x
accurately implements logical not.

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-08-16 14:09:40 -07:00
Chad Versace
3c9f172fe8 mesa: Add Android to list of platforms that define fpclassify()
This is a fix for the Android build.

Signed-off-by: Chad Versace <chad@chad-versace.us>
2011-08-16 14:03:48 -07:00
Chad Versace
bd064a49f1 mesa: Fix Android build by #ifdef'ing out locale support
Bionic does not support locales. This commit #ifdef's out the locale usage
in _mesa_strtof().

Signed-off-by: Chad Versace <chad@chad-versace.us>
2011-08-16 13:43:15 -07:00
Chad Versace
eb0ff1a1c0 mesa: Remove use of fpu_control.h
Remove the inclusion of fpu_control.h from compiler.h.  Since Bionic lacks
fpu_control.h, this fixes the Android build.

Also remove the sole use of the fpu_control bits, which was in debug.c.
Those were brianp's debug bits, and he approved of their removal.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad@chad-versace.us>
2011-08-16 13:34:33 -07:00
Eric Anholt
0ddf0f1c34 i965/vs: Fix multiplies to actually do 32-bit multiplies.
Fixes vs-op-mult-int-int and friends.
2011-08-16 13:04:43 -07:00
Eric Anholt
7bf70c29ad i965/vs: Add support for conversion of FIXED_HW_REG src_reg to/from dst_reg.
This was quietly occurring in some emit code I produced, and failed.
2011-08-16 13:04:43 -07:00
Eric Anholt
e9a86ae337 i965/vs: Fix memory leak of ralloc context for the visitor. 2011-08-16 13:04:43 -07:00
Eric Anholt
feff7c62ce i965/vs: Fix condition code for scalar expression all_equals.
Fixes vs-op-eq-bool-bool.
2011-08-16 13:04:43 -07:00
Eric Anholt
8a649277cb i965/vs: Don't assertion fail on vertex texturing.
The linker will reject the program, but we need to survive until then.
Fixes abort in glsl1-2D Texture lookup with explicit lod (Vertex
shader)
2011-08-16 13:04:43 -07:00
Eric Anholt
d0c595ac80 i965/gen6: Force WHILE exec size to 8.
We can't just look at the instruction that happens to appear at the
start of the loop, because it might be some other exec size and cause
us to only loop on the first N channels.  We always want 8 in our
current code (since 16 doesn't work so we don't do 16-wide fragment in
that case).

Fixes loop-03.vert, which was triggering the assertions.
2011-08-16 13:04:43 -07:00
Eric Anholt
905f3d0309 i965/vs: Remove remaining use of foreach_iter. 2011-08-16 13:04:43 -07:00
Eric Anholt
54e66a0a63 i965/vs: Fix abs/negate handling on attributes.
Fixes glsl-vs-neg-attribute and glsl-vs-abs-attribute.
2011-08-16 13:04:43 -07:00
Eric Anholt
7642c1de6b i965/vs: Avoid generating a MOV for most ir_assignment handling.
Removes an average of 11.5% of instructions in 54% of vertex shaders
in shader-db.
2011-08-16 13:04:43 -07:00
Eric Anholt
7fbe7fe133 i965/vs: Run the shader backend at link time and return compile failures.
Link failure is something that shouldn't happen, but we sometimes want
it during development.  The precompile also allows analysis of shader
codegen with shader-db.
2011-08-16 13:04:43 -07:00
Eric Anholt
d376fa8e84 i965: Fix assertion failure on a loop consisting of while (true) { break }.
On enabling the precompile step in the VS, we tripped over this
assertion failure in glsl-link-bug-30552.
2011-08-16 13:04:43 -07:00
Eric Anholt
e8980c61b2 i965/vs: Fix the trivial register allocator's failure path. 2011-08-16 13:04:43 -07:00
Eric Anholt
193a9a209d i965/vs: Add support for if(any(bvec)) on gen6. 2011-08-16 13:04:43 -07:00
Eric Anholt
072d64121e i965/vs: Add support for GL_FIXED attributes.
Fixes arb_es2_compatibility-fixed-type
2011-08-16 13:04:43 -07:00
Eric Anholt
aed5e353e9 i965/vs: Clamp vertex color outputs when required by ARB_color_buffer_float.
Fixes glsl-vs-vertex-color.
2011-08-16 13:04:43 -07:00
Eric Anholt
a55fbbc1a2 i965/vs: Fix access of attribute arrays.
By leaving out the column index, we were reading an unallocated
attribute on glsl-mat-attribute.
2011-08-16 13:04:43 -07:00
Eric Anholt
fea7d34b35 i965/vs: Fix builtin uniform setup.
I want to intelligently pack them at some point, but for now we have
the params set up in groups of 4.  Fixes glsl-vs-normalscale.
2011-08-16 13:04:43 -07:00
Eric Anholt
0b359e3ea0 i965/vs: Add support for loops.
This is copied from brw_fs.cpp, instead of doing the temporary IR
generation that ir_to_mesa does.  Fixes glsl-vs-loop and friends.
2011-08-16 13:04:43 -07:00
Eric Anholt
abf843a797 i965/vs: Add support for ir_binop_pow.
Fixes vs-pow-float-float.
2011-08-16 13:04:43 -07:00
Eric Anholt
250770b74d i965/vs: Respect the gen6 limitation that math opcodes can't be align16.
Fixes vs-acos-vec3 and friends.
2011-08-16 13:04:43 -07:00
Eric Anholt
6408b0295f i965/vs: Fix implementation of ir_unop_any.
We were inheriting whatever previous predicate existed.
2011-08-16 13:04:42 -07:00
Eric Anholt
7b91eefe7c i965/vs: Slightly improve the trivial reg allocator to skip unused regs.
This fixes most of the regressions in the vs array test set from the
varying array indexing work, since the giant array that was originally
allocated in virtual GRF space never gets used and is only ever
read/stored from scratch space.
2011-08-16 13:04:42 -07:00
Eric Anholt
e94bdbe04a i965: Add gen6 disassembly for DP render cache messages. 2011-08-16 13:04:42 -07:00
Eric Anholt
54fa706d6f i965/vs: Enable variable array indexing in the VS. 2011-08-16 13:04:42 -07:00