summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* radeonsi: Geometry shader micro-optimizationsMichel Dänzer2014-01-291-12/+10
| | | | | | | | Move parameter loads out of loops, and use the instruction offset instead of a VGPR for the vertex attribute offset when writing to the ESGS ring buffer. Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: We don't support indirect addressing of geometry shader inputsMichel Dänzer2014-01-291-0/+4
| | | | | | Fixes piglit spec/glsl-1.50/execution/geometry/dynamic_input_array_index Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Pass VS resource descriptors to the HW ES shader stage as wellMichel Dänzer2014-01-296-34/+58
| | | | | | | This makes sure constants and samplers work in the vertex shader even when a geometry shader is active. Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Fix streamout from geometry shaderMichel Dänzer2014-01-291-10/+27
| | | | Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Simplify shader PM4 state handlingMichel Dänzer2014-01-293-61/+21
| | | | | | | | | | Just always bind the current states before drawing. Besides the simplification, as a bonus this makes sure the VS hardware shader stage always uses the GS copy shader when a geometry shader is active, fixing a number of GS related piglit tests. Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Properly match ES outputs to GS inputsMichel Dänzer2014-01-291-5/+16
| | | | | | Fixes piglit vs-gs-arrays-within-blocks-pass. Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Really dump TGSI code before any TGSI->LLVM conversion attemptMichel Dänzer2014-01-291-8/+8
| | | | | | While we're at it, use the local variable 'sel'. Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Also export clip distances with geometry shaderMichel Dänzer2014-01-292-5/+9
| | | | Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Take GS into account for VS state in more placesMichel Dänzer2014-01-293-2/+14
| | | | Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Handle adjacency primitivesMichel Dänzer2014-01-291-4/+4
| | | | Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Handle TGSI_SEMANTIC_PRIMIDMichel Dänzer2014-01-293-2/+16
| | | | Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Generalize counting of shader parametersMichel Dänzer2014-01-293-38/+48
| | | | | | Now it covers ES->GS as well as VS->PS. Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Fix handling of geometry shader output vertex IDMichel Dänzer2014-01-291-7/+19
| | | | | | | | | It needs to increment at shader runtime, not at shader compile time, as the geometry shader can emit vertices in loops. LLVM automagically converts the ID back to an immediate value if its value can be determined at compile time. Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Initial geometry shader supportMichel Dänzer2014-01-2911-191/+1084
| | | | | | | Partly based on the corresponding r600g work by Vadim Girlin and Dave Airlie. Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: Refactor shader input / output handling codeMichel Dänzer2014-01-291-218/+268
| | | | | | In preparation for adding geometry shader support. Reviewed-by: Marek Olšák <[email protected]>
* i965/fs: Add a saturation propagation optimization pass.Matt Turner2014-01-284-0/+107
| | | | | | | | | | | | | | | | | | | | | | Transforms, for example, mul vgrf3, vgrf2, vgrf1 mov.sat vgrf4, vgrf3 into mul.sat vgrf3, vgrf2, vgrf1 mov vgrf4, vgrf3 which gives register_coalescing an opportunity to remove the MOV instruction. total instructions in shared programs: 1515039 -> 1504634 (-0.69%) instructions in affected programs: 798586 -> 788181 (-1.30%) GAINED: 0 LOST: 4 Reviewed-by: Jordan Justen <[email protected]>
* i965: Add can_do_saturate() method to backend_instruction.Matt Turner2014-01-282-0/+45
| | | | Reviewed-by: Jordan Justen <[email protected]>
* mesa: Generate correct error code in glDrawBuffers()Anuj Phogat2014-01-281-3/+5
| | | | | | | | | | | | | | | | | | | | | | | OpenGL 3.3 spec expects GL_INVALID_OPERATION: "For both the default framebuffer and framebuffer objects, the constants FRONT, BACK, LEFT, RIGHT, and FRONT AND BACK are not valid in the bufs array passed to DrawBuffers, and will result in the error INVALID OPERATION." But OpenGL 4.0 spec changed the error code to GL_INVALID_ENUM: "For both the default framebuffer and framebuffer objects, the constants FRONT, BACK, LEFT, RIGHT, and FRONT_AND_BACK are not valid in the bufs array passed to DrawBuffers, and will result in the error INVALID_ENUM." This patch changes the behaviour to match OpenGL 4.0 spec Fixes Khronos OpenGL CTS draw_buffers_api.test. V2: Update the comment in code. Cc: [email protected] Signed-off-by: Anuj Phogat <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* loader: fix running with --disable-egl buildsDave Airlie2014-01-281-3/+4
| | | | | | | | | I sometimes build without EGL just for speed purposes, however it no longer finds my drivers when I do due to the HAVE_LIBUDEV defines being wrong. Signed-off-by: Dave Airlie <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Ignore 'centroid' interpolation qualifier in case of persample shadingAnuj Phogat2014-01-281-1/+2
| | | | | | | | | | | | I missed this change in commit f5cfb4a. It fixes the incorrect rendering caused in Dolphin Emulator. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73915 Cc: [email protected] Signed-off-by: Anuj Phogat <[email protected]> Tested-by: Markus Wick <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* gbm: Make libgbm.so.1 symlink.Matt Turner2014-01-281-0/+1
| | | | Reviewed-by: Kenneth Graunke <[email protected]>
* mesa: Allow depth = 0 parameter for TexImage3D.Kevin Rogovin2014-01-281-2/+2
| | | | | | | | | | Fixes the tests for the depth parameter for TexImage3D calls when the target type is GL_TEXTURE_2D_ARRAY or GL_TEXTURE_CUBE_MAP_ARRAY so that a depth value of 0 is accepted. Previously, the check incorrectly required the depth argument to be atleast 1. Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* r600g,radeonsi: Don't set resource_create in r600_common_screen_init()Tom Stellard2014-01-282-1/+1
| | | | | | | | r600g and radeonsi have different implementations of resource_create. https://bugs.freedesktop.org/show_bug.cgi?id=74139 Reviewed-by: Marek Olšák <[email protected]>
* c11: Add missing stdlib.h include.José Fonseca2014-01-281-0/+1
| | | | | | For malloc/free. Silences gcc mingw warnings.
* loader: include dlfcn.h when building with HAVE_LIBUDEVEmil Velikov2014-01-281-0/+2
| | | | | | | | | | | | | The code depending on the definitions is already wrapped in the same conditional so go ahead and wrap the include. Otherwise we'll brake compilation on platforms that are missing the header. Add assert.h in there as well, as it is introduced and used in the same fashon. Cc: Eric Anholt <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=74122 Signed-off-by: Emil Velikov <[email protected]>
* gallivm: Workaround http://llvm.org/PR18600José Fonseca2014-01-281-2/+4
| | | | | | | | | | | | | | | | | | We have code generation paths that carry out swizzles of AoS vectors via bitwise shifts, as these tend to generate more efficient code than straightforward byte shuffles. But when the input is a constant the additional bitwise arithmetic operations somehow don't really get constant propagated properly, evenutally causing assertion failure in InstCombine pass. Therefore avoid the bug by using the trivial shuffles for constant inputs. Although the sample LLVM IR can cause a crash with any LLVM version, this was only seen in practice with LLVM 3.2. Reviewed-by: Matthew McClure <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
* glsl: Avoid combining statements from different basic blocks.Matt Turner2014-01-271-0/+35
| | | | | Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=74113 Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Set proper swizzle when a channel is missing in vectorizing.Matt Turner2014-01-271-4/+13
| | | | | | | | | | | | | | | | | | | Previously, for example if the x channel was missing from a series of assignments we were attempting to vectorize, the wrong swizzle mask would be applied. a.y = b.y; a.z = b.z; a.w = b.w; would be incorrectly transformed into a.yzw = b.xyz; Fixes two transform feedback tests in the ES3 conformance suite. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73978 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73954 Reviewed-by: Ian Romanick <[email protected]>
* glsl: Use bitfieldInsert in ldexp() lowering.Matt Turner2014-01-271-4/+10
| | | | | | Shaves a few instructions off of lowered ldexp(). Reviewed-by: Ian Romanick <[email protected]>
* glsl: Add constant evaluation of ir_binop_bfm.Matt Turner2014-01-271-0/+17
| | | | Reviewed-by: Ian Romanick <[email protected]>
* glcpp: Resolve implicit GLSL version to 100 if the API is ES.Matt Turner2014-01-274-5/+16
| | | | | | | | | | Fixes a regression since b2d1c579 where ES shaders without a #version declaration would fail to compile if their precision declaration was wrapped in the standard #ifdef GL_ES check. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=74066 Reviewed-by: Jordan Justen <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* glcpp: Check version_resolved in the proper place.Matt Turner2014-01-273-13/+13
| | | | | | | | | | | | | | | | | | The check was in the wrong place, such that if a shader incorrectly put a preprocessor token before the #version declaration, the version would be resolved twice, leading to a segmentation fault when attempting to redefine the __VERSION__ macro. #extension GL_ARB_sample_shading: require #version 130 void main() {} Also, rename glcpp_parser_resolve_version to glcpp_parser_resolve_implicit_version to avoid confusion. Reviewed-by: Jordan Justen <[email protected]> Reviewed-by: Carl Worth <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* r600g: s/r600_llvm_gpu_string/r600_get_llvm_processor_name/Michel Dänzer2014-01-281-1/+1
| | | | | | Fixes build failure introduced by commit 65dc588bfd3b8145131340ffe77f216be58378ac ('r600g,radeonsi: consolidate get_compute_param'), which consolidated the former into the latter.
* radeonsi: cleanup includes, add missing licenseMarek Olšák2014-01-2812-86/+49
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* radeonsi: remove open-coded PS_PARTIAL_FLUSH eventMarek Olšák2014-01-281-5/+3
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* radeonsi: move some inline functions from si_pipe.h to si_state.cMarek Olšák2014-01-282-39/+30
| | | | | | | | | And si_tex_aniso_filter is unused. v2: remove INLINE occurences Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* radeonsi: remove si_resource.hMarek Olšák2014-01-284-50/+13
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* radeonsi: remove si.hMarek Olšák2014-01-283-45/+5
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* radeonsi: move si_upload_const_buffer to a better placeMarek Olšák2014-01-285-70/+29
| | | | | | | This gets rid of another file. Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* radeonsi: inline si_translate_index_bufferMarek Olšák2014-01-284-60/+19
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* radeonsi: inline si_upload_index_bufferMarek Olšák2014-01-283-13/+2
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* r600g,radeonsi: consolidate remaining obviously duplicated pipe_screen codeMarek Olšák2014-01-284-57/+30
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* r600g,radeonsi: consolidate get_compute_paramMarek Olšák2014-01-287-267/+162
| | | | | | | v2: added fprintf to r600_get_llvm_processor_name Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* r600g,radeonsi: consolidate get_paramf and get_video_paramMarek Olšák2014-01-284-118/+70
| | | | | | | | | | radeonsi now reports PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE = true if UVD support isn't available. It's what all the other drivers do. Also, some #include directives were missing in radeon_uvd.h. Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* r600g,radeonsi: consolidate variables for CS tracingMarek Olšák2014-01-2810-46/+42
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* r600g,radeonsi: consolidate get_timestamp, get_driver_query_infoMarek Olšák2014-01-284-41/+34
| | | | | | | This enables more queries for the Gallium HUD with radeonsi. Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* r600g,radeonsi: consolidate get_name and get_vendor queriesMarek Olšák2014-01-283-74/+50
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* radeon: place context-related functions first in r600_pipe_common.cMarek Olšák2014-01-281-79/+87
| | | | | | | To follow the unwritten convention of r600g and radeonsi. Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* r600g,radeonsi: consolidate the contents of r600_resource.cMarek Olšák2014-01-2813-163/+45
| | | | | Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
* radeonsi: advertise the pipeline statistics queryMarek Olšák2014-01-281-1/+1
| | | | | | | | | | Implemented by the common code. You can now visualize the statistics with the HUD, see GALLIUM_HUD=help for all available queries. For example: GALLIUM_HUD=clipper-primitives-generated Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>