summaryrefslogtreecommitdiffstats
path: root/src/gallium
Commit message (Collapse)AuthorAgeFilesLines
* nir/dead_variables: Configurably work with any variable modeJason Ekstrand2016-04-132-2/+2
| | | | | | | The old version of the pass only worked on globals and locals and always left inputs, outputs, uniforms, etc. alone. Reviewed-by: Kenneth Graunke <[email protected]>
* gallium/swr: Make flat shading tris work.George Kyriazis2016-04-132-0/+5
| | | | | | | - Incorporate flatshade flag into the shader generation - Use provoking vertex (vc) in shader when flat shading. Reviewed-by: Bruce Cherniak <[email protected]>
* Revert "freedreno/a4xx: better occlusion/sample counting"Rob Clark2016-04-131-6/+1
| | | | | | | | | | This reverts commit 62fa868728c729152af0d7cecd1d3e47e831cb7d. dEQP-GLES3.functional.occlusion_query.* was unhappy about that change. Still not really sure *what* the other slots in the sample results buffer are. Signed-off-by: Rob Clark <[email protected]>
* freedreno/a4xx: rasterizer_discard supportRob Clark2016-04-131-0/+17
| | | | | | | | | | | | | | | | | This one is slightly annoying, since trying to write RBRC from draw would clobber values set in the tiling/gmem code. We could do command- stream patching for RBRC, as is done on a3xx. Although since it seems to be a rarely used feature, it is easier just to do RMW to set/clear the bit. Fixes dEQP-GLES3.functional.rasterizer_discard.basic.write_depth_triangles and related tests. a3xx still needs the same feature, although there it probably makes more sense to take advantage of the existing cmdstream patching which is required for RBRC for other reasons. Signed-off-by: Rob Clark <[email protected]>
* freedreno/ir3: fix array textures on a4xxRob Clark2016-04-131-3/+9
| | | | | | | | Seems like a4xx needs offset added to array index for all arrays, whereas a3xx only for cubemap arrays. Fixes a whole swath of dEQP fails (roughly *sampler2darray*). Signed-off-by: Rob Clark <[email protected]>
* freedreno: fix stream-out offset handling for lines/trisRob Clark2016-04-131-1/+1
| | | | | | | | We need to increment offset by # of vertices, not by # of prims. Fixes a bunch of dEQP fails involving prims other than points. For example, dEQP-GLES3.functional.transform_feedback.position.lines_separate Signed-off-by: Rob Clark <[email protected]>
* freedreno: fix handling for stream-out offsetsRob Clark2016-04-131-1/+2
| | | | | | | | | | | | | | | | | | If changed && append, we shouldn't be resetting the internal offset back to zero. This fixes issues w/ sequences like: glBeginTransformFeedback() glDraw() glPauseTransformFeedback() glDraw() glResumeTransformFeedback() glDraw() glEndTransformFeedback() Fixes dEQP-GLES3.functional.transform_feedback.array.separate.points.lowp_vec3 and related tests. Signed-off-by: Rob Clark <[email protected]>
* freedreno: fix prims-emitted queryRob Clark2016-04-133-2/+12
| | | | | | This should only count when TF is not paused. Signed-off-by: Rob Clark <[email protected]>
* freedreno: fix max-line-widthRob Clark2016-04-131-0/+10
| | | | | | | | | | | dEQP noticed that we were advertising completely bogus values. The actual maximum is 127.0f. *But* we have to use an artifically low maximum to work around a bug in the dEQP test, which gets confused when the max line width is too large and lines start going off-screen. Signed-off-by: Rob Clark <[email protected]>
* freedreno: add flag to enable dEQP hacksRob Clark2016-04-132-0/+2
| | | | Signed-off-by: Rob Clark <[email protected]>
* freedreno/ir3: hack to avoid getting stuck in a loopRob Clark2016-04-131-1/+11
| | | | | | | There are still some edge cases which result in a neighbor-loop. Which needs to be fixed, but this hack at least makes deqp tests finish. Signed-off-by: Rob Clark <[email protected]>
* freedreno/ir3: use (ss) instead of (sy) for ldlvRob Clark2016-04-131-1/+7
| | | | | | | Fixes a bunch of flat-varying fail on a4xx (where we need to use ldlv to read the un-interpolated varying). Signed-off-by: Rob Clark <[email protected]>
* freedreno/ir3: cleanup double cmps.s from frontendRob Clark2016-04-131-0/+31
| | | | | | | | | | | | | Since we cannot mov into a predicate register, the frontend uses a 'cmps.s p0.x, cond, 0' as a stand-in for mov to p0.x. It does this since it has no way to know that the source cond instruction (ie. for a kill, br, etc) will only be used to write the predicate reg. Detect this, and re-write the instruction writing p0.x to skip the original cmps.[sfu]. (It is done like this, rather than re-writing the dest of the first cmps.[sfu] in case the first cmps.[sfu] actually has other users.) Signed-off-by: Rob Clark <[email protected]>
* gallivm: Workaround LLVM PR 27332.Jose Fonseca2016-04-131-3/+14
| | | | | | | | | | | | | The credit for finding and isolating this bug goes to Vinson and Roland. The buggy LLVM versions were found by doing opt -instcombine llvm-pr27332.ll > /dev/null where llvm-pr27332.ll is the IR from https://llvm.org/bugs/show_bug.cgi?id=27332#c3 Reviewed-by: Roland Scheidegger <[email protected]>
* gallium/radeon: move a comment to the correct placeMarek Olšák2016-04-131-3/+3
| | | | trivial
* radeonsi: gate PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT by LLVM versionNicolai Hähnle2016-04-131-1/+2
| | | | | | | | | Otherwise we incorrectly claim ARB_ssbo support even with older LLVM versions. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94917 Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* gallium/radeon: add an env variable to force a level of aniso filteringMarek Olšák2016-04-135-9/+31
| | | | Reviewed-by: Nicolai Hähnle <[email protected]>
* llvmpipe: Test rounding of x.5.Jose Fonseca2016-04-131-1/+2
| | | | | | | Leverage nearbyintif function, which should be available on all C99 implementations. Trivial.
* gallivm: use llvm.nearbyint instead of llvm.round.Roland Scheidegger2016-04-131-98/+1
| | | | | | | | | | | | | | | | We used to use sse roundps intrinsic directly, but switched to use the llvm intrinsics for rounding with e4f01da15d8c6ce3e8c77ff3ff3d2ce2574a3f7b. However, llvm semantics follows standard math lib round function which is specced to do roundNearestAwayFromZero but we really want roundNearestEven (moreoever, using round generates atrocious code since the cpu can't do it directly and it results in scalar calls to libm __roundf). So, use llvm.nearbyint instead, which does exactly the right thing, and even has the advantage of being available with llvm 3.3 too. (I've verified it actually generates a roundps instruction with llvm 3.3.) This fixes https://bugs.freedesktop.org/show_bug.cgi?id=94909 Reviewed-by: Jose Fonseca <[email protected]>
* nv50/ra: `isinf()` is in namespace `std` since C++11.Pierre Moreau2016-04-131-0/+4
| | | | | | | | | | This fixes a compile error while building Nouveau with C++11 enabled (and glibc >= 2.23). This happens if SWR is enabled, as it forces C++11. Signed-off-by: Pierre Moreau <[email protected]> Signed-off-by: Jose Fonseca <[email protected]> https://bugs.freedesktop.org/show_bug.cgi?id=94907
* scons: Allow building with Address Sanitizer.Jose Fonseca2016-04-131-4/+8
| | | | | | | | | | | | | | | | | | | | | | | libasan is never linked to shared objects (which doesn't go well with -z,defs). It must either be linked to the main executable, or (more practically for OpenGL drivers) be pre-loaded via LD_PRELOAD. Otherwise works. I didn't find anything with llvmpipe. I suspect the fact that the JIT compiled code isn't instrumented means there are lots of errors it can't catch. But for non-JIT drivers, the Address/Leak Sanitizers seem like a faster alternative to Valgrind. Usage (Ubuntu 15.10): scons asan=1 libgl-xlib export LD_LIBRARY_PATH=$PWD/build/linux-x86_64-debug/gallium/targets/libgl-xlib LD_PRELOAD=libasan.so.2 any-opengl-application Acked-by: Roland Scheidegger <[email protected]>
* softpipe: Free tgsi.image elements on context destruction.Jose Fonseca2016-04-131-0/+2
| | | | | | | | Courtesy of address sanitizer. [airlied: free buffers as well] Reviewed-by: Roland Scheidegger <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* softpipe: Enable ARB_framebuffer_no_attachmentsEdward O'Callaghan2016-04-131-1/+2
| | | | | Signed-off-by: Edward O'Callaghan <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* vc4: Work around hardware limits on the number of verts in a single draw.Eric Anholt2016-04-121-18/+92
| | | | | Fixes rendering failures in glmark2's refract and bump:render-mode=high-poly demos, and partially in its terrain demo.
* softpipe: avoid buffer overflowThomas Hindoe Paaboel Andersen2016-04-132-8/+8
| | | | Signed-off-by: Dave Airlie <[email protected]>
* tgsi: fix buffer overflowThomas Hindoe Paaboel Andersen2016-04-131-1/+1
| | | | | | | Increase r to four channels as rgba is written to it Reviewed-by: Edward O'Callaghan <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* swr: handle pci cap requestsTim Rowley2016-04-121-0/+4
| | | | Reviewed-by: George Kyriazis <[email protected]>
* swr: support samplers in vertex shadersTim Rowley2016-04-126-105/+228
| | | | Reviewed-by: George Kyriazis <[email protected]>
* radeonsi: enable GLSL 4.20 and therefore OpenGL 4.2Nicolai Hähnle2016-04-121-1/+2
| | | | | | | This is the last necessary bit for OpenGL 4.2 support. All driver-specific functionality has already been implemented as part of extensions. Reviewed-by: Edward O'Callaghan <[email protected]>
* va: check null context in vlVaDestroyContextIurie Salomov2016-04-131-0/+4
| | | | | Signed-off-by: Iurie Salomov <[email protected]> Reviewed-by: Julien Isorce <[email protected]>
* radeonsi: fix a critical SI hang since PIPELINESTAT_START/STOP was addedMarek Olšák2016-04-132-9/+2
| | | | | For some reason unknown to me, SI hangs if the event is written after CONTEXT_CONTROL.
* radeonsi: fix bounds check in si_create_vertex_elementsNicolai Hähnle2016-04-121-1/+1
| | | | | | | | | This was triggered by dEQP-GLES3.functional.vertex_array_objects.all_attributes Cc: "11.1 11.2" <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: enable shader buffer pipe capsNicolai Hähnle2016-04-121-2/+2
| | | | | Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: add shader buffer support to TGSI_OPCODE_RESQNicolai Hähnle2016-04-121-6/+11
| | | | | Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: add shader buffer support to TGSI_OPCODE_STORENicolai Hähnle2016-04-121-18/+111
| | | | | Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: add shader buffer support to TGSI_OPCODE_LOADNicolai Hähnle2016-04-121-19/+70
| | | | | Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: add shader buffer support to TGSI_OPCODE_ATOM*Nicolai Hähnle2016-04-121-15/+46
| | | | | Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: add offset parameter to buffer_append_argsNicolai Hähnle2016-04-121-5/+10
| | | | | Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: adjust buffer_append_args to take a 128 bit resourceNicolai Hähnle2016-04-121-7/+23
| | | | | | | Move the buffer resource extraction code out into its own function. Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: preload shader buffers in shadersNicolai Hähnle2016-04-121-0/+17
| | | | | Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: implement set_shader_buffersNicolai Hähnle2016-04-125-58/+125
| | | | | Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: move resetting of constant buffers into a separate functionNicolai Hähnle2016-04-121-15/+26
| | | | | | | This will be re-used for shader buffers. Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]>
* radeonsi: Mark ARB_robust_buffer_access_behavior as supported.Bas Nieuwenhuizen2016-04-121-1/+1
| | | | | Signed-off-by: Bas Nieuwenhuizen <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* gallium: Add capability for ARB_robust_buffer_access_behavior.Bas Nieuwenhuizen2016-04-1217-0/+21
| | | | | | Signed-off-by: Bas Nieuwenhuizen <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
* swr: [rasterizer core] warning cleanupTim Rowley2016-04-122-5/+4
| | | | Acked-by: Brian Paul <[email protected]>
* swr: [rasterizer] Put in rudimentary garbage collection for the global arena ↵Tim Rowley2016-04-123-61/+187
| | | | | | | | | | | allocator - Check for unused blocks every few frames or every 64K draws - Delete data unused since the last check if total unused data is > 20MB Doesn't seem to cause a perf degridation Acked-by: Brian Paul <[email protected]>
* swr: [rasterizer core] Put DRAW_CONTEXT on a dietTim Rowley2016-04-127-49/+43
| | | | | | No need for 256 pointers per DC. Acked-by: Brian Paul <[email protected]>
* swr: [rasterizer core] Add experimental support for hyper-threaded front-endTim Rowley2016-04-125-56/+139
| | | | Acked-by: Brian Paul <[email protected]>
* swr: [rasterizer] Avoid segv in thread creation on machines with ↵Tim Rowley2016-04-121-0/+4
| | | | | | non-consecutive NUMA topology. Acked-by: Brian Paul <[email protected]>
* swr: [rasterizer core] Replace all naked OSALIGN macro uses with OSALIGNSIMD ↵Tim Rowley2016-04-124-14/+14
| | | | | | | | / OSALIGNLINE Future proofing Acked-by: Brian Paul <[email protected]>