summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/swr
Commit message (Collapse)AuthorAgeFilesLines
* swr: set an explicit clear_rect if scissor is not enabled.Bruce Cherniak2017-06-261-1/+9
| | | | | | | | | | | | | Fix regression of "no rendering" on simple apps like glxgears by setting an explicit full surface clear_rect when scissor is not enabled. This regressed with commit 00173d91 "st/mesa: don't set 16 scissors and 16 viewports if they're unused" due to an assumption that a default scissor rect is always set, which was the case prior to this optimization. Reviewed-by: Tim Rowley <[email protected]>
* swr/rast: adjust std::string usage to fix buildTim Rowley2017-06-261-3/+9
| | | | | | | | | | Some combinations of c++ compilers and standard libraries had problems with the string::replace code we were using previously. This should fix the travis-ci system. Tested-by: Eric Engestrom <[email protected]> Reviewed-by: Bruce Cherniak <[email protected]>
* swr: invalidate attachment on transition changeGeorge Kyriazis2017-06-223-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following RT attachment order: 1. Attach surfaces attachments 0 & 1, and render with them 2. Detach 0 & 1 3. Re-attach 0 & 1 to different surfaces 4. Render with the new attachment The definition of a tile being resolved is that local changes have been flushed out to the surface, hence there is no need to reload the tile before it's written to. For an invalid tile, the tile has to be reloaded from the surface before rendering. Stage (2) was marking hot tiles for attachements 0 & 1 as RESOLVED, which means that the hot tiles can be written out to memory with no need to read them back in (they are "clean"). They need to be marked as resolved here, because a surface may be destroyed after a detach, and we don't want to have un-resolved tiles that may force a readback from a NULL (destroyed) surface. (Part of a destroy is detach all attachments first) Stage (3), during the no att -> att transition, we need to realize that the "new" surface tiles need to be fetched fresh from the new surface, instead of using the resolved tiles, that belong to a stale attachment. This is done by marking the hot tiles as invalid in stage (3), when we realize that a new attachment is being made, so that they are re-fetched during rendering in stage (4). Also note that hot tiles are indexed by attachment. - Fixes VTK dual depth-peeling tests. - No piglit changes Reviewed-by: Tim Rowley <[email protected]>
* swr: Include definition of missing functionGeorge Kyriazis2017-06-201-0/+1
| | | | | | | | | Inline function SWR_MULTISAMPLE_POS::PrecalcSampleData() was missing definition. Include definition in core/state_funcs.h. Fixes windows build. Reviewed-by: Tim Rowley <[email protected]>
* swr/rast: Fix read-back of viewport array indexTim Rowley2017-06-1610-117/+182
| | | | | | | Binner/clipper read viewport array index from the vertex header as needed. Move viewport state to BACKEND_STATE. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Refactor includes to limit simdintrin.h usageTim Rowley2017-06-1616-1079/+1147
| | | | | | | Reduces the files rebuilt after modifying simdintrin.h from 84 to 64. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Fix read-back of render target array indexTim Rowley2017-06-165-13/+18
| | | | | | | | The last FE stage can emit render target array index. Currently we only check to see if GS is emitting it. Moved the state to BACKEND_STATE and plumbed the driver to set it. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Adjust cast for gcc warningTim Rowley2017-06-161-1/+1
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Don't transition hottile resolved->dirty during store tilesTim Rowley2017-06-161-1/+4
| | | | | | Fixes crash when dumping render targets and RT surface has been deleted. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: gen_llvm_types.py support for SIMD256/SIMD512Tim Rowley2017-06-161-6/+6
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Properly size GS stage scratch spaceTim Rowley2017-06-161-1/+1
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Fix early z / query interactionTim Rowley2017-06-161-0/+4
| | | | | | | | | | | | | | | | For certain cases, we perform early z for optimization. The GL_SAMPLES_PASSED query was providing erroneous results because we were counting the number of samples passed before the fragment shader, which did not work if the fragment shader contained a discard. Account properly for discard and early z, by anding the zpass mask with the post fragment shader active mask, after the fragment shader. Fixes the following piglit tests: - occlusion-query-discard - occlusion_query_meta_fragments Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Share vertex memory between VS input/outputTim Rowley2017-06-161-5/+2
| | | | | | | | Removes large simdvertex stack allocation. Vertex shader must ensure reads happen before writes. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Add support for dynamic vertex size for VS outputTim Rowley2017-06-163-15/+23
| | | | | | | | Add support for dynamic vertex size for the vertex shader output. Add new state in SWR_FRONTEND_STATE to specify the size. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: SIMD16 FE - improve calcDeterminantIntVerticalTim Rowley2017-06-161-12/+20
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Add support to PA for variable sized verticesTim Rowley2017-06-164-26/+38
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Rework attribute layoutTim Rowley2017-06-164-66/+103
| | | | | | | Move fixed attributes to the top and pack single component SGVs. WIP to support dynamically allocated vertex size. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Remove explicit primitive id slot in the vertex layoutTim Rowley2017-06-167-58/+33
| | | | | | | | - Remove any special casing in the PS stage when primitive ID is input. Treat as a normal attribute that must be set up properly in the FE linkage. - Remove primitive id from the PS_CONTEXT and TRI_FLAGS Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Fix invalid 16-bit format traits for A1R5G5B5Tim Rowley2017-06-161-100/+48
| | | | | | | Correctly handle formats of <= 16 bits where the component bits don't add up to the pixel size. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: Implement JIT shader caching to diskTim Rowley2017-06-1610-18/+358
| | | | | | Disabled by default; currently doesn't cache shaders (fs,gs,vs). Reviewed-by: Bruce Cherniak <[email protected]>
* swr: Don't crash when encountering a VBO with stride = 0.Bruce Cherniak2017-06-161-7/+18
| | | | | | | | | | | | | | | | | | | | The swr driver uses vertex_buffer->stride to determine the number of elements in a VBO. A recent change to the state-tracker made it possible for VBO's with stride=0. This resulted in a divide by zero crash in the driver. The solution is to use the pre-calculated vertex element stream_pitch in this case. This patch fixes the crash in a number of piglit and VTK tests introduced by 17f776c27be266f2. There are several VTK tests that still crash and need proper handling of vertex_buffer_index. This will come in a follow-on patch. v2: Correctly update all parameters for VBO constants (stride = 0). Also fixes the remaining crashes/regressions that v1 did not address, without touching vertex_buffer_index. Reviewed-by: Tim Rowley <[email protected]>
* gallium: add PIPE_CAP_BINDLESS_TEXTURESamuel Pitoiset2017-06-141-0/+1
| | | | | | | | | Whether bindless texture operations are supported by the underlying driver. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* swr: relax c++ requirement from c++14 to c++11Tim Rowley2017-06-083-16/+17
| | | | | | | | | | | Remove c++14 generic lambda to keep compiler requirement at c++11. No regressions on piglit or vtk test suites. Tested-by: Chuck Atkins <[email protected]> Reviewed-by: Bruce Cherniak <[email protected]> CC: [email protected]
* tree-wide: remove trailing backslashEric Engestrom2017-06-071-2/+2
| | | | | | | | | Simple search for a backslash followed by two newlines. If one of the newlines were to be removed, this would cause issues, so let's just remove these trailing backslashes. Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* gallium: Add a cap to check if the driver supports ARB_post_depth_coverageLyude2017-06-021-0/+1
| | | | | Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Ilia Mirkin <[email protected]>
* swr/rast: code cleanup (no functional change)Tim Rowley2017-05-301-2/+6
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: whitespace changesTim Rowley2017-05-303-8/+3
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: code cleanup (no functional change)Tim Rowley2017-05-301-3/+4
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: allow early-z if shader uses depth valueTim Rowley2017-05-301-1/+1
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: move wireframe/point triangle binning after cullingTim Rowley2017-05-301-80/+76
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: remove unused functionsTim Rowley2017-05-301-28/+0
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: code cleanup (no functional change)Tim Rowley2017-05-301-60/+64
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: move binner utility functions to binner.hTim Rowley2017-05-303-193/+225
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: SIMD16 FE - fix/use SIMD16 calcDeterminantIntVertical()Tim Rowley2017-05-303-43/+65
| | | | | | Stop double pumping the SIMD8 version. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: add renderTargetArrayIndex to SWR_PS_CONTEXTTim Rowley2017-05-302-5/+6
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: make simd16 logicops avx512f safeTim Rowley2017-05-301-4/+10
| | | | | | Express the simd16 logicops in terms of avx512f instructions. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: SIMD16 FE - add SIMD16 types to jitterTim Rowley2017-05-303-10/+11
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: SIMD16 FE - fix PA_STATE_OP::Reset()Tim Rowley2017-05-301-0/+3
| | | | | | Fixes instanced GS. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: SIMD16 FE - simplify/refactor StreamOutTim Rowley2017-05-301-42/+0
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: SIMD16 FE - fix conservative rasterizationTim Rowley2017-05-301-0/+32
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: SIMD16 FE - interleaved simdvertex output in GSTim Rowley2017-05-302-20/+31
| | | | | | Eliminates conversion copies on GS output from simdvertex to simd16vertex. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: fix _simd16_movemask_(ps,pd) native AVX512 intrinsicsTim Rowley2017-05-301-4/+4
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: SIMD16 FE - primitive assembly simplificationTim Rowley2017-05-302-50/+32
| | | | | | | | | | | Reduce/simplify vertex storage usage in PA_STATE_OPT, fix PA GetNextVSOutput wrap-around behaviour and eliminate unnecessary SIMDVERTEX copies/storage for tri fan in PA_STATE_OPT Fixes the OpenGL tri fan test failure under SIMD16 - triangle-rasterization-overdraw. Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: silence write of cfg graphTim Rowley2017-05-301-3/+3
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: add CreateDirectoryPath to recursively create directoriesTim Rowley2017-05-303-8/+53
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: add support for DX1_RGB{_SRGB} formatsTim Rowley2017-05-303-37/+93
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: clean up whitespaceTim Rowley2017-05-301-1/+0
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: adjust BinPostSetupPoints* function signatureTim Rowley2017-05-301-3/+3
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* swr/rast: remove extra pixel center adjustment in BinPostSetupPointsTim Rowley2017-05-301-5/+0
| | | | Reviewed-by: Bruce Cherniak <[email protected]>
* automake: add SWR LLVM gen_builder.hpp workaroundEmil Velikov2017-05-201-30/+11
| | | | | | | | | | | | | | | | | | | | | As gen_builder.hpp file is generated, it contains information that is specific to the LLVM version it originates from. As suggested by Tim, the file seems to be forwards compatible. So in order to produce ship a file which will work everywhere we should be using earlies supported LLVM - 3.9. With this we're back on track and can build all of mesa without python/mako/flex and friends. In the long term we might want to see if the python generators can be updated to produce LLVM version agnostic files. At least within the range supported by SWR. Cc: <[email protected]> Cc: Chuck Atkins <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Tim Rowley <[email protected]>