summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* nvfx: move nv04_2d to rules-ng-ngLuca Barbieri2010-09-053-17/+1518
|
* nvfx: switch to rules-ng-ng register headersLuca Barbieri2010-09-0518-334/+2587
| | | | | | | | | | This is the new register generation toolkit in use by nouveau. As far as I know, this is the best register description toolkit in existence, and you should use it too for your hardware :) Thanks to Marcin Kościelnicki for inventing it and performing invaluable reverse engineering work of nVidia chips.
* nvfx: remove remaining BEGIN_RING/eng3d usesLuca Barbieri2010-09-052-15/+18
|
* nvfx: pause occlusion queries during blitter usageLuca Barbieri2010-09-054-10/+36
| | | | | Thanks for Dave Airlie and Jerome Glisse for their code which made me realize I need this too.
* nvfx: properly return fogcoord.w == 1Luca Barbieri2010-09-051-1/+15
| | | | | Hardware sets it to 0, so we add an ADD to put an 1 there if the application really wants the alpha channel.
* nvfx: support saturate in vpLuca Barbieri2010-09-052-66/+93
| | | | | | Completely untested, since Mesa apparently never uses this currently. In particular, it might not work with scalar slot op.
* nvfx: add rewritten swtnl supportLuca Barbieri2010-09-058-263/+238
| | | | | | | | The old swtnl code was broken by the new shader linkage support for GLSL. This is a rewrite of swtnl support, which should instead work properly, be faster and more closer to the much more tested hardware pipeline.
* nvfx: use a piglit-ignored format for unknown cap messageLuca Barbieri2010-09-051-1/+1
|
* llvmpipe: Remove some broken MinGW hacks in the sin/cos reference code.José Fonseca2010-09-051-49/+0
|
* glsl: Add new files to sconscript.José Fonseca2010-09-051-0/+3
|
* llvmpipe: Fix perspective divide interpolation.José Fonseca2010-09-052-9/+76
| | | | | | | | | | Intuition != mathematics, so this time I actually worked out the right formula for first order approximation of perspective interpolation. Ironically, per quad divide actually makes things slower when compared with per pixel divide -- probably because the divide hardware unit is rarely used, whereas the multiply unit is typically already saturated and the first order approximation imply more multiplications.
* util: Helper function to determined whether two formats can be memcpy'ed.José Fonseca2010-09-055-4/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | These are the non-trivial conversions that this function recognizes, which was produced by u_format_compatible_test.c: b8g8r8a8_unorm -> b8g8r8x8_unorm a8r8g8b8_unorm -> x8r8g8b8_unorm b5g5r5a1_unorm -> b5g5r5x1_unorm b4g4r4a4_unorm -> b4g4r4x4_unorm l8_unorm -> r8_unorm i8_unorm -> l8_unorm i8_unorm -> a8_unorm i8_unorm -> r8_unorm l16_unorm -> r16_unorm z24_unorm_s8_uscaled -> z24x8_unorm s8_uscaled_z24_unorm -> x8z24_unorm r8g8b8a8_unorm -> r8g8b8x8_unorm a8b8g8r8_srgb -> x8b8g8r8_srgb b8g8r8a8_srgb -> b8g8r8x8_srgb a8r8g8b8_srgb -> x8r8g8b8_srgb a8b8g8r8_unorm -> x8b8g8r8_unorm r10g10b10a2_uscaled -> r10g10b10x2_uscaled r10sg10sb10sa2u_norm -> r10g10b10x2_snorm State trackers and pipe drivers should be updated to take advantage of this knowledge, e.g., in surface_copy.
* llvmpipe: Relax the colormask constraint on opaque.José Fonseca2010-09-052-13/+29
| | | | | | Also, include the color buffer in the key. Not having it there causes a tight knots in the logic to determine when it is OK or not to discard previous color buffer contents.
* util: Utility function to determine the channels that can be written in a ↵José Fonseca2010-09-051-0/+33
| | | | color format.
* scons: Re-enable SSE on MinGW.José Fonseca2010-09-051-11/+11
| | | | | It seems to be working correctly with gcc 4.4, and enabling it allows to test some of the llvmpipe instrinsics on Windows.
* gallivm: Pass condition masks as an unsigned bitmask.José Fonseca2010-09-056-28/+42
| | | | Much more convenient than boolean arrays.
* gallivm: Cope with tgsi instruction reallocation failure.José Fonseca2010-09-051-6/+10
|
* ir_reader: Only validate IR when a global 'debug' flag is set.Kenneth Graunke2010-09-051-1/+4
| | | | | | | | | This extra validation is very useful when working on the built-ins, but in general overkill - the results should stay the same unless the built-ins or ir_validate have changed. Also, validating all the built-in functions in every test case makes piglit run unacceptably slow.
* r300g,r300c: memset the compiler struct to zerosMarek Olšák2010-09-054-0/+4
| | | | This should fix bogus reports "Too many temporaries." and maybe some others.
* r300/compiler: Remove stray break statementTom Stellard2010-09-041-1/+0
| | | | This fixes glsl-fs-loop-nested.
* nvfx: support unlimited constants and immediates in fpLuca Barbieri2010-09-052-49/+37
|
* nvfx: support using blitter to copy depth/stencil resources, fix HeavenLuca Barbieri2010-09-051-1/+8
| | | | | | | | | | We might want to copy them as color ones though. Also works around crash in Unigine Heaven due to failing to allocate a 64 MB temporary in GART for a CPU copy. Unigine Heaven now works on nv40, albeit with very heavy glitches (with the floating branch with render_hdr 0).
* r300/compiler: fix the instruction limit in vertex shadersMarek Olšák2010-09-051-1/+1
| | | | | | Broken with commit d774b0c710bb7d833d17bd12f5151a0176baad96. Reported by Chris Rankin.
* nvfx: support rendering to more formatsLuca Barbieri2010-09-044-2/+30
|
* nvfx: move 2D format selection logic to 2D codeLuca Barbieri2010-09-043-67/+75
|
* nvfx: fix swizzling of high bpp surfacesLuca Barbieri2010-09-042-39/+63
|
* nvfx: fix some subrectangle copiesLuca Barbieri2010-09-041-4/+6
| | | | | | Actually, we may want to get rid of the x/y coordinates for linear surfaces, and realign the origin from scratch if necessary, instead of doing this "on-demand realignment".
* nvfx: fix inlinining in nv04_2d.cLuca Barbieri2010-09-041-1/+1
|
* nvfx: fix the temporary copying logic and add assertsLuca Barbieri2010-09-043-7/+24
|
* nvfx: prevent swizzled rendering into formats where it's not supportedLuca Barbieri2010-09-041-2/+4
|
* Revert "ir_to_mesa: Load all the STATE_VAR elements of a builtin uniform to ↵Marek Olšák2010-09-041-291/+345
| | | | | | | | | | | | | | a temp." This reverts commit 5ad74779cea07cc6a19a52874cdaef8b018e2f1b. Sorry, but I had to revert this. Any commit which needlessly increases the number of temporaries is wrong. More temporaries mean less shader performance because of reduced parallelism and therefore less efficient latency hiding. In this case, there is possible performance degradation of every shader which uses GL state variables. I cannot accept this.
* Revert "r300g: refuse to create a texture with size 0"Marek Olšák2010-09-041-12/+0
| | | | | | | | | | This reverts commit 5cdedaaf295acae13ac10feeb3143d83bc53d314. https://bugs.freedesktop.org/show_bug.cgi?id=30002 Conflicts: src/gallium/drivers/r300/r300_texture.c
* r300g: remove unnecessary assignmentsMarek Olšák2010-09-041-6/+0
|
* r300/compiler: indent printed instructions according to the branch depthMarek Olšák2010-09-041-4/+44
|
* r300g: skip draw calls with no vertex elements, fixing hardlocksMarek Olšák2010-09-041-0/+3
|
* r300/compiler: use limits from the compiler input instead of inline constantsMarek Olšák2010-09-041-5/+4
|
* r300/compiler: improve register allocation with indexable temporaries for VSMarek Olšák2010-09-041-17/+46
| | | | | Register allocation can now reallocate temporaries right after the last indexed source operand, instead of being disabled for the whole shader.
* r300/compiler: fix handling of indexed temporaries in peepholeMarek Olšák2010-09-041-1/+9
|
* r300/compiler: disable deadcode elimination for indexed dst operandsMarek Olšák2010-09-041-0/+14
|
* r300/compiler: allocate at least FS inputs if register allocation is disabledMarek Olšák2010-09-043-9/+52
|
* r300g: add a new debug option which disables compiler optimizationsMarek Olšák2010-09-0410-24/+35
| | | | | | | | | | | | Those are: - dead-code elimination - constant folding - peephole (mainly copy propagation) - register allocation There are some bugs which I need to track down. Also fix up the descriptions of all the debug options.
* r300/compiler: compute the final number of temporaries during translationMarek Olšák2010-09-041-7/+23
| | | | | And not during the register allocation, which may be skipped for debugging purposes. Also the predicate register is now added to the number of temps.
* r300/compiler: make optimizations not use 0.5 swizzles in vertex shadersMarek Olšák2010-09-047-1/+8
|
* r300/compiler: use peephole and constant folding for vertex shaders tooMarek Olšák2010-09-041-1/+3
|
* r300/compiler: remove unused enum OPCODE_REPL_ALPHAMarek Olšák2010-09-041-5/+0
| | | | We use RC_OPCODE_REPL_ALPHA instead.
* r300/compiler: refactor fragment shader compilationMarek Olšák2010-09-0419-165/+85
| | | | This cleans up the mess in r3xx_compile_fragment_program.
* r300/compiler: add new compiler parameter max_constantsMarek Olšák2010-09-048-10/+18
|
* r300/compiler: refactor vertex shader compilationMarek Olšák2010-09-0418-161/+140
| | | | | | First list compiler passes in an array, then run the new function rc_run_compiler. Every backend may need a different set of passes. This cleans up the mess in r3xx_compile_vertex_program.
* r300/compiler: remove a redundant parameter in rc_pair_regallocMarek Olšák2010-09-043-3/+4
|
* r300/compiler: remove a redundant parameter in rc_dataflow_deadcodeMarek Olšák2010-09-044-5/+5
| | | | &c->Base == c.