summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* program: add subroutine uniform support (v1.1)Dave Airlie2015-07-231-0/+3
| | | | | | | | | Add support for the subroutine uniform type ir->mesa.cpp v1.1: add subroutine to int to switch Acked-by: Kenneth Graunke <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* program_resource: add subroutine support (v3.1)Dave Airlie2015-07-232-22/+179
| | | | | | | | | | | | | | This fleshes out the ARB_program_query support for the APIs that ARB_shader_subroutine introduces, leaving some TODOs for later addition. v2: reworked for lots of the ARB_program_interface_query entry points and tests v3: use common function to test for subroutine support v3.1: add tess, fix missing breaks Acked-by: Kenneth Graunke <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* glsl: add uniform and program resource support (v2)Dave Airlie2015-07-233-7/+286
| | | | | | | | | | | | | | | | | | | This adds linker support for subroutine uniforms, they have some subtle differences from real uniforms, we also hide them and they are given internal uniform names. This also adds the subroutine locations and subroutine uniforms to the program resource tracking for later use. v1.1: drop is_subroutine_def v2: handle explicit location properly, ARB_explicit_location has a lot of language for subroutine shaders. Calculate a link time the number of compatible subroutines for a uniform, to make program resource easier later. Acked-by: Kenneth Graunke <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* mesa/mtypes: add gl_subroutine_function and uniform storage to shader (v2)Dave Airlie2015-07-231-0/+28
| | | | | | | | This adds the necessary storage for subroutine info to gl_shader. v2: add comments, rename one member Acked-by: Kenneth Graunke <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* glsl/ir: add subroutine lowering pass (v2.3)Dave Airlie2015-07-234-0/+113
| | | | | | | | | | | | | | This lowers the enhanced ir_call using the lookaside table of subroutines into an if ladder. This initially was done at the AST level but it caused some ordering issues so a separate pass was required. v2: clone return value derefs. v2.1: update for subroutine->int convert. v2.2: add a clone for the array index Reviewed-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* glsl: add ast/parser support for subroutine parsing storage (v3.2)Dave Airlie2015-07-239-116/+326
| | | | | | | | | | | | | | | | | | | | | | | | | | This is the guts of the GLSL parser and AST support for shader subroutines. The code creates a subroutine type in the parser, and uses that there to validate the identifiers. The parser also distinguishes between subroutine types/function prototypes /uniforms and subroutine defintions for functions. Then in the AST conversion it recreates the types, and stores the subroutine definition info or subroutine info into the ir_function along with a side lookup table in the parser state. It also converts subroutine calls into the enhanced ir_call. v2: move to handling method calls in function handling not in field selection. v3: merge Chris's previous parser patches in here, to make it clearer what's changed in one place. v3.1: add more documentation, drop unused include v3.2: drop is_subroutine_def Reviewed-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* glsl/ir: allow ir_call to handle subroutine callingDave Airlie2015-07-231-1/+20
| | | | | | | | | This adds a ir_variable which contains the subroutine uniform and an array rvalue for the deref of that uniform, these are stored in the ir_call and lowered later. Reviewed-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* glsl/ir: add subroutine information storage to ir_function (v1.1)Dave Airlie2015-07-234-1/+26
| | | | | | | | | | | We need to store two sets of info into the ir_function, if this is a function definition with a subroutine list (subroutine_def) or if it a subroutine prototype. v1.1: add some more documentation. Reviewed-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* mesa: add function to check if shader subroutines are enabled.Dave Airlie2015-07-231-0/+9
| | | | | | | | This checks if core profile and shader subroutine extension is enabled. Reviewed-by: Kenneth Graunke <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* mesa: add inline conversion functions for ARB_shader_subroutine (v2)Dave Airlie2015-07-231-0/+101
| | | | | | | | | | | This handles converting the shader stages to the internal prefix along with the program resource interfaces. v2: add tess support Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* glsl: don't eliminate subroutine types.Dave Airlie2015-07-231-0/+3
| | | | | | | | This stops dead code from removing subroutines types, we need these for the queries to work properly. Reviewed-by: Kenneth Graunke <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* glsl/types: add new subroutine type (v3.2)Dave Airlie2015-07-2313-0/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | This type will be used to store the name of subroutine types as in subroutine void myfunc(void); will store myfunc into a subroutine type. This is required to the parser can identify a subroutine type in a uniform decleration as a valid type, and also for looking up the type later. Also add contains_subroutine method. v2: handle subroutine to int comparisons, needed for lowering pass. v3: do subroutine to int with it's own IR operation to avoid hacking on asserts (Kayden) v3.1: fix warnings in this patch, fix nir, fix tgsi v3.2: fixup tests Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]> tests: fix warnings
* glsl: Make `subroutine` a reserved keywordChris Forbes2015-07-231-1/+1
| | | | | | | Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Signed-off-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* dispatch_sanity: add shader subroutine to fix make checkDave Airlie2015-07-232-8/+21
| | | | | | | | Add the shader subroutine to the core only API list, and fixup dispatch_sanity to suit. Acked-by: Kenneth Graunke <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* glsl: Add extension plumbing and define for ARB_shader_subroutineChris Forbes2015-07-234-0/+7
| | | | | | | Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Signed-off-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* mesa: Add glGet support for ARB_shader_subroutine implementation limitsChris Forbes2015-07-234-0/+20
| | | | | | | Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Signed-off-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* mesa: Add extension tracking for arb_shader_subroutine (v2)Chris Forbes2015-07-233-1/+3
| | | | | | | | | v2: [airlied]: merge version check update. Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Signed-off-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* glapi: Add ARB_shader_subroutine functions and enums (v2)Chris Forbes2015-07-233-1/+88
| | | | | | | | | v2: fix output="true" and LENGTH typo Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Signed-off-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* mesa: Add stubs for ARB_shader_subroutine entrypointsChris Forbes2015-07-232-0/+95
| | | | | | | Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Signed-off-by: Chris Forbes <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* dispatch_sanity.cpp: remove commented out tess entriesDave Airlie2015-07-231-2/+0
| | | | | | | These entries were put in the GL4.0 section, so removed the commented out ones. Signed-off-by: Dave Airlie <[email protected]>
* glsl/tests: fix varying_test since tess changes.Dave Airlie2015-07-231-1/+1
| | | | | | | This fixes make check since the tess changes. Tested-by: Michel Dänzer <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* i965: fix warning since tess merge.Dave Airlie2015-07-231-0/+2
| | | | Signed-off-by: Dave Airlie <[email protected]>
* radeonsi: enable tessellation, update GL3.txt & release notesMarek Olšák2015-07-233-4/+13
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: add scratch buffer support for tessellation shadersMarek Olšák2015-07-231-8/+28
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: update invariant registers for tessellationMarek Olšák2015-07-231-2/+6
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: add assertions into draw_vbo and check tessellationMarek Olšák2015-07-231-1/+7
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: set the rasterization primitive type for tessellationMarek Olšák2015-07-231-0/+3
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: set VGT_LS_HS_CONFIG for tessellationMarek Olšák2015-07-233-4/+28
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: update IA_MULTI_VGT_PARAM for tessellationMarek Olšák2015-07-231-3/+51
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: add derived tessellation stateMarek Olšák2015-07-234-3/+146
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: implement a fixed-function tessellation control shader and its stateMarek Olšák2015-07-234-1/+68
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: set up a ring buffer for tessellation factorsMarek Olšák2015-07-234-0/+42
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: add tessellation shader statesMarek Olšák2015-07-233-13/+203
| | | | | | ls_rsrc# will be emitted as part of the derived tessellation state Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: update si_get_vs_info and si_get_vs_state for tessellationMarek Olšák2015-07-231-2/+8
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: add shader code generation for tessellationMarek Olšák2015-07-235-29/+851
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: implement TGSI_OPCODE_BARRIERMarek Olšák2015-07-231-0/+12
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: program VGT_SHADER_STAGES_EN for tessellationMarek Olšák2015-07-234-23/+45
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: add translation of PATCH primitivesMarek Olšák2015-07-231-0/+2
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: add support for tessellation shader resources and samplersMarek Olšák2015-07-232-8/+37
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: add code for creating, binding and destroying tessellation shadersMarek Olšák2015-07-233-0/+74
| | | | | | This doesn't do anything yet. Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: add debug flags for dumping tessellation shadersMarek Olšák2015-07-232-9/+17
| | | | Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: rework how shader pointers to descriptors are setMarek Olšák2015-07-235-91/+156
| | | | | | | | | | | | | | | | | 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 <[email protected]>
* radeonsi: rename build_streamout_store -> build_tbuffer_store_dwordsMarek Olšák2015-07-231-12/+12
| | | | | | It will be reused later. Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: separate primitive ID computationMarek Olšák2015-07-231-7/+20
| | | | | | Support for new shader stages will be added here. Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: move declaring streamout parameters to its own functionMarek Olšák2015-07-231-13/+23
| | | | | | It will be reused later. Reviewed-by: Michel Dänzer <[email protected]>
* radeonsi: make ES2GS offset sgpr location dynamicMarek Olšák2015-07-232-6/+3
| | | | | | It will have a different location in the tessellation evaluation shader. Reviewed-by: Michel Dänzer <[email protected]>
* gallium/radeon: expose emit_fetchMarek Olšák2015-07-232-19/+15
| | | | Radeonsi will use this.
* gallium/radeon: expose LLVM functions implementing emit_storeMarek Olšák2015-07-232-5/+13
| | | | | | | | 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.
* st/mesa: enable tessellation if the driver supports itMarek Olšák2015-07-231-0/+5
|
* st/mesa: set default tessellation levelsMarek Olšák2015-07-236-1/+67
|