summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* panfrost: Rewrite varying assemblyAlyssa Rosenzweig2019-03-196-217/+141
| | | | | | | | | | | | | | | | | | | | | | | There are two stages to varying assembly in the command stream: creating the varying buffers in the command stream, and creating the varying meta descriptors (also in the command stream) linked to the aforementioned buffers. The previous code for this was ad hoc and brittle, making some invalid assumptions causing unmaintainable workarounds to pile up across the driver (both compiler and command stream side). This patch completely rewrites the varying assembly code. There's a trivial performance penalty (we now memcpy the varying meta to the command stream on draw, rather than on compile). That said, the improvement in flexibility and clarity is well-worth it. The motivator for these changes was support for gl_PointCoord (and eventually point sprites for legacy GL), which was impossible to implement with the old varying assembly code. With the new refactor, it's super easy; support for gl_PointCoord is included with this patch. All in all, I'm quite happy with how this turned out. Signed-off-by: Alyssa Rosenzweig <[email protected]>
* panfrost: Replay more varying buffersAlyssa Rosenzweig2019-03-191-1/+1
| | | | | | This is required for gl_PointCoord to show up on decodes. Signed-off-by: Alyssa Rosenzweig <[email protected]>
* panfrost/decode: Respect primitive size pointersAlyssa Rosenzweig2019-03-191-3/+7
| | | | Signed-off-by: Alyssa Rosenzweig <[email protected]>
* panfrost: Disable PIPE_CAP_TGSI_TEXCOORDAlyssa Rosenzweig2019-03-191-3/+0
| | | | | | I don't know why this was on to begin with...? Signed-off-by: Alyssa Rosenzweig <[email protected]>
* panfrost: Fix primconvert checkAlyssa Rosenzweig2019-03-191-1/+1
| | | | | | | In addition to fixing actual primconvert bugs, this prevents an infinite loop when trying to draw POINTS. Signed-off-by: Alyssa Rosenzweig <[email protected]>
* panfrost: Workaround buffer overrun with mip levelAlyssa Rosenzweig2019-03-191-1/+0
| | | | | | | Mipmaps are still broken, but at least this way we don't crash on some apps using mipmaps. Signed-off-by: Alyssa Rosenzweig <[email protected]>
* radv: Use correct image view comparison for fast clears.Bas Nieuwenhuizen2019-03-191-1/+1
| | | | | | | | The if is actually returning true on success, enabling fast clears, so we need to have the test succeed when the iview dimensions are right. Fixes: d5400a5ec2a "radv: provide a helper for comparing an image extents." Reviewed-by: Dave Airlie <[email protected]>
* anv,radv: Implement VK_KHR_surface_capability_protectedJason Ekstrand2019-03-185-7/+61
| | | | | Reviewed-by: Bas Nieuwenhuizen <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* anv: Treat zero size XFB buffer as disabledDanylo Piliaiev2019-03-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Vulkan spec doesn't explicitly forbid zero size transform feedback buffers. Having zero size xfb caused SurfaceSize overflow and triggered assert in debug build. The only way to have zero size SO_BUFFER is to disable SO_BUFFER as stated in hardware spec. From SKL PRM, Vol 2a, "3DSTATE_SO_BUFFER": "If set, stream output to SO Buffer is enabled, if 3DSTATE_STREAMOUT::SO Function ENABLE is also enabled. If clear, the SO Buffer is considered "not bound" and effectively treated as a zero- length buffer for the purposes of SO output and overflow detection. If an enabled stream's Stream to Buffer Selects includes this buffer it is by definition an overflow condition. That stream will cause no writes to occur, and only SO_PRIM_STORAGE_NEEDED[<stream>] will increment." Fixes: 36ee2fd61c8 "anv: Implement the basic form of VK_EXT_transform_feedback" Signed-off-by: Danylo Piliaiev <[email protected]> Reviewed-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* radv: Implement VK_EXT_host_query_reset.Bas Nieuwenhuizen2019-03-183-0/+29
| | | | | Reviewed-by: Samuel Pitoiset <[email protected]> Acked-by: Eric Engestrom <[email protected]>
* anv: Implement VK_EXT_host_query_resetJason Ekstrand2019-03-183-0/+22
| | | | | | Reviewed-by: Bas Nieuwenhuizen <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Lionel Landwerlin <[email protected]>
* vulkan: Update the XML and headers to 1.1.104Bas Nieuwenhuizen2019-03-181-27/+177
| | | | | | Acked-by: Samuel Pitoiset <[email protected]> Acked-by: Eric Engestrom <[email protected]> Acked-by: Lionel Landwerlin <[email protected]>
* vulkan/util: Handle enums that are in platform-specific headers.Bas Nieuwenhuizen2019-03-181-0/+23
| | | | | | | | | | | | VkFullScreenExclusiveEXT comes from the win32 header. Mostly took the logic from the entrypoint scripts: 1) If there is an ext that has it in the requires and has a platform, take the guard for that platform. 2) Otherwise assume it is from the core headers. Acked-by: Samuel Pitoiset <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* vulkan: factor out wsi dependenciesLionel Landwerlin2019-03-184-24/+15
| | | | | | | | | | | | | In commit 530927d3f6a303d9 ("vulkan/util: generate instance/device dispatch tables") we started generating instance dispatch tables some of them (like wayland) require external headers. This commit moves the dependencies up one level so that they apply the whole vulkan directory. We use them for both the util & overlay layer. Signed-off-by: Lionel Landwerlin <[email protected]> Fixes: 530927d3f6a303 ("vulkan/util: generate instance/device dispatch tables") Reviewed-by: Eric Engestrom <[email protected]>
* android: Build fixes for OMR1Tapani Pälli2019-03-183-0/+35
| | | | | | | | | | | | | Some of the header file locations are changed between Android versions (when VNDK is used), patch makes sure we get all the required headers. v2: cleanups, put SDK version checks in all places (Tapani) Signed-off-by: Tapani Pälli <[email protected]> Signed-off-by: Chen Lin Z <[email protected]> Tested-by: Clayton Craft <[email protected]> Acked-by: Eric Engestrom <[email protected]>
* radv: Allow fast clears with concurrent queue mask for some layouts.Bas Nieuwenhuizen2019-03-181-6/+5
| | | | | | | | | | | | | | For VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL and VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL we do not care about the queue mask because 1) using these is only allowed on the gfx queue 2) transitions for these are only allowed on the gfx queue. This enables some fast clears for Doom that uses VK_SHARING_MODE_CONCURRENT. Reviewed-by: Samuel Pitoiset <[email protected]>
* iris: Slightly better bounds on buffer sizesKenneth Graunke2019-03-181-2/+2
|
* iris: Don't flush the batch for unsynchronized mappingsKenneth Graunke2019-03-181-3/+5
| | | | I messed this up when adding the GPU copy path.
* isl: fix automake build when sse41 is not supportedTapani Pälli2019-03-181-4/+7
| | | | | | | | Fixes: 864cc419eb0a41882762 "intel/isl: move tiled_memcpy static libs from i965 to isl" Cc: [email protected] Reported-by: Milav Soni <[email protected]> Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* gallium/util: remove pipe_sampler_view_release()Brian Paul2019-03-171-20/+0
| | | | | | | | | It's no longer used. Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Neha Bhende <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> Reviewed-By: Jose Fonseca <[email protected]>
* i915g: remove calls to pipe_sampler_view_release()Brian Paul2019-03-171-8/+2
| | | | | | | | | | As with previous patches for svga, llvmpipe, swr drivers. Compile tested only. Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Neha Bhende <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> Reviewed-By: Jose Fonseca <[email protected]>
* swr: remove call to pipe_sampler_view_release()Brian Paul2019-03-171-5/+0
| | | | | | | | | | As with svga, llvmpipe drivers in previous patches. Compile tested only. Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Neha Bhende <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> Reviewed-By: Jose Fonseca <[email protected]>
* llvmpipe: stop using pipe_sampler_view_release()Brian Paul2019-03-171-6/+0
| | | | | | | | | | | This was used to avoid freeing a sampler view which was created by a context that was already deleted. But the state tracker does not allow that. Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Neha Bhende <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> Reviewed-By: Jose Fonseca <[email protected]>
* svga: stop using pipe_sampler_view_release()Brian Paul2019-03-172-28/+14
| | | | | | | | | | | | | | | | | | This function was used in the past to avoid deleting a sampler view for a context that no longer exists. But the Mesa state tracker ensures that cannot happen. Use the standard refcounting function instead. Also, remove the code which checked for context mis-matches in svga_sampler_view_destroy(). It's no longer needed since implementing the zombie sampler view code in the state tracker. Testing Done: google chrome, variety of GL demos/games Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Neha Bhende <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> Reviewed-By: Jose Fonseca <[email protected]>
* st/mesa: stop using pipe_sampler_view_release()Brian Paul2019-03-172-5/+4
| | | | | | | | | | | | | | In all instances here we can replace pipe_sampler_view_release(pipe, view) with pipe_sampler_view_reference(view, NULL) because the views in question are private to the state tracker context. So there's no danger of freeing a sampler view with the wrong context. Testing done: google chrome, misc GL demos, games Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Neha Bhende <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> Reviewed-By: Jose Fonseca <[email protected]>
* st/mesa: implement "zombie" shaders listBrian Paul2019-03-173-20/+166
| | | | | | | | | | | | | | | | | | | | | | As with the preceding patch for sampler views, this patch does basically the same thing but for shaders. However, reference counting isn't needed here (instead of calling cso_delete_XXX_shader() we call st_save_zombie_shader(). The Redway3D Watch is one app/demo that needs this change. Otherwise, the vmwgfx driver generates an error about trying to destroy a shader ID that doesn't exist in the context. Note that if PIPE_CAP_SHAREABLE_SHADERS = TRUE, then we can use/delete any shader with any context and this mechanism is not used. Tested with: google-chrome, google earth, Redway3D Watch/Turbine demos and a few Linux games. Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Neha Bhende <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> Reviewed-By: Jose Fonseca <[email protected]>
* st/mesa: implement "zombie" sampler views (v2)Brian Paul2019-03-175-4/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When st_texture_release_all_sampler_views() is called the texture may have sampler views belonging to several contexts. If we unreference a sampler view and its refcount hits zero, we need to be sure to destroy the sampler view with the same context which created it. This was not the case with the previous code which used pipe_sampler_view_release(). That function could end up freeing a sampler view with a context different than the one which created it. In the case of the VMware svga driver, we detected this but leaked the sampler view. This led to a crash with google-chrome when the kernel module had too many sampler views. VMware bug 2274734. Alternately, if we try to delete a sampler view with the correct context, we may be "reaching into" a context which is active on another thread. That's not safe. To fix these issues this patch adds a per-context list of "zombie" sampler views. These are views which are to be freed at some point when the context is active. Other contexts may safely add sampler views to the zombie list at any time (it's mutex protected). This avoids the context/view ownership mix-ups we had before. Tested with: google-chrome, google earth, Redway3D Watch/Turbine demos a few Linux games. If anyone can recomment some other multi-threaded, multi-context GL apps to test, please let me know. v2: avoid potential race issue by always adding sampler views to the zombie list if the view's context doesn't match the current context, ignoring the refcount. Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Neha Bhende <[email protected]> Reviewed-by: Mathias Fröhlich <[email protected]> Reviewed-By: Jose Fonseca <[email protected]>
* android: nouveau: add support for nirMauro Rossi2019-03-181-1/+6
| | | | | | | | Add the necessary build rules for android, to avoid building errors. Fixes: f014ae3 ("nouveau: add support for nir") Signed-off-by: Mauro Rossi <[email protected]> Reviewed-by: Karol Herbst <[email protected]>
* ac/nir_to_llvm: add assert to emit_bcsel()Timothy Arceri2019-03-181-0/+2
| | | | | | | nir to llvm assumes we have already split vectors to scalars via nir_lower_alu_to_scalar(). Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* radeonsi/nir: call some more var optimisation passesTimothy Arceri2019-03-181-3/+8
| | | | | | | | | | | | | | | | | | shader-db results (VEGA64): Totals from affected shaders: SGPRS: 5328912 -> 5329680 (0.01 %) VGPRS: 2969308 -> 2969164 (-0.00 %) Spilled SGPRs: 37921 -> 37917 (-0.01 %) Spilled VGPRs: 32882 -> 29024 (-11.73 %) Private memory VGPRs: 0 -> 0 (0.00 %) Scratch size: 1400 -> 1200 (-14.29 %) dwords per thread Code Size: 121126000 -> 121282784 (0.13 %) bytes LDS: 1501 -> 1501 (0.00 %) blocks Max Waves: 933188 -> 933229 (0.00 %) Wait states: 0 -> 0 (0.00 %) Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* vulkan/util: meson build - add wayland client includeTobias Klausmann2019-03-171-0/+7
| | | | | | | | | | | | | | | | | | | Without this the build breaks with: In file included from ../src/vulkan/util/vk_util.h:32, from ../src/vulkan/util/vk_util.c:28: ../include/vulkan/vulkan.h:51:10: fatal error: wayland-client.h: No such file or directory #include <wayland-client.h> ^~~~~~~~~~~~~~~~~~ compilation terminated. The above misses the include directory for wayland: -I/usr/include/wayland Signed-off-by: Tobias Klausmann <[email protected]> Cc: [email protected] Reviewed-by: Eric Engestrom <[email protected]>
* nv50ir/nir: move immediates before useKarol Herbst2019-03-171-18/+41
| | | | Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: handle user clip planes for each emitted vertexKarol Herbst2019-03-171-1/+7
| | | | | | | v9: convert to C++ style comments handle for tess eval shaders as well Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement intrinsic shader_clockKarol Herbst2019-03-171-0/+8
| | | | | | v9: mark as fixed Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement load_per_vertex_outputKarol Herbst2019-03-171-0/+23
| | | | | | | | | v4: use smarter getIndirect helper use new getSlotAddress helper v5: use loadFrom helper v8: don't require C++11 features Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: add memory barriersKarol Herbst2019-03-171-0/+21
| | | | | | v5: add more barrier intrinsics Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement imagesKarol Herbst2019-03-171-10/+380
| | | | | | | | | | | | | | | | | | | | v3: fix compiler warnings v4: use loadFrom helper v5: fix signed min/max v6: set tex mask add support for indirect image access set cache mode v7: make compatible with 884d27bcf688d36c3bbe01bceca525595add3b33 rework the whole deref thing to prepare for bindless v8: port to deref instructions don't require C++11 features v9: implement MS images rebase on master (image modifiers) fix regressions due to variable src compnents replace '(*it).' with 'it->' convert to C++ style comments Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement ssbo intrinsicsKarol Herbst2019-03-171-0/+90
| | | | | | | | v4: use loadFrom helper v5: support indirect buffer access v8: don't require C++11 features Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement nir_intrinsic_load_uboKarol Herbst2019-03-171-0/+14
| | | | | | | v4: use loadFrom helper v8: don't require C++11 features Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement geometry shader nir_intrinsicsKarol Herbst2019-03-171-0/+27
| | | | | | | | | v4: use smarter getIndirect helper use new getSlotAddress helper use loadFrom helper v8: don't require C++11 features Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement variable indexingKarol Herbst2019-03-171-0/+58
| | | | | | | | | | | | | | We store those arrays in local memory and reserve some space for each of the arrays. With NIR we could store those arrays packed, but we don't do that yet as it causes MemoryOpt to generate unaligned memory accesses. v3: use fixed size vec4 arrays until we fix MemoryOpt v4: fix for 64 bit types v5: use loadFrom helper v8: don't require C++11 features v9: convert to C++ style comments Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement vote and ballotKarol Herbst2019-03-171-0/+48
| | | | | | | | | | | | | v2: add vote_eq support use the new subop intrinsic helper add ballot v3: add read_(first_)invocation v8: handle vectorized intrinsics don't require C++11 features v9: lower_subgroups to 32 bit (produces less instructions) use getSSA and getScratch instead of new_LValue Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: add skeleton getOperation for intrinsicsKarol Herbst2019-03-171-0/+22
| | | | | | | v7: don't assert in default case for getSubOp Signed-off-by: Karol Herbst <[email protected]> Reviewed-by: Pierre Moreau <[email protected]>
* nv50/ir/nir: implement nir_instr_type_texKarol Herbst2019-03-171-0/+234
| | | | | | | | | | | | | | | | | | | a lot of those fields are not valid for a lot of tex ops. Not quite sure if it's worth the effort to check for those or just keep it like that. It seems to kind of work. v2: reworked offset handling add tex support with indirect R/S arguments handle GLSL_SAMPLER_DIM_EXTERNAL drop reference in convert(glsl_sampler_dim&, bool, bool) fix tg4 component selection v5: fill up coords args with scratch values if coords provided is less than TexTarget.getArgCount() v7: prepare for bindless_texture support v8: don't require C++11 features v9: convert to C++ style comments fix txf with a uniform constant 0 lod Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement nir_ssa_undef_instrKarol Herbst2019-03-171-0/+13
| | | | | | | | v2: use mkOp v8: don't require C++11 features Signed-off-by: Karol Herbst <[email protected]> Reviewed-by: Pierre Moreau <[email protected]>
* nv50/ir/nir: implement loading system valuesKarol Herbst2019-03-171-0/+122
| | | | | | | | | | | | | v2: support more sys values fixed a bug where for multi component reads all values ended up in x v3: add load_patch_vertices_in v4: add subgroup stuff v5: add helper invocation v6: fix loading 64 bit system values v8: don't require C++11 features v9: convert to C++ style comments Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement intrinsic_discard(_if)Karol Herbst2019-03-171-0/+14
| | | | | | v9: use getSSA instead of new_LValue Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement load_(interpolated_)input/outputKarol Herbst2019-03-171-0/+135
| | | | | | | | | | | | | | | | | v3: and load_output v4: use smarter getIndirect helper use new getSlotAddress helper v5: don't use const_offset directly fix for indirects v6: add support for interpolateAt v7: fix compiler warnings add load_barycentric_sample handle load_output for fragment shaders v8: set info->prop.fp.readsSampleLocations for at_sample interpolation don't require C++11 features v9: convert to C++ style comments Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement nir_intrinsic_store_(per_vertex_)outputKarol Herbst2019-03-171-1/+56
| | | | | | | | | | | | | | v3: add workaround for RA issues indirects have to be multiplied by 0x10 fix indirect access v4: use smarter getIndirect helper use storeTo helper v5: don't use const_offset directly v8: don't require C++11 features v9: convert to C++ style comments handle clip planes correctly Signed-off-by: Karol Herbst <[email protected]>
* nv50/ir/nir: implement nir_intrinsic_load_uniformKarol Herbst2019-03-171-0/+10
| | | | | | | | | | | v2: use new getIndirect helper fixes symbols for 64 bit types v4: use smarter getIndirect helper simplify address calculation use loadFrom helper v8: don't require C++11 features Signed-off-by: Karol Herbst <[email protected]>