Marek Olšák
12df9a7876
radeonsi: update invariant registers for tessellation
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:33 +02:00
Marek Olšák
99bf47f603
radeonsi: add assertions into draw_vbo and check tessellation
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:33 +02:00
Marek Olšák
5aa5f90823
radeonsi: set the rasterization primitive type for tessellation
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:33 +02:00
Marek Olšák
3344699243
radeonsi: set VGT_LS_HS_CONFIG for tessellation
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:33 +02:00
Marek Olšák
09d02fa463
radeonsi: update IA_MULTI_VGT_PARAM for tessellation
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:33 +02:00
Marek Olšák
74c1001d13
radeonsi: add derived tessellation state
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:33 +02:00
Marek Olšák
db267a04ce
radeonsi: implement a fixed-function tessellation control shader and its state
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:32 +02:00
Marek Olšák
b6f4fdf6a9
radeonsi: set up a ring buffer for tessellation factors
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:32 +02:00
Marek Olšák
ebfd9e0071
radeonsi: add tessellation shader states
...
ls_rsrc# will be emitted as part of the derived tessellation state
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:32 +02:00
Marek Olšák
aa2fa6723a
radeonsi: update si_get_vs_info and si_get_vs_state for tessellation
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:32 +02:00
Marek Olšák
fff16e4ad2
radeonsi: add shader code generation for tessellation
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:32 +02:00
Marek Olšák
4805685b6f
radeonsi: implement TGSI_OPCODE_BARRIER
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:32 +02:00
Marek Olšák
59b3556f4c
radeonsi: program VGT_SHADER_STAGES_EN for tessellation
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:32 +02:00
Marek Olšák
d9d0de4d28
radeonsi: add translation of PATCH primitives
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:32 +02:00
Marek Olšák
55b6f1caae
radeonsi: add support for tessellation shader resources and samplers
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:32 +02:00
Marek Olšák
d1f43a7e5b
radeonsi: add code for creating, binding and destroying tessellation shaders
...
This doesn't do anything yet.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:31 +02:00
Marek Olšák
c2670463fd
radeonsi: add debug flags for dumping tessellation shaders
...
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:31 +02:00
Marek Olšák
3ce91c727f
radeonsi: rework how shader pointers to descriptors are set
...
This is mainly needed for tessellation where a VS can be bound as VS, ES,
or LS, and TES (tess. evaluationshader) can be bound as VS or ES or neither.
Therefore we need the ability to move pointers to descriptors between
shaders arbitrarily.
The idea is that the context has a mapping from PIPE_SHADER_x to
SPI_SHADER_USER_DATA_x. After a shader is enabled or disabled,
si_shader_change_notify should be called to update this mapping accordingly.
There is a dirty flag for each shader pointer, but only one emit function
for all pointers in the whole context, whose code and logic is separated
from descriptors.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:31 +02:00
Marek Olšák
57b6f8d9f9
radeonsi: rename build_streamout_store -> build_tbuffer_store_dwords
...
It will be reused later.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:31 +02:00
Marek Olšák
f66844820e
radeonsi: separate primitive ID computation
...
Support for new shader stages will be added here.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:31 +02:00
Marek Olšák
aa1f2af572
radeonsi: move declaring streamout parameters to its own function
...
It will be reused later.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:31 +02:00
Marek Olšák
2ecb06b946
radeonsi: make ES2GS offset sgpr location dynamic
...
It will have a different location in the tessellation evaluation shader.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2015-07-23 00:59:31 +02:00
Marek Olšák
1bc0fba572
gallium/radeon: expose emit_fetch
...
Radeonsi will use this.
2015-07-23 00:59:31 +02:00
Marek Olšák
a3be59b4a9
gallium/radeon: expose LLVM functions implementing emit_store
...
emit_store will be reimplemented for tessellation control shader outputs
where only radeon_llvm_saturate will be used, but radeonsi will want to
fall back to radeon_llvm_emit_store for other register types.
This exposes both functions.
2015-07-23 00:59:31 +02:00
Marek Olšák
7626ad8d6d
st/mesa: enable tessellation if the driver supports it
2015-07-23 00:59:30 +02:00
Marek Olšák
bda9094f1d
st/mesa: set default tessellation levels
2015-07-23 00:59:30 +02:00
Ilia Mirkin
82f7fad966
st/mesa: add barrier support
2015-07-23 00:59:30 +02:00
Ilia Mirkin
8f40428afb
st/mesa: disable copy propagation for tessellation shaders
...
This can't work due to shared inputs and outputs and barriers.
2015-07-23 00:59:30 +02:00
Ilia Mirkin
f4c13fad65
st/mesa: set vertices_per_patch when drawing
2015-07-23 00:59:30 +02:00
Ilia Mirkin
37d1809dd7
st/mesa: add 2d indexing support to outputs
2015-07-23 00:59:30 +02:00
Marek Olšák
c9998617a8
st/mesa: handle tessellation 2D varyings correctly
2015-07-23 00:59:30 +02:00
Ilia Mirkin
05c847433f
st/mesa: lower gl_TessLevel from float[] to vecn
2015-07-23 00:59:30 +02:00
Ilia Mirkin
d00e2763b1
st/mesa: query shader CAPs for tessellation
...
The MaxTessPatchComponents query added by Marek.
2015-07-23 00:59:30 +02:00
Ilia Mirkin
40bc1c32d2
st/mesa: add texture updates for tessellation programs
2015-07-23 00:59:29 +02:00
Ilia Mirkin
bda79139d4
st/mesa: handle constbufs/ubos for tessellation shaders
2015-07-23 00:59:29 +02:00
Marek Olšák
a58a66fe85
st/mesa: add conversion for tessellation shaders
...
Based on code from Ilia Mirkin <imirkin@alum.mit.edu>.
2015-07-23 00:59:29 +02:00
Ilia Mirkin
ba9fb96f86
st/mesa: add tessellation shader states
...
additional fixes by Marek
2015-07-23 00:59:29 +02:00
Marek Olšák
df4ee8ef36
mesa: implement GL_IS_PER_PATCH
...
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:29 +02:00
Marek Olšák
0af240e940
glsl: use separate varying slots for patch varyings
...
The idea is to allow 32 normal varyings and 32 patch varyings,
a total of 64. Previously, only a total of 32 was allowed.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:29 +02:00
Marek Olšák
d070238944
glsl: fix locations of 2-dimensional varyings without varying packing (v2)
...
v2: renamed producer/consumer_type -> producer/consumer_stage
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:29 +02:00
Marek Olšák
41acdae2e9
glsl: don't demote tess control shader outputs
...
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:29 +02:00
Marek Olšák
3a4b87f26d
glsl: disable varying packing between tessellation shaders
...
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:29 +02:00
Marek Olšák
d5787e7eef
glsl: allow indexing of gl_out with a non-const if length isn't known
...
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:28 +02:00
Chris Forbes
19f46d0540
glsl: allow redeclaration of TCS gl_out[]
...
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:28 +02:00
Chris Forbes
8cf72972ce
glsl: validate restrictions on use of barrier()
...
With the exception of always-taken switch cases (which are
indistinguishable from straight line code in our IR), this
disallows use of the builtin barrier() function in all the
places it may not appear.
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:28 +02:00
Marek Olšák
799afadf51
glsl: allow barrier() in tessellation control shaders
...
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:28 +02:00
Chris Forbes
df16e0dd63
glsl: analyze TES usage of gl_ClipDistance
...
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:28 +02:00
Chris Forbes
0e94f350ee
glsl: push vertex count determination down one level
...
We have the prog here, so we don't need the caller to work this out for
us.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:28 +02:00
Ilia Mirkin
567f1b2ee8
glsl: pass shader stage to lower_output_reads and handle tess control
...
Tessellation control outputs can be read in directly without first
having been written. Accessing these will require some special logic
anyways, so just let them through.
V2: Never lower tess control output reads, whether patch or not -- both
can be read back by other threads.
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:28 +02:00
Chris Forbes
61846f222f
glsl: properly size unsized arrays in tess stages
...
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-23 00:59:28 +02:00