summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-07-13i965/miptree: Allocate some linear_mt BO's BUSYwip/perf/blit-mapsNanley Chery1-1/+3
2018-07-13XXX: i965/miptree: Change blit map conditionsNanley Chery1-19/+19
Get rid of a ton of restrictions that BLORP can actually handle and just try to avoid blit maps in cases that would hurt performance. TODO: * Wait for Scott's work to land * Benchmark blit maps vs tiled memcpy maps in the mentioned cases * Handle comments
2018-07-13i965/miptree: Enable Y-tiling gen5Nanley Chery1-1/+1
Start testing the BLORP fallback paths. This tiling is generally faster than X-tiling. This doesn't work on gen4 for some reason. Fixes piglit.spec.!opengl 1_4.copy-pixels
2018-07-13XXX: i965/miptree: Stop retiling miptreesNanley Chery1-56/+0
The only reason for retiling miptrees was to overcome limitations of the BLT engine. Now that BLORP fallbacks can handle those cases, we no longer have need for retiling. Removing retiling fixes a number of problems. If the row pitch was too wide for the BLT engine, we retiled to linear and had the following issues: * We retiled on gen6+ platforms which don't actually use the blitter. * The new linearly tiled miptree's row pitch may still have been too large, but we never checked. * The caller may have gotten their request for specific tiling (e.g. for an existing BO) overruled. XXX: Learn more about the last case.
2018-07-13i965/miptree: Allow blit maps with BLORP on gen4-5Nanley Chery1-17/+2
The BLORP fallback can handle Y-tiling and large row pitches.
2018-07-13i965: Make BLORP a fallback in blit mapsNanley Chery2-18/+12
We're going to stop retiling our miptrees to be useable by the BLT engine. Restructure the blit map code so that mapping will still work.
2018-07-13i965/miptree: Allocate MS texture BOs as BUSYNanley Chery1-2/+2
These buffer objects are never accessed with the CPU. Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Inline make_separate_stencilNanley Chery1-23/+6
Note that the separate stencil miptree now has the same alloc_flag as the depth component. Only stencil renderbuffers (as opposed to textures) have BO_ALLOC_BUSY. v2: Add note about BO_ALLOC_BUSY in message (Topi). Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Init r8stencil_needs_update to falseNanley Chery1-3/+4
The current behavior masked two bugs where the flag was not set to true after modifying the stencil texture. One case was a regression introduced with commit bdbb527a65fc729e7a9319ae67de60d03d06c3fd and another was a bug in the depthstencil mapping code. These have since been fixed. To prevent such bugs from being masked in the future, initialize r8stencil_needs_update to false. v2: Keep the delayed allocation. Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Refactor miptree_createNanley Chery1-36/+12
Enable a future patch to create the r8stencil_mt in this function. v2: Explicitly set etc_format to MESA_FORMAT_NONE (Topi). Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Add and use mt_surf_usageNanley Chery1-13/+25
v2: Make mt_fmt const (Topi). Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Share alloc_flags in miptree_createNanley Chery1-7/+4
Note that this maintains BO_ALLOC_BUSY for depth renderbuffers, but not depth textures. v2: Add note about BO_ALLOC_BUSY in message (Topi). Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Share the miptree format in miptree_createNanley Chery1-15/+15
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Share tiling_flags in miptree_createNanley Chery1-8/+7
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Delete MIPTREE_CREATE_LINEARNanley Chery2-13/+3
This enum constant was introduced to enable blit maps with intel_miptree_create da2880bea05bfc87109477ab026a7f5401fc8f0c. Now that such maps use the more direct make_surface function which allows you to specify the tiling directly, the constant is no longer being used. Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Use make_surface in map_blitNanley Chery1-6/+6
Do this so that we don't have to special case linearly-tiled depth buffers in miptree_create. Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/draw: Fix adding the stencil bo to the depth cacheNanley Chery1-1/+1
Fix the case where stencil writes are enabled on a depth stencil texture. Found by inspection. v2: Fix message to allow for depth stencil writes (Topi). Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/draw: Set the r8stencil flag after drawingNanley Chery1-1/+11
Fixes the regresion introduced with commit bdbb527a65fc729e7a9319ae67de60d03d06c3fd "i965: Use ISL for emitting depth/stencil/hiz state on gen6+" Found by inspection. Prevents regressing the piglit test, fbo-depth-array stencil-draw, later on in this series. Cc: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965/miptree: Set the r8stencil flag in map_depthstencilNanley Chery1-1/+3
Found by initializing the r8stencil_needs_update to false in make_separate_stencil_surface. Prevents regressing the piglit test arb_stencil_texturing-draw, later on in the series. Cc: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13i965: Set the r8stencil flag in miptree_finish_writeNanley Chery4-17/+4
This seems to be the most appropriate place. Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
2018-07-13nir: cleanup oversized arrays in nir_swizzle callsKarol Herbst8-34/+24
There are no fixed sized array arguments in C, those are simply pointers to unsized arrays and as the size is passed in anyway, just rely on that. where possible calls are replaced by nir_channel and nir_channels. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Karol Herbst <kherbst@redhat.com>
2018-07-12i965/miptree: Use the correct BLT pitchNanley Chery1-6/+6
Retile miptrees to a linear tiling less often. Retiling can cause issues with imported BOs. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106738 Suggested-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-07-12i965/miptree: Drop an if case from retile_as_linearNanley Chery1-4/+0
Drop an if statement whose predicate never evaluates to true. row_pitch belongs to a surface with non-linear tiling. According to isl_calc_tiled_min_row_pitch, the pitch is a multiple of the tile width. By looking at isl_tiling_get_info, we see that non-linear tilings have widths greater than or equal to 128B. Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-07-12i965: Make blt_pitch publicNanley Chery2-10/+12
We'd like to reuse this helper. Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-07-12nir: delete not needed for reinserted nir_cf_listCaio Marcelo de Oliveira Filho1-2/+0
It wasn't causing problems since there's nothing to delete, but better be consistent with the rest of existing codebase. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2018-07-12glsl: remove struct kill_entry in constant propagationCaio Marcelo de Oliveira Filho1-26/+7
The only value in kill_entry is the writemask, which can be stored in the data pointer of the hash table entry. Suggested by Eric Anholt. Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Thomas Helland <thomashelland90@gmail.com>
2018-07-12glsl: slim the kill_entry struct used in const propagationCaio Marcelo de Oliveira Filho1-8/+5
Since 4654439fdd7 "glsl: Use hash tables for opt_constant_propagation() kill sets." uses a hash_table for storing kill_entries, so the structs can be simplified. Remove the exec_node from kill_entry since it is not used in an exec_list anymore. Remove the 'var' from kill_entry since it is now redundant with the key of the hash table. Suggested by Eric Anholt. Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Thomas Helland <thomashelland90@gmail.com>
2018-07-12i965: fix typo (wrong gen number) in commentCaio Marcelo de Oliveira Filho1-1/+1
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2018-07-12util/set: helper to remove entry by keyCaio Marcelo de Oliveira Filho3-0/+39
v2: Add unit test. (Eric Anholt) Reviewed-by: Eric Anholt <eric@anholt.net>
2018-07-12util/set: add a clone functionCaio Marcelo de Oliveira Filho3-0/+58
v2: Add unit test. (Eric Anholt) Reviewed-by: Eric Anholt <eric@anholt.net>
2018-07-12util/set: add a basic unit testCaio Marcelo de Oliveira Filho6-1/+131
Reviewed-by: Eric Anholt <eric@anholt.net>
2018-07-12radeonsi: add support for Vega20Marek Olšák12-3/+26
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2018-07-12u_blitter: Add an option to draw the triangles using an index buffer.Eric Anholt3-2/+17
For V3D, the HW will interpolate slightly differently along the shared edge of the trifan. The conformance tests manage to catch this in the nearest_consistency_* group. To get interpolation to match, we need the last vertex of the triangle to be shared. I first tried implementing draw_rectangle to do triangles instead, but that was quite a bit (147 lines) of code duplication from u_blitter, and this seems much simpler and less likely to break as u_blitter changes. Fixes dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_* on V3D. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
2018-07-12u_draw: Add some indices to the util_draw_elements() helpers.Eric Anholt1-1/+8
These helpers have been unused, and were definitely not useful since 330d0607ed60 ("gallium: remove pipe_index_buffer and set_index_buffer") made it so that they never had an index buffer passed in. For an upcoming u_blitter change to use these helpers, I have just 6 bytes of index data, so pass it as user data until a more interesting caller comes along. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
2018-07-12vc4: Don't automatically reallocate a PERSISTENT-mapped buffer.Eric Anholt1-1/+1
I had mistakenly used the COHERENT flag, which can only be set when PERSISTENT is mapped, but isn't always. Fixes: a2014c2eb9e0 ("vc4: Simplify the DISCARD_RANGE handling")
2018-07-12v3d: Don't automatically reallocate a PERSISTENT-mapped buffer.Eric Anholt1-1/+1
I had mistakenly used the COHERENT flag, which can only be set when PERSISTENT is mapped, but isn't always. Fixes piglit bufferstorage-persistent read
2018-07-12v3d: Fix stride of 1D_ARRAY mappings.Eric Anholt1-1/+1
All of our other texture arrays will be tiled, but 1D is an array of raster mappings and we had the wrong value plugged in here. Fixes piglit getteximage-targets 1D_ARRAY
2018-07-12v3d: Fix MRT blending with independent blending disabled.Eric Anholt2-6/+14
We were only emitting the RT blend state for RT 0 and only enabling it for RT 0, when the gallium API for !independent_blend is for rt0's state to apply to all of them. Fixes piglit fbo-drawbuffers-blend-add.
2018-07-12gallium/u_transfer_helper: Initialize the stride of MSAA maps.Eric Anholt1-0/+1
We just never set the value that was returned for MSAA mappings (directly reading back an MSAA framebuffer). Since we're handing back ss_map, it should be ss_map's stride from our nested transfer. Fixes piglit /home/anholt/src/piglit/bin/fbo-depthstencil -samples=4 cases. Reviewed-by: Rob Clark <robdclark@gmail.com>
2018-07-12gallium/u_transfer_helper: Fix MSAA mappings with nonzero x/y.Eric Anholt1-1/+5
We created a temporary with box->{width,height} and then tried to map width,height from a nonzero offset when we meant to just map the whole temporary. Fixes segfaults in V3D in dEQP-GLES3.functional.prerequisite.read_pixels with --deqp-egl-config-name=rgba8888d24s8ms4 and also piglit's read-front clear-front-first -samples=4 Reviewed-by: Rob Clark <robdclark@gmail.com>
2018-07-12util/rb_tree: Fix a compiler warningJason Ekstrand1-1/+1
Gcc 8 warns "cast to pointer from integer of different size" in 32-bit builds. Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
2018-07-12i965/fs: unspills shoudn't use grf127 as dest since Gen8+Jose Maria Casanova Crespo2-5/+34
At 232ed8980217dd65ab0925df28156f565b94b2e5 "i965/fs: Register allocator shoudn't use grf127 for sends dest" we didn't take into account the case of SEND instructions that are not send_from_grf. But since Gen7+ although the backend still uses MRFs internally for sends they are finally assigned to a GRFs. In the case of unspills the backend assigns directly as source its destination because it is suppose to be available. So we always have a source-destination overlap. If the reg_allocator assigns registers that include the grf127 we fail the validation rule that affects Gen8+ "r127 must not be used for return address when there is a src and dest overlap in send instruction." So this patch activates the grf127_send_hack_node for Gen8+ and if we have any register spilled we add interferences to the destination of the unspill operations. We also need to avoid that opt_bank_conflicts() optimization, that runs after the register allocation, doesn't move things around, causing the grf127 to be used in the condition we were avoiding. Fixes piglit test tests/spec/arb_compute_shader/linker/bug-93840.shader_test and some shader-db crashed because of the grf127 validation rule.. v2: make sure that opt_bank_conflicts() optimization doesn't change the use of grf127. (Caio) Found by Caio Marcelo de Oliveira Filho Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107193 Fixes: 232ed89802 "i965/fs: Register allocator shoudn't use grf127 for sends dest" Cc: 18.1 <mesa-stable@lists.freedesktop.org> Cc: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> Cc: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
2018-07-12gallium: Check pipe_screen::resource_changed before dereferencing itMichel Dänzer4-4/+8
It's optional, only implemented by the etnaviv driver so far. Fixes: 501d0edeca32 "st/mesa: call resource_changed when binding a EGLImage to a texture" Fixes: a37cf630b4d1 "gallium: add pipe_screen::resource_changed callback wrappers" Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
2018-07-12docs/features: Add the missing KHR extensionsJason Ekstrand1-0/+5
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
2018-07-12docs/features: Move the Vulkan 1.1 extensions to the 1.1 sectionJason Ekstrand1-14/+25
While we're at it, add some extensions we missed along the way like the VK_KHR_maintenanceN extensions. Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
2018-07-12docs/features: Mark some Vulkan extensions as doneJason Ekstrand1-9/+9
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
2018-07-12nir/spirv: handle OpConstantComposites with OpUndef membersKarol Herbst1-2/+13
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Karol Herbst <kherbst@redhat.com>
2018-07-12nir/spirv: implement BuiltInGlobalSizeKarol Herbst4-0/+13
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Karol Herbst <kherbst@redhat.com>
2018-07-12nir: move lowering of SYSTEM_VALUE_LOCAL_GROUP_SIZE into a functionKarol Herbst1-16/+14
we already have this code duplicated and we will need it for the global group size as well Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Karol Herbst <kherbst@redhat.com>
2018-07-12compiler: add missing entries to gl_system_value_nameKarol Herbst1-1/+4
also reorder to match the gl_system_value enum. It is weird that the STATIC_ASSERT doesn't trigger though. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Karol Herbst <kherbst@redhat.com>