summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* radv/ac: Fix shared memory offset calculationAlex Smith2017-03-171-1/+1
| | | | | | | | | | | The index passed to get_shared_memory_ptr is an attribute slot index, i.e. the index of a vec4 within LDS. Therefore this must be scaled by sizeof(vec4) to give the LDS byte offset. Fixes: f4e499ec791 ("radv: add initial non-conformant radv vulkan driver") Signed-off-by: Alex Smith <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> CC: <[email protected]>
* radv: Fix using more than 4 bound descriptor setsJames Legg2017-03-171-1/+3
| | | | | | | | Avoid a buffer overflow in ac_nir_to_llvm.c's create_function when using more than 4 descriptor sets. radv claims support for 8. Cc: 17.0 <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* util/build-id: check dlpi_name before strstr callTapani Pälli2017-03-171-0/+6
| | | | | | | | | | | | According to dl_iterate_phdr man page first object visited is the main program where dlpi_name is an empty string. This fixes segfault on Android when using build-id as identifier. Fixes: d4fa083e11f ("util: Add utility build-id code.") Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Plamena Manolova <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* android: fix segfault within swap_buffersTapani Pälli2017-03-171-0/+8
| | | | | | | | | | | | | | | | | | | | Function droid_swap_buffers may get called without dri2_surf->buffer set, in these cases we don't have a back buffer set either. Patch fixes segfault seen with 3DMark that uses android.opengl.GLSurfaceView for rendering it's UI. backtrace: #00 pc 00013f88 /system/lib/egl/libGLES_mesa.so (droid_swap_buffers+104) #01 pc 000117b2 /system/lib/egl/libGLES_mesa.so (dri2_swap_buffers+50) #02 pc 000058b2 /system/lib/egl/libGLES_mesa.so (eglSwapBuffers+386) #03 pc 00011329 /system/lib/libEGL.so (eglSwapBuffersWithDamageKHR+553) #04 pc 000118e7 /system/lib/libEGL.so (eglSwapBuffers+55) #05 pc 000754dc /system/lib/libandroid_runtime.so v2: do like other backends, call get_back_bo (Emil Velikov) Fixes: 2acc69d ("EGL/Android: Add EGL_EXT_buffer_age extension") Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* radv: make sure gs copy shader is retrieved from the cache with the variantTimothy Arceri2017-03-171-4/+9
| | | | | | | Apps can limit the size of the cache via VkAllocationCallbacks so we can't be sure that both are always in the cache. Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* radv: fallback to an in-memory cache when no pipline cache is providedTimothy Arceri2017-03-173-6/+13
| | | | Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* radv: always create an fallback pipeline cacheTimothy Arceri2017-03-172-0/+20
| | | | | | | This will be used as an in-memory cache when a pipeline cache is not provided by the app. Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* radv: move cache check inside insert and search functionsTimothy Arceri2017-03-172-16/+20
| | | | | | | This will allow us to use fallback in-memory and on-disk caches should the app not provide a pipeline cache. Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* st/mesa: call glthread_destroy() before _vbo_DestroyContext()Timothy Arceri2017-03-172-2/+3
| | | | | | | | | Otherwise we have a race condition between vbo calls in the glthread and the _vbo_DestroyContext() call. This fixes a bunch of piglit crashes. Reviewed-by: Marek Olšák <[email protected]>
* anv/GetQueryPoolResults: Actually implement the specJason Ekstrand2017-03-161-16/+36
| | | | | | | | | | | | | | The Vulkan spec is fairly clear about when we should and should not write query pool results. We're also supposed to return VK_NOT_READY if VK_QUERY_RESULT_PARTIAL_BIT is not set and we come across any queries which are not yet finished. This fixes rendering corruptions on The Talos Principle where geometry flickers in and out due to bogus query results being returned by the driver. These issues are most noticable on Sky Lake GT4 2hen running on "ultra" settings. Reviewed-By: Lionel Landwerlin <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100182 Cc: "17.0 13.0" <[email protected]>
* anv/query: Invalidate the correct rangeJason Ekstrand2017-03-161-2/+6
| | | | | Reviewed-By: Lionel Landwerlin <[email protected]> Cc: "17.0 13.0" <[email protected]>
* anv/query: Fix the location of timestamp availabilityJason Ekstrand2017-03-161-1/+1
| | | | | Reviewed-By: Lionel Landwerlin <[email protected]> Cc: "17.0 13.0" <[email protected]>
* genxml: Add XML version tagsJason Ekstrand2017-03-168-0/+8
| | | | | | | There's not much point to having them or not having them but this reduces some pointless diff from the version we can auto-generate Reviewed-by: Lionel Landwerlin <[email protected]>
* aubinator: Use fprintf for output.Kenneth Graunke2017-03-161-69/+73
| | | | | | | This will make it easier to choose an output file. For now, it remains stdout. Reviewed-by: Lionel Landwerlin <[email protected]>
* aubinator: Reuse decode_structure code for handling commandsKenneth Graunke2017-03-161-23/+16
| | | | | | | | | | | The code for decoding structures and commands was almost identical. The only differences are: we print dword headers for commands, and we skip the first one (with the command opcode and lengths). So, generalize decode_structure to add a starting DWord, and a flag for printing the DWord headers, and reuse it. Reviewed-by: Lionel Landwerlin <[email protected]>
* aubinator: Delete redundant NULL check.Kenneth Graunke2017-03-161-10/+3
| | | | | | | | | handle_struct_decode() is just a wrapper around decode_structure() with a NULL check. But the only caller already does that NULL check. So, just use decode_structure() directly. Reviewed-by: Lionel Landwerlin <[email protected]>
* aubinator: Fix indentation.Kenneth Graunke2017-03-161-7/+6
| | | | | | Three space, not four. Reviewed-by: Lionel Landwerlin <[email protected]>
* i965/gen8+: Do full stall when switching pipelineTopi Pohjolainen2017-03-161-1/+2
| | | | | | | | | just as earlier gens do. CC: "17.0 13.0" <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96743 Reviewed-by: Jason Ekstrand <[email protected]> Signed-off-by: Topi Pohjolainen <[email protected]>
* i965: remove uneeded asm/unistd.h includeJonathan Gray2017-03-161-1/+0
| | | | | | | Fix the build on OpenBSD by removing an uneeded include for asm/unistd.h. Signed-off-by: Jonathan Gray <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* i965: automake: remove spurious white spaceEmil Velikov2017-03-161-1/+0
| | | | | | Unintentionally introduced by yours truly with the i965 compiler move. Signed-off-by: Emil Velikov <[email protected]>
* i965: avoid using a GNU make pattern ruleJonathan Gray2017-03-161-4/+4
| | | | | | | | | % pattern rules are a GNU extension. As there is only one file here avoid patterns and globbing entirely to fix the build on non-GNU make. Signed-off-by: Jonathan Gray <[email protected]> v2 [Emil Velikov: brw_oa.py dependency] Signed-off-by: Emil Velikov <[email protected]>
* docs/releasing: document how to squash/announce queued patchesEmil Velikov2017-03-161-0/+38
| | | | | | | | | | | In the odd case where a patch needs to be fixed, squash the appropriate fix and document how. Add a note in the pre-release notes, such that devs can quickly spot it. v2: Grammar/typo fixes (Eric). Use upstream commit [SHA] as reference. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* docs/releasing: release.sh is located in xorg/util-modularEmil Velikov2017-03-161-1/+1
| | | | | | | | Correct the silly typo s/macros/modular/ and add a reference to the repository. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* docs/releasing: remove "git clean" stepEmil Velikov2017-03-161-2/+1
| | | | | | | release.sh from master, does not require the tree to be clean. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* mapi: remove Xlib/xcb include in gl_marshal.pyEmil Velikov2017-03-161-3/+1
| | | | | | | | | | | | | | | | The only use of the header is to provide the _X_INLINE macro. We already require (and provide where needed) 'inline', plus it's used in the file already. So replace the macro and drop the include. This fixes the build on platforms which lack the header - from X-less Linuxes to Androids. Fixes: 05dd4a1104e ("glapi: Generate GL API marshalling code from the XML.") Reported-by: Vinson Lee <[email protected]> Reviewed-by: Timothy Arceri <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100223 Signed-off-by: Emil Velikov <[email protected]>
* docs/specs: update Khronos registries URLsEric Engestrom2017-03-161-4/+4
| | | | | | | | The registries were migrated to git and are now hosted on GitHub. The old svn is now read-only, and will not be updated anymore. Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Plamena Manolova <[email protected]>
* anv: improve error reporting when creating pipelinesIago Toral Quiroga2017-03-162-2/+4
| | | | | | | Specifically, report 'out of memory' errors that might have happened while emitting the pipeline's batch. Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: handle errors in emit_binding_table() and emit_samplers()Iago Toral Quiroga2017-03-161-5/+17
| | | | | | | | | | | | | | These can fail to allocate device memory, however, the driver can recover from this error by allocating a new binding table block and trying again. v2: - Instead of tracking the errors in these functions and making callers reset the batch's status before attempting to allocate a new block for the binding table, simply make callers responsible for setting the error status if they fail to allocate memory during the second attempt (Jason). Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: handle errors while allocating new binding table blocksIago Toral Quiroga2017-03-162-6/+13
| | | | | | | | | | Also, we had a couple of instances in flush_descriptor_sets() were we were returning a VkResult directly upon error, but the return value of this function is not a VkResult but a uint32_t dirty mask, so simply return 0 in these cases which reduces the amount of work the driver will do after the error has been raised. Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/blorp: make anv_cmd_buffer_alloc_blorp_binding_table() return a VkResultIago Toral Quiroga2017-03-163-26/+46
| | | | | | | | | | | | Instead of asserting inside the function, and then use use that information to return early from its callers upon failure. v2: - Make sure that clear_color_attachment() and clear_depth_stencil_attachment() get the VkResult as well so they avoid executing the batch if an error happened. (Topi) Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/device: assert that commands submitted to a queue are not bogusIago Toral Quiroga2017-03-161-0/+1
| | | | | | | | Any errors that may have happened during the command buffer recording are reported by vkEndCommandBuffer() and it is the application's reponsibility to not submit broken commands to a queue. Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: skip vkCmdExecuteCommands() on broken command buffersIago Toral Quiroga2017-03-161-0/+4
| | | | | | | v2: Assert on secondary commands, applications should've called vkEndCommandBuffer() and received an error for them before (Jason) Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: skip vkCmdDispatch() on broken command buffersIago Toral Quiroga2017-03-161-0/+3
| | | | Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: skip vkCmdDraw*() on broken command buffersIago Toral Quiroga2017-03-161-0/+12
| | | | Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: handle memory allocation errors during queue submissionsIago Toral Quiroga2017-03-161-3/+6
| | | | Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: handle out of memory during vkCmdPushConstantsIago Toral Quiroga2017-03-161-3/+11
| | | | | | | Fixes: dEQP-VK.api.out_of_host_memory.cmd_push_constants Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: handle allocation errors during vkCmdBeginRenderPass()Iago Toral Quiroga2017-03-161-3/+11
| | | | | | | Fixes: dEQP-VK.api.out_of_host_memory.cmd_begin_render_pass Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: skip vkCmdEndRenderPass() for broken command buffersIago Toral Quiroga2017-03-161-0/+3
| | | | Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: skip vkCmdNextSubpass() for broken command buffersIago Toral Quiroga2017-03-161-0/+3
| | | | Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: report tracked errors in vkEndCommandBuffer()Iago Toral Quiroga2017-03-161-0/+3
| | | | Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: handle failures when growing reloc listsIago Toral Quiroga2017-03-164-22/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | Growing the reloc list happens through calling anv_reloc_list_add() or anv_reloc_list_append(). Make sure that we call these through helpers that check the result and set the batch error status if needed. v2: - Handling the crashes is not good enough, we need to keep track of the error, for that, keep track of the errors in the batch instead (Jason). - Make reloc list growth go through helpers so we can have a central place where we can do error tracking (Jason). v3: - Callers that need the offset returned by anv_reloc_list_add() can compute it themselves since it is extracted from the inputs to the function, so change the function to return a VkResult, make anv_batch_emit_reloc() also return a VkResult and let their callers do the error management (Topi) v4: - Let anv_batch_emit_reloc() return an uint64_t as it originally did, there is no real benefit in having it return a VkResult. - Do not add an is_aux parameter to add_surface_state_reloc(), instead do error checking for aux in add_image_view_relocs() separately. Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: avoid crashes when failing to allocate batchesIago Toral Quiroga2017-03-163-17/+36
| | | | | | | | | | | | | | | | | | | | | | Most of the time we use macros that handle this situation transparently, but there are some cases were we need to handle this explicitly. This patch makes sure we don't crash, notice that error handling takes place in the function that actually failed the allocation, anv_batch_emit_dwords(), which will set the status field of the batch so it can be used at a later moment to report the error to the user. v2: - Not crashing is not good enough, we need to keep track of the error (Topi, Jason). Iago: now that we track errors in the batch, this is being handled. - Added guards in a few more places that needed it (Iago) v3: - Check result of anv_batch_emitn() for NULL before calling memset() in emit_vertex_input() (Topi) Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: handle allocation failure in anv_batch_emit_dwords()Iago Toral Quiroga2017-03-161-2/+7
| | | | Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: handle allocation failure in anv_batch_emit_batch()Iago Toral Quiroga2017-03-161-2/+7
| | | | | | | | | | v2: - Call the error handler (Topi) Fixes: dEQP-VK.api.out_of_host_memory.cmd_execute_commands Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: add anv_batch_set_error() and anv_batch_has_error() helpersIago Toral Quiroga2017-03-161-0/+15
| | | | | | | | | | | | | The anv_batch_set_error() helper will track the first error that happened while recording a command buffer. The helper returns the currently tracked error to help the job of internal functions that may generate errors that need to be tracked and return a VkResult to the caller. We will use the anv_batch_has_error() helper to guard parts of the driver that are not safe to execute if an error has been generated while recording a particular command buffer. Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: add a status field to anv_batchIago Toral Quiroga2017-03-162-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | The vkCmd*() functions do not report errors, instead, any errors should be reported by the time we call vkEndCommandBuffer(). This means that we need to make the driver robust against incosistent and/or imcomplete command buffer states through the command recording process, particularly, avoid crashes due to access to memory that we failed to allocate previously. The strategy used to do this is to track the first error ocurred while recording a command buffer in the batch associated with it. We use the batch to track this information because the command buffer may not be visible to all parts of the driver that can produce errors we need to be aware of (such as allocation failures during batch emissions). Later patches will use this error information to guard parts of the driver that may not be safe to execute. v2: Move the field from the command buffer to the batch so we can track errors from batch emissions (Jason) v3: Registering errors in the command buffer's batch during anv_create_cmd_buffer() is unnecessary, since the command buffer is freed at the end of the function in that case (Topi) Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/cmd_buffer: report errors in vkBeginCommandBuffer()Iago Toral Quiroga2017-03-161-6/+9
| | | | Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: do not try to ref/unref NULL shadersIago Toral Quiroga2017-03-162-3/+6
| | | | | | | | | | | | | | | This situation can happen if we failed to allocate memory for the shader. v2: - We shouldn't see NULL shaders in anv_shader_bin_ref so we should not check for that (Jason). Make sure that callers don't attempt to call this function with a NULL shader and assert that this never happens (Iago). v3: - All callers to anv_shader_bin_unref seem to check for NULL before calling, so just assert that it is not NULL (Topi) Reviewed-by: Topi Pohjolainen <[email protected]>
* anv/blorp: return early if we failed to create the shader binaryIago Toral Quiroga2017-03-161-0/+3
| | | | Reviewed-by: Topi Pohjolainen <[email protected]>
* intel/blorp: make upload_shader() return a bool indicating success or failureIago Toral Quiroga2017-03-165-28/+44
| | | | | | For now we always return true, follow-up patches will handle fail scenarios. Reviewed-by: Topi Pohjolainen <[email protected]>