summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2016-11-22vc4: Disable MSAA rasterization when the job binning is single-sampled.Eric Anholt1-2/+13
Gallium core just changed to start setting MSAA enabled in the rasterizer state even with samples==1 buffers. This caused disagreements in our driver between binning and rasterization state, which the simulator threw assertion failures about. Keep the single-sampled samples==1 behavior for now.
2016-11-22vc4: Make sure we don't overflow texture input/output FIFOs when threaded.Eric Anholt1-2/+3
I dropped the first hunk of this change last minute when I decided it wasn't actually needed, and apparently failed to piglit it in simulation. The simulator threw an an assertion in gl-1.0-drawpixels-color-index, which queued up 5 coordinates (3 before a switch, two after) before loading the result.
2016-11-23radv: move pipeline barrier image transitions after src flushingDave Airlie1-8/+12
This seems like it would conform better with the spec. noticed while digging into fast clears. Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Dave Airlie <airlied@redhat.com>
2016-11-22anv: Enable fast clears on gen7-8Jason Ekstrand2-13/+36
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22anv: Add support for fast clears on gen9Jason Ekstrand3-29/+176
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22anv/blorp: Rework flushing around resolvesJason Ekstrand1-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 <jordan.l.justen@intel.com>
2016-11-22anv/cmd_buffer: Apply remaining flushes in EndCommandBufferJason Ekstrand1-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 <jordan.l.justen@intel.com>
2016-11-22anv/blorp: Use regular blorp clears for subpass clearsJason Ekstrand1-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 <jordan.l.justen@intel.com>
2016-11-22anv: Add a vk_to_isl_color helperJason Ekstrand2-7/+16
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22anv/cmd_buffer: Make setup_attachments take a RenderPassBeginInfoJason Ekstrand1-7/+6
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22anv: Set up binding tables and surface states for input attachmentsJason Ekstrand5-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 <jordan.l.justen@intel.com>
2016-11-22anv/pipeline: Handle depth/stencil self-dependenciesJason Ekstrand3-6/+31
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22anv: Use pass attachment information to insert flushesJason Ekstrand1-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 <jordan.l.justen@intel.com>
2016-11-22anv/cmd_buffer: Fix pipeline barriers for input attachmentsJason Ekstrand1-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 <jordan.l.justen@intel.com>
2016-11-22anv/pipeline: Add a input_attachment_index to the bindingsJason Ekstrand2-0/+30
This allows us to go from the binding to either the descriptor or the input attachment at will. Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22anv/pass: Calculate the combined image usage of attachmentsJason Ekstrand2-1/+12
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22anv: Add an input attachment lowering passJason Ekstrand4-0/+147
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22i965/fs: Implement load_layer_id for fragment shadersJason Ekstrand1-0/+5
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22nir: Add a layer_id system value intrinsicJason Ekstrand1-0/+1
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22spirv: Stop warning about input attachmentsJason Ekstrand1-1/+1
Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22spirv: Handle the InputAttachmentIndex decorationJason Ekstrand2-0/+5
Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22compiler: Add the rest of the subpassInput typesJason Ekstrand4-6/+23
There are actually 6 of them according to the GL_KHR_vulkan_glsl spec. Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-11-22anv/cmd_buffer: Emit CS push constants after binding tablesJason Ekstrand1-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.
2016-11-22gallium: fix more occurences of u_hash.hMarek Olšák5-5/+5
this fixes compile failures since 86514d84e0beec47c82da4888db12bf07f33cb83
2016-11-22mesa: use special checksums for unset checksums and fixed-func shadersMarek Olšák2-0/+6
for debugging Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
2016-11-22glsl: add gl_linked_shader::SourceChecksumMarek Olšák4-1/+27
for debugging v2: wrap all checksums in #ifdef DEBUG Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
2016-11-22mesa: use util_hash_crc32 instead of _mesa_str_checksumMarek Olšák3-26/+2
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
2016-11-22util: import CRC32 implementation from galliumMarek Olšák5-11/+11
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
2016-11-22anv/cmd_buffer: Add an assert on emit_binding_table failureJason Ekstrand1-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 <lionel.g.landwerlin@intel.com>
2016-11-22gbm: request correct version of the DRI2_FENCE extensionLucas Stach1-1/+1
There is no version 2 of the DRI2_FENCE extension. So only a request for version 1 has a chance to succeed. Fixes: 74b1969d717f (gbm: wire up fence extension) Cc: "13.0" <mesa-stable@lists.freedesktop.org> Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2016-11-22anv/cmd_buffer: Emit a CS stall before setting a CS pipelineJason Ekstrand1-1/+13
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Cc: "13.0" <mesa-stable@lists.freedesktop.org>
2016-11-22anv/cmd_buffer: Re-emit MEDIA_CURBE_LOAD when CS push constants are dirtyJason Ekstrand1-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 <lionel.g.landwerlin@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Cc: "13.0" <mesa-stable@lists.freedesktop.org>
2016-11-22anv/cmd_buffer: Handle running out of binding tables in compute shadersJason Ekstrand1-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 <lionel.g.landwerlin@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Cc: "13.0" <mesa-stable@lists.freedesktop.org>
2016-11-22i965/compiler: Disable trig workarounds on KBL+Jason Ekstrand2-4/+8
The precision of our trig instructions appears to have been fixed on Kaby Lake. Neither Ben nor I can find any documentation for this. However, the dEQP precision tests now pass with INTEL_PRECISE_TRIG=0 where they fail on Sky Lake. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Matt Turner <mattst88@gmail.com>
2016-11-22intel/common: Add an is_kabylake field to gen_device_infoJason Ekstrand2-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 <jason@jlekstrand.net> Reviewed-by: Matt Turner <mattst88@gmail.com>
2016-11-22anv: Fix unintentional integer overflow in anv_CreateDmaBufImageINTELGwan-gyeong Mun1-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" <mesa-stable@lists.freedesktop.org> Signed-off-by: Mun Gwan-gyeong <elongbug@gmail.com> [Emil Velikov: cast only of the arguments] Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2016-11-22util/disk_cache: close a previously opened handle in disk_cache_put (v2)Gwan-gyeong Mun1-6/+5
We're missing the close() to the matching open(). CID 1373407 v2: Fixes from Emil Velikov's review Update the teardown in reverse order of the setup/init. Cc: "13.0" <mesa-stable@lists.freedesktop.org> Signed-off-by: Mun Gwan-gyeong <elongbug@gmail.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> (v1)
2016-11-22auxiliary/vl/dri: call get_xcb_screen() only onceEmil Velikov1-2/+6
Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
2016-11-22egl/x11: store xcb_screen_t *screen instead of int screenEmil Velikov3-66/+18
Just fetch and store it once, rather than doing the xcb_setup_roots_iterator + get_xcb_screen dance five times. v2: Call xcb_disconnect() on error (Eric) Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> (v1)
2016-11-22egl/x11: factor out dri2_get_xcb_connection()Emil Velikov1-36/+27
Identical throughout dri2, dri3 and drisw. Next patch will add more common code, so rather than duplicating it factor out the function. Note: this also sets eglError on failure. Something that's quite inconsistent throughout the codebase. v2: Call xcb_disconnect() on error (Eric) Note: use xcb_disconnect() even in the xcb_connection_has_error() case as per the manual: ... memory will not be freed until xcb_disconnect... Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> (v1)
2016-11-23mesa/glsl: remove unused uses_builtin_functions fieldTimothy Arceri3-3/+0
This has been unused since 943b69cddd Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
2016-11-22i965: Use NIR-based clip/cull lowering for OpenGL as well.Kenneth Graunke2-1/+2
The old approach works fine, and this approach isn't necessarily better. But it at least has the advantage that Vulkan and GL use the same approach. I originally wrote it to gain additional testing for the new paths. shader-db statistics show 0 instruction count changes. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2016-11-22anv: Enable clip and cull distance support.Kenneth Graunke2-6/+5
Everything is now in place, and we appear to pass the tests on Gen7+. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2016-11-22i965/vec4: Handle component qualifiers on non-generic varyings.Kenneth Graunke5-73/+53
ARB_enhanced_layouts only requires component qualifier support for generic varyings, so this is all the vec4 backend knew how to handle. This patch extends the backend to handle it for all varyings, so we can use store_output intrinsics with a component set for things like clip/cull distances. We may want to use that for other VUE header fields in the future as well. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
2016-11-22i965/fs: Handle compact outputs.Kenneth Graunke1-1/+3
We need to calculate the number of vec4 slots correctly. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2016-11-22spirv: Silence unsupported capability warnings for Clip/CullDistance.Kenneth Graunke1-2/+2
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2016-11-22anv: Set clip/cull distances fields in packets.Kenneth Graunke1-6/+26
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2016-11-22anv: Combine ClipDistance and CullDistance arrays.Kenneth Graunke1-0/+3
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2016-11-22nir: add a pass to compact clip/cull distances.Kenneth Graunke3-0/+190
v2: Use nir_is_per_vertex_io() rather than is_arrays_of_arrays(). Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2016-11-22nir: Add a "compact array" flag and IO lowering code.Kenneth Graunke7-18/+67
Certain built-in arrays, such as gl_ClipDistance[], gl_CullDistance[], gl_TessLevelInner[], and gl_TessLevelOuter[] are specified as scalar arrays. Normal scalar arrays are sparse - each array element usually occupies a whole vec4 slot. However, most hardware assumes these built-in arrays are tightly packed. The new var->data.compact flag indicates that a scalar array should be tightly packed, so a float[4] array would take up a single vec4 slot, and a float[8] array would take up two slots. They are still arrays, not vec4s, however. nir_lower_io will generate intrinsics using ARB_enhanced_layouts style component qualifiers. v2: Add nir_validate code to enforce type restrictions. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>