aboutsummaryrefslogtreecommitdiffstats
path: root/src/intel
Commit message (Collapse)AuthorAgeFilesLines
* intel/aubinator: Fix the kernel start pointer for 3DSTATE_HSJason Ekstrand2016-11-281-2/+2
| | | | Reviewed-by: Kristian H. Kristensen <[email protected]>
* intel/aubinator: Add a get_address helperJason Ekstrand2016-11-281-16/+31
| | | | | | | This new helper is automatically handles 32 vs. 48-bit GTT issues. It also handles 48-bit canonical addresses on Broadwell and above. Reviewed-by: Kristian H. Kristensen <[email protected]>
* intel/aubinator: Properly handle batch buffer chainingJason Ekstrand2016-11-281-1/+19
| | | | | | | | | | | | | The original aubinator that Kristian wrote had a bug in the handling of MI_BATCH_BUFFER_START that propagated into the version in upstream mesa. In particular, it ignored the "2nd level" bit which tells you whether this MI_BATCH_BUFFER_START is a subroutine call (2nd level) or a goto. Since the Vulkan driver uses batch chaining, this can lead to a very confusing interpretation of the batches. In some cases, depending on how things are laid out in the virtual GTT, you can even end up with infinite loops in batch processing. Reviewed-by: Kristian H. Kristensen <[email protected]>
* anv: Fix cache UUID generation.Kenneth Graunke2016-11-281-2/+2
| | | | | | | | | | I asked Emil to switch from 0 (success) vs. -1 (fail) to use a boolean in my review comments. The "not" went missing. Easy mistake, but the result is that nothing runs at all :) Fix whitespace while we're here too. Signed-off-by: Kenneth Graunke <[email protected]>
* anv: Update the teardown in reverse order of the anv_CreateDeviceGwan-gyeong Mun2016-11-281-9/+14
| | | | | | | | | | | This updates releasing of resource in reverse order of the anv_CreateDevice to anv_DestroyDevice. And it fixes resource leak in pthread_mutex, pthread_cond, anv_gem_context. Cc: "13.0" <[email protected]> Signed-off-by: Mun Gwan-gyeong <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: drop the return type for anv_queue_init()Gwan-gyeong Mun2016-11-281-3/+1
| | | | | | | | | anv_queue_init() always returns VK_SUCCESS, so caller does not need to check return value of anv_queue_init(). Signed-off-by: Mun Gwan-gyeong <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: Add missing error-checking to anv_block_pool_init (v2)Gwan-gyeong Mun2016-11-282-8/+23
| | | | | | | | | | | | | | | | | | | When the memfd_create() and u_vector_init() fail on anv_block_pool_init(), this patch makes to return VK_ERROR_INITIALIZATION_FAILED. All of initialization success on anv_block_pool_init(), it makes to return VK_SUCCESS. CID 1394319 v2: Fixes from Emil's review: a) Add the return type for propagating the return value to caller. b) Changed anv_block_pool_init() to return VK_ERROR_INITIALIZATION_FAILED on failure of initialization. Cc: "13.0" <[email protected]> Signed-off-by: Mun Gwan-gyeong <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: don't leak memory if anv_init_wsi() failsEmil Velikov2016-11-281-2/+4
| | | | | | | | brw_compiler_create() rzalloc-ates memory which we forgot to free. Cc: "13.0" <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: don't double-close the same fdEmil Velikov2016-11-281-2/+1
| | | | | Cc: "13.0" <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* anv: automake: don't generate anv_timestamp.hEmil Velikov2016-11-282-8/+1
| | | | | | No longer used as of last commit. Signed-off-by: Emil Velikov <[email protected]>
* anv: Use library mtime for cache UUID.Emil Velikov2016-11-281-4/+30
| | | | | | | | | | | | | | | | | Inspired by a similar commit for radv. Rather than recomputing the timestamp on each make invocation, just fetch it at runtime. Thus we no longer get the constant rebuild of anv_device.c and the follow-up libvulkan_intel.so link, when nothing has changed. I.e. using make && make install is a little bit faster. v2: Use bool return type (Ken). Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* anv: Store UUID in physical device.Emil Velikov2016-11-283-14/+15
| | | | | | | | | Port of an equivalent commit for radv. v2: Move the call just after MMAP_VERSION (Ken). Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* isl: Make isl_finishme only warn once per call-siteEmil Velikov2016-11-281-1/+7
| | | | Signed-off-by: Emil Velikov <[email protected]>
* anv: use do { } while (0) in the anv_finishme macroEmil Velikov2016-11-281-7/+8
| | | | | | | | Use the generic construct instead of the currect GCC specific one. Suggested-by: Kenneth Graunke <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* anv/pipeline: Make is_dual_src_blend_factor inlineJason Ekstrand2016-11-261-1/+1
| | | | | | It's not used on gen8+ so it causes unused function warnings. Reviewed-by: Ilia Mirkin <[email protected]>
* anv/pipeline: Make the temp blend attachment state pointer constJason Ekstrand2016-11-261-1/+3
| | | | | | This fixes a "discards const" warning since blend is const. Reviewed-by: Ilia Mirkin <[email protected]>
* anv/device: Remove a bogus finishme commentJason Ekstrand2016-11-251-1/+0
| | | | We've been properly detecting bit6 swizzling for a long time now.
* anv/state: if enabled, use anisotropic filtering also with VK_FILTER_NEARESTIago Toral Quiroga2016-11-251-1/+1
| | | | | | | | Fixes multiple Vulkan CTS tests that combine anisotropy and VK_FILTER_NEAREST in dEQP-VK.texture.filtering_anisotropy.* Reviewed-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv/gen7: only enable dual-source blending when there are dual-source factorsIlia Mirkin2016-11-231-3/+33
| | | | | | | | Apparently the hw wedges otherwise, as mentioned in i965 comments. Reported-by: Emmanuel Gil Peyrot <[email protected]> Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* i965: Fix a mistake from porting the URB allocation code to arrays.Kenneth Graunke2016-11-231-1/+1
| | | | | | | | | | | | | | | | | Commit 6d416bcd846a49414f210cd761789156c37a7b3e (i965: Use arrays in Gen7+ URB code.) introduced a regression which caused us to fail to allocate all of our URB space. - total_wants -= ds_wants; + total_wants -= additional; The new line should have been total_wants -= wants[i]. Fixes a large performance regression in TessMark. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98815 Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* anv: fix enumeration of propertiesEmil Velikov2016-11-231-6/+8
| | | | | | | | | | | | | | | | | | | Driver should enumerate only up-to min2(num_available, num_requested) properties and return VK_INCOMPLETE if the # of requested props is smaller than the ones available. Presently we assert out in such cases. Inspired by a similar fix for RADV. v2: Use MIN2 + typed_memcpy (Jason). Should fix: dEQP-VK.api.info.device.extensions Cc: "13.0" <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> (v1) Reviewed-by: Jason Ekstrand <[email protected]>
* intel/blorp: Fix rectangle size for level-not-zero resolvesTopi Pohjolainen2016-11-231-2/+2
| | | | | | | | Needed to prevent gpu hangs when mip-mapped compression gets enabled. Signed-off-by: Topi Pohjolainen <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: fix segfault in anv_BindImageMemoryDave Airlie2016-11-231-1/+1
| | | | | | | | | | | | Since bind image memory started memsetting surfaces, the device node can't be NULL, since we lookup device->info.has_llc. Not sure why it ever was NULL before. Fixes some things on my Ivybridge. Reviewed-by: Jason Ekstrand <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* anv: Enable fast clears on gen7-8Jason Ekstrand2016-11-222-13/+36
| | | | Reviewed-by: Jordan Justen <[email protected]>
* anv: Add support for fast clears on gen9Jason Ekstrand2016-11-223-29/+176
| | | | Reviewed-by: Jordan Justen <[email protected]>
* anv/blorp: Rework flushing around resolvesJason Ekstrand2016-11-221-14/+18
| | | | | | | | It turns out that the flushing required around resolves is a bit more extensive than I first thought. You actually need render cache flush and a CS stall both before *and* after the resolve. Reviewed-by: Jordan Justen <[email protected]>
* anv/cmd_buffer: Apply remaining flushes in EndCommandBufferJason Ekstrand2016-11-221-0/+2
| | | | | | | | Otherwise, some pipe flushes may just never happen. This is unlikely to cause problems depending on how the kernel schedules batches, but we shouldn't count on it. Reviewed-by: Jordan Justen <[email protected]>
* anv/blorp: Use regular blorp clears for subpass clearsJason Ekstrand2016-11-221-10/+19
| | | | | | | | At vkCmdNextSubpass time, we have the actual framebuffer so we can use regular blorp_clear for subpass clears. For fast clears, there is no attachment version, so this will make fast clears a bit easier. Reviewed-by: Jordan Justen <[email protected]>
* anv: Add a vk_to_isl_color helperJason Ekstrand2016-11-222-7/+16
| | | | Reviewed-by: Jordan Justen <[email protected]>
* anv/cmd_buffer: Make setup_attachments take a RenderPassBeginInfoJason Ekstrand2016-11-221-7/+6
| | | | Reviewed-by: Jordan Justen <[email protected]>
* anv: Set up binding tables and surface states for input attachmentsJason Ekstrand2016-11-225-6/+85
| | | | | | | | | | | | | This commit adds the last remaining bits to support input attachments in the Intel Vulkan driver. For color and depth attachments, we allocate an input attachment surface state during vkCmdBeginRenderPass like we do for the render target surface states. This is so that we can incorporate the clear color and aux information as used in rendering. For stencil, we just treat it like a regular texture because we don't there is no aux. Also, only having to worry about at most one input attachment surface for each attachment makes some of the vkCmdBeginRenderPass code simpler. Reviewed-by: Jordan Justen <[email protected]>
* anv/pipeline: Handle depth/stencil self-dependenciesJason Ekstrand2016-11-223-6/+31
| | | | Reviewed-by: Jordan Justen <[email protected]>
* anv: Use pass attachment information to insert flushesJason Ekstrand2016-11-221-0/+88
| | | | | | | | | | | | Input and resolve attachments can cause an implicit dependency in the pipeline. It's our job to insert the needed flushes. Fortunately, we can easily reuse the usage tracking that we use for CCS resolves. This fixes 159 Vulkan CTS tests on Haswell because we're now flushing in between drawing and MSAA resolves. I have no idea how they were passing before on newer hardware. Reviewed-by: Jordan Justen <[email protected]>
* anv/cmd_buffer: Fix pipeline barriers for input attachmentsJason Ekstrand2016-11-221-1/+1
| | | | | | | | We were using VK_IMAGE_ACCESS_COLOR_ATTACHMENT_READ_BIT to detect an input attachment read. We should use VK_IMAGE_ACCESS_INPUT_ATTACHMENT_READ_BIT instead. Reviewed-by: Jordan Justen <[email protected]>
* anv/pipeline: Add a input_attachment_index to the bindingsJason Ekstrand2016-11-222-0/+30
| | | | | | | This allows us to go from the binding to either the descriptor or the input attachment at will. Reviewed-by: Jordan Justen <[email protected]>
* anv/pass: Calculate the combined image usage of attachmentsJason Ekstrand2016-11-222-1/+12
| | | | Reviewed-by: Jordan Justen <[email protected]>
* anv: Add an input attachment lowering passJason Ekstrand2016-11-224-0/+147
| | | | Reviewed-by: Jordan Justen <[email protected]>
* anv/cmd_buffer: Emit CS push constants after binding tablesJason Ekstrand2016-11-221-8/+8
| | | | | Emitting binding tables can cause push constants to be dirtied if the shader uses images so we need to handle push constants later.
* anv/cmd_buffer: Add an assert on emit_binding_table failureJason Ekstrand2016-11-221-0/+1
| | | | | | | The != VK_SUCCESS case is really only capable of handling the one error. This assert makes things a bit safer if something else goes wrong. Suggested-by: Lionel Landwerlin <[email protected]>
* anv/cmd_buffer: Emit a CS stall before setting a CS pipelineJason Ekstrand2016-11-221-1/+13
| | | | | | Reviewed-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Cc: "13.0" <[email protected]>
* anv/cmd_buffer: Re-emit MEDIA_CURBE_LOAD when CS push constants are dirtyJason Ekstrand2016-11-221-10/+13
| | | | | | | | | | This can happen even if the binding table isn't changed. For instance, you could have dynamic offsets with your descriptor set. This fixes the new stress.lots-of-surface-state.cs.dynamic cricible test. Reviewed-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Cc: "13.0" <[email protected]>
* anv/cmd_buffer: Handle running out of binding tables in compute shadersJason Ekstrand2016-11-221-5/+15
| | | | | | | | | | | If we try to allocate a binding table and fail, we have to get a new binding table block, re-emit STATE_BASE_ADDRESS, and then try again. We already handle this correctly for 3D and blorp but it never got handled for CS. This fixes the new stress.lots-of-surface-state.cs.static crucible test. Reviewed-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Cc: "13.0" <[email protected]>
* intel/common: Add an is_kabylake field to gen_device_infoJason Ekstrand2016-11-222-0/+6
| | | | | | | | Most of the 3-D engine Kaby Lake is identical to Sky Lake. However, there are a few small differences that we need to be able to detect. Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* anv: Fix unintentional integer overflow in anv_CreateDmaBufImageINTELGwan-gyeong Mun2016-11-221-1/+1
| | | | | | | | | | | | | | | Since both pCreateInfo->strideInBytes and pCreateInfo->extent.height are of uint32_t type 32-bit arithmetic will be used. Fix unintentional integer overflow by casting to uint64_t before multifying. CID 1394321 Cc: "13.0" <[email protected]> Signed-off-by: Mun Gwan-gyeong <[email protected]> [Emil Velikov: cast only of the arguments] Reviewed-by: Emil Velikov <[email protected]>
* anv: Enable clip and cull distance support.Kenneth Graunke2016-11-222-6/+5
| | | | | | | Everything is now in place, and we appear to pass the tests on Gen7+. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: Set clip/cull distances fields in packets.Kenneth Graunke2016-11-221-6/+26
| | | | | Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: Combine ClipDistance and CullDistance arrays.Kenneth Graunke2016-11-221-0/+3
| | | | | Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* intel: aubinator: Fix resource leak in gen_spec_load_from_pathGwan-gyeong Mun2016-11-211-0/+1
| | | | | | | | | | This fixes resource leak in gen_spec_load_from_path XML_ParserCreate failure path CID 1373564 Signed-off-by: Mun Gwan-gyeong <[email protected]> Reviewed-by: Lionel Landwerlin <[email protected]>
* anv/state: enable coordinate address rounding for Min/Mag filtersIago Toral Quiroga2016-11-211-6/+11
| | | | | | | | | | | | | | This patch improves pass rate of dEQP-VK.texture.explicit_lod.2d.sizes.* from 68.0% (98/144) to 83.3% (120/144) by enabling sampler address rounding mode when the selected filter is not nearest, which is the same thing we do for OpenGL. These tests check texture filtering for various texture sizes and mipmap levels. The failures (without this patch) affect cases where the target texture has odd dimensions (like 57x35) and either the Min or the Mag filter is not nearest. Reviewed-by: Jason Ekstrand <[email protected]>
* anv: Implement a depth stall restriction on gen7Jason Ekstrand2016-11-203-0/+35
| | | | | | | Fixes around 60 Vulkan CTS tests on Haswell Reviewed-by: Jordan Justen <[email protected]> Cc: "13.0" <[email protected]>