summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/r600_shader.c
AgeCommit message (Collapse)Author
2011-02-07r600g: Add support for relative addressing on constant buffers.Henri Verbeet
Relative addressing of constant buffers can't work properly through the kcache, since you can only address within the currently locked kcache window. Instead, this patch binds the constant buffer as a shader resource, and then explicitly fetches the constant using a vertex fetch with fetch type VTX_FETCH_NO_INDEX_OFFSET from the shader. There's probably still some room for improvement, doing the fetch right before the instruction that needs the value may not be quite optimal for example.
2011-02-07r600g: Split constants in r600_shader_from_tgsi().Henri Verbeet
2011-02-07r600g: Do the tgsi_full_src_register to r600_shader_src conversion in ↵Henri Verbeet
r600_shader_from_tgsi().
2011-02-07r600g: Split r600_bc_alu_src.Henri Verbeet
The r600_bc_alu_src structure is used in two different ways, as a vector and for the individual channels of that same vector. This is somewhat fragile, and probably confusing.
2011-02-07r600g: Store literal values in the r600_bc_alu_src structure.Henri Verbeet
This is much easier to work with, and allows use to get rid of some of the literal handling hacks.
2011-02-07r600g: tgsi_dst() can't fail.Henri Verbeet
2011-02-07r600g: tgsi_src() can't fail.Henri Verbeet
2011-02-03r600g: Make some more things static.Henri Verbeet
2011-02-02r600g: use burst exports in shadersChristian König
Join multiple exports into just one instruction instead of exporting each register separately.
2011-01-31r600g: handle the write all cbufs property.Dave Airlie
This only works on r600/r700 so far, evergreen doesn't appear to have the multiwrite enable bit in the color control, so we may have to actually do a shader rewrite on EG hardware. remove some duplicate code reg defines also. Signed-off-by: Dave Airlie <airlied@redhat.com>
2011-01-19r600g: fix segfault if texture operand is a literalChristian König
This fixes Bug 33262
2011-01-18r600g: Kill trailing whitespace.Henri Verbeet
2011-01-18r600g: Simplify some r600_bc_add_alu_type() calls to r600_bc_add_alu().Henri Verbeet
2011-01-16r600d: fix some bugs added reworking literal handlingChristian König
If a literal slot isn't used it should be set to 0 instead of an uninitialized value. Also the channels for pre R700 trig functions were incorrect. And most important literals were not counted against ndw, resulting in an invalid force_add_cf detection.
2011-01-13r600g: rework literal handlingChristian König
2011-01-12r600g: implement output modifiers and use them to further optimize LRPChristian König
2011-01-12r600g: use special constants for 0, 1, -1, 1.0f, 0.5f etcChristian König
2011-01-12r600g: optimize temp register handling for LRPChristian König
2011-01-12r600g: optimize away CF_INST_POPChristian König
If last instruction is an CF_INST_ALU we don't need to emit an additional CF_INST_POP for stack clean up after an IF ELSE ENDIF.
2011-01-12r600g: make dumping of shaders an optionChristian König
2011-01-12r600g: texture instructions also work fine with TGSI_FILE_INPUTChristian König
2011-01-12r600g: DP4 also supports writemaskingChristian König
2011-01-12r600g: Why all this fiddling with tgsi_helper_copy?Christian König
tgsi_helper_copy is used on several occasions to copy a temporary result into the real destination register to emulate writemasks for OP3 and reduction operations. According to R600 ISA that's unnecessary. This patch fixes this use for MAD, CMP and DP4.
2011-01-11r600g: Fixed SIN/COS/SCS for the case where the operand is a literal.Tilman Sauerbeck
Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de> Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
2011-01-07r600g: Update some comments for Evergreen.Henri Verbeet
2011-01-07r600g: Split ALU clauses based on used constant cache lines.Henri Verbeet
2010-12-24r600g: hack around property unknown issues.Dave Airlie
should fix https://bugs.freedesktop.org/show_bug.cgi?id=32619 Need to add proper support for properties later. Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-12-15r600g: fix pow(0, 0) evaluating to NaNFredrik Höglund
We have to use the non-IEEE compliant version of MUL here, since log2(0) is -inf, and 0 * -inf is NaN in IEEE arithmetic. candidates for 7.10 branch
2010-12-07r600g: remove dead codeJerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-12-06r600g: avoid useless shader rebuild at draw callJerome Glisse
Avoid rebuilding constant shader state at each draw call, factor out spi update that might change at each draw call. Best would be to update spi only when revealent states change (likely only flat shading & sprite point). Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-12-06r600g: build fetch shader from vertex elementsJerome Glisse
Vertex elements change are less frequent than draw call, those to avoid rebuilding fetch shader to often build the fetch shader along vertex elements. This also allow to move vertex buffer setup out of draw path and make update to it less frequent. Shader update can still be improved to only update SPI regs (based on some rasterizer state like flat shading or point sprite ...). Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-12-05r600g: Cleanup fetch shader resources in r600_pipe_shader_destroy().Henri Verbeet
2010-12-03r600g: indentation fixJerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-12-03r600g: set address of pop instructions to next instructionFabian Bieler
2010-12-03r600g: dump raw shader output for debuggingJerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-11-23r600g: Removed duplicated call to tgsi_split_literal_constant().Tilman Sauerbeck
Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de>
2010-11-23r600g: Only compare active vertex elementsMathias Fröhlich
Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de>
2010-11-19r600g: use full range of VS resources for vertex samplersAlex Deucher
Now that we have fetch shaders, the full range of VS resources can be used for sampling.
2010-11-19r600g: use meaningful defines for chiprevAlex Deucher
Makes the code much clearer.
2010-11-19r600g: translate ARR instruction for evergreenAlex Deucher
evergreen variant of: 9f7ec103e26c67cb077fd7d94d2fb68562b86c40
2010-11-19r600g: add fetch shader capabilitiesJerome Glisse
Use fetch shader instead of having fetch instruction in the vertex shader. Allow to restrict shader update to a smaller part when vertex buffer input layout changes. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-11-17r600g: code cleanup (indent, trailing space, empty line ...)Jerome Glisse
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
2010-11-09r600g: translate ARR instructionKeith Whitwell
2010-11-03r600g: propogate resource usage flags to winsys, use to choose bo domainsKeith Whitwell
This opens the question of what interface the winsys layer should really have for talking about these concepts. For now I'm using the existing gallium resource usage concept, but there is no reason not use terms closer to what the hardware understands - eg. the domains themselves.
2010-10-24r600g: Also clear bc data when we're destroying a shader.Tilman Sauerbeck
[airlied: remove unused vars] Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-10-24r600g: Added r600_pipe_shader_destroy().Tilman Sauerbeck
Not yet complete. Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-10-21r600g: initial translate state supportDave Airlie
2010-10-20r600g: Ensure r600_src is initialized in tgsi_exp function.Vinson Lee
Silences these GCC warnings. r600_shader.c: In function 'tgsi_exp': r600_shader.c:2339: warning: 'r600_src[0].rel' is used uninitialized in this function r600_shader.c:2339: warning: 'r600_src[0].abs' is used uninitialized in this function r600_shader.c:2339: warning: 'r600_src[0].neg' is used uninitialized in this function r600_shader.c:2339: warning: 'r600_src[0].chan' is used uninitialized in this function r600_shader.c:2339: warning: 'r600_src[0].sel' is used uninitialized in this function
2010-10-17r600g: add evergreen ARL support.Dave Airlie
Thanks to Alex Deucher for pointing out the FLT to int conversion is necessary and writing an initial patch, this brings about 20 piglits, and I think this is the last piece to make evergreen and r600 equal in terms of features.
2010-10-15r600g: evergreen interpolation support.Dave Airlie
On evergreen, interpolation has moved into the fragment shader, with the interpolation parmaters being passed via GPRs and LDS entries. This works out the number of interps required and reserves GPR/LDS storage for them, it also correctly routes face/position values which aren't interpolated from the vertex shader. Also if we noticed nothing is to be interpolated we always setup perspective interpolation for one value otherwise the GPU appears to lockup. This fixes about 15 piglit tests on evergreen.