mesa.git
9 years agovk/gen7: Enable L3 caching for GEN7 MOCS
Kristian Høgsberg Kristensen [Tue, 25 Aug 2015 22:55:56 +0000 (15:55 -0700)]
vk/gen7: Enable L3 caching for GEN7 MOCS

Do what GL does here.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk/gen7: Use TILEWALK_XMAJOR for linear surfaces
Kristian Høgsberg Kristensen [Tue, 25 Aug 2015 17:48:43 +0000 (10:48 -0700)]
vk/gen7: Use TILEWALK_XMAJOR for linear surfaces

You wouldn't think the TileWalk mode matters when TiledSurface is
false. However, it has to be TILEWALK_XMAJOR. Make it so.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Add gen7 support
Kristian Høgsberg Kristensen [Fri, 21 Aug 2015 05:59:19 +0000 (22:59 -0700)]
vk: Add gen7 support

With all the previous commits in place, we can now drop in support for
multiple platforms. First up is gen7 (Ivybridge).

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move 3DSTATE_SBE setup to just before 3DSTATE_PS
Kristian Høgsberg Kristensen [Fri, 21 Aug 2015 05:55:08 +0000 (22:55 -0700)]
vk: Move 3DSTATE_SBE setup to just before 3DSTATE_PS

This is a more logical place for it, between geometry front end state
and pixel backend state.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move generic pipeline init to anv_pipeline.c
Kristian Høgsberg Kristensen [Fri, 21 Aug 2015 05:53:54 +0000 (22:53 -0700)]
vk: Move generic pipeline init to anv_pipeline.c

This logic will be shared between multiple gens.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move gen8 specific state into gen8 sub-structs
Kristian Høgsberg Kristensen [Fri, 21 Aug 2015 05:41:22 +0000 (22:41 -0700)]
vk: Move gen8 specific state into gen8 sub-structs

This commit moves all occurances of gen8 specific state into a gen8
substruct. This clearly identifies the state as gen8 specific and
prepares for adding gen7 state structs. In the process we also rename
the field names to exactly match the command or state packet name,
without the 3DSTATE prefix, eg:

  3DSTATE_VF -> gen8.vf
  3DSTATE_WM_DEPTH_STENCIL -> gen8.wm_depth_stencil

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Always use a placeholder vertex shader in meta
Kristian Høgsberg Kristensen [Fri, 21 Aug 2015 05:32:28 +0000 (22:32 -0700)]
vk: Always use a placeholder vertex shader in meta

The clear pipeline didn't have a vertex shader and relied on the clear
shader being hardcoded by the compiler to accept one attribute. This
necessitated a few special cases in the 3DSTATE_VS setup. Instead,
always provide a vertex shader, even if we disable VS dispatch.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Trim out irrelevant 0-initialized surface state fields
Kristian Høgsberg Kristensen [Fri, 21 Aug 2015 05:24:13 +0000 (22:24 -0700)]
vk: Trim out irrelevant 0-initialized surface state fields

Many of of these fields aren't used for buffer surfaces, so leave them
out for brevity.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Update generated headers
Kristian Høgsberg Kristensen [Fri, 21 Aug 2015 05:12:55 +0000 (22:12 -0700)]
vk: Update generated headers

This adds VALIGN_2 and VALIGN_4 defines for IVB and HSW
RENDER_SURFACE_STATE.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move anv_color_attachment_view_init() to gen8_state.c
Kristian Høgsberg Kristensen [Thu, 20 Aug 2015 05:19:21 +0000 (22:19 -0700)]
vk: Move anv_color_attachment_view_init() to gen8_state.c

I'd prefer to move anv_CreateAttachmentView() as well, but it's a little
too much generic code to just duplicate for each gen.  For now, we'll
add a anv_color_attachment_view_init() to dispatch to the gen specific
implementation, which we then call from anv_CreateAttachmentView().

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move anv_CreateImageView to gen8_state.c
Kristian Høgsberg Kristensen [Thu, 20 Aug 2015 04:36:57 +0000 (21:36 -0700)]
vk: Move anv_CreateImageView to gen8_state.c

We'll probably want to move some code back into a shared init function,
but this gets one GEN8 surface state initialization out of anv_image.c.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Make anv_cmd_buffer_begin_subpass() switch on gen
Kristian Høgsberg Kristensen [Thu, 20 Aug 2015 04:30:08 +0000 (21:30 -0700)]
vk: Make anv_cmd_buffer_begin_subpass() switch on gen

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Add generic wrapper for filling out buffer surface state
Kristian Høgsberg Kristensen [Wed, 19 Aug 2015 23:01:33 +0000 (16:01 -0700)]
vk: Add generic wrapper for filling out buffer surface state

We need this for generating surface state on the fly for dynamic buffer
views.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Add helper for adding surface state reloc
Kristian Høgsberg Kristensen [Wed, 19 Aug 2015 21:56:12 +0000 (14:56 -0700)]
vk: Add helper for adding surface state reloc

We're going to have to do this differently for earlier gens, so lets do
it in place only.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Make batch chain code gen-agnostic
Kristian Høgsberg Kristensen [Wed, 19 Aug 2015 21:33:22 +0000 (14:33 -0700)]
vk: Make batch chain code gen-agnostic

Since the extra dword in MI_BATCH_BUFFER_START added in gen8 is at the
end of the struct, we can emit the gen8 packet on all gens as long as we
set the instruction length correctly.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move vkCmdPipelineBarrier to gen8_cmd_buffer.c
Kristian Høgsberg Kristensen [Wed, 19 Aug 2015 21:39:35 +0000 (14:39 -0700)]
vk: Move vkCmdPipelineBarrier to gen8_cmd_buffer.c

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Use helper function for emitting MI_BATCH_BUFFER_START
Kristian Høgsberg Kristensen [Wed, 19 Aug 2015 18:24:52 +0000 (11:24 -0700)]
vk: Use helper function for emitting MI_BATCH_BUFFER_START

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Use anv_batch_emit() for chaining back to primary batch
Kristian Høgsberg Kristensen [Tue, 18 Aug 2015 22:26:07 +0000 (15:26 -0700)]
vk: Use anv_batch_emit() for chaining back to primary batch

We used to use a manual GEN8_MI_BATCH_BUFFER_START_pack() call, but this
refactors the code to use anv_batch_emit();

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Downgrade state packet to gen7 where they're common
Kristian Høgsberg Kristensen [Tue, 18 Aug 2015 18:04:19 +0000 (11:04 -0700)]
vk: Downgrade state packet to gen7 where they're common

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Reorder gen8 specific code into three new files
Kristian Høgsberg Kristensen [Mon, 17 Aug 2015 23:17:07 +0000 (16:17 -0700)]
vk: Reorder gen8 specific code into three new files

We'll organize gen specific code in three files per gen: pipeline,
cmd_buffer and state, eg:

    gen8_cmd_buffer.c
    gen8_pipeline.c
    gen8_state.c

where gen8_cmd_buffer.c holds all vkCmd* entry points, gne8_pipeline.c
all gen specific code related to pipeline building and remaining state
code (sampler, surface state, dynamic state) in gen8_state.c.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move gen8_CmdBindIndexBuffer() to anv_gen8.c
Kristian Høgsberg Kristensen [Mon, 17 Aug 2015 18:36:10 +0000 (11:36 -0700)]
vk: Move gen8_CmdBindIndexBuffer() to anv_gen8.c

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move gen8_cmd_buffer_emit_state_base_address() to anv_gen8.c
Kristian Høgsberg Kristensen [Fri, 14 Aug 2015 21:50:11 +0000 (14:50 -0700)]
vk: Move gen8_cmd_buffer_emit_state_base_address() to anv_gen8.c

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move gen8 specific parts of queries to anv_gen8.c
Kristian Høgsberg Kristensen [Fri, 14 Aug 2015 17:03:27 +0000 (10:03 -0700)]
vk: Move gen8 specific parts of queries to anv_gen8.c

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move dynamic depth stenctil to anv_gen8.c
Kristian Høgsberg Kristensen [Fri, 14 Aug 2015 16:31:11 +0000 (09:31 -0700)]
vk: Move dynamic depth stenctil to anv_gen8.c

9 years agovk: Move pipeline creation to anv_gen8.c
Kristian Høgsberg Kristensen [Fri, 14 Aug 2015 16:30:41 +0000 (09:30 -0700)]
vk: Move pipeline creation to anv_gen8.c

9 years agovk: Move anv_CreateSampler to anv_gen8.c
Kristian Høgsberg Kristensen [Fri, 14 Aug 2015 04:52:31 +0000 (21:52 -0700)]
vk: Move anv_CreateSampler to anv_gen8.c

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Move anv_CreateBufferView to anv_gen8.c
Kristian Høgsberg Kristensen [Fri, 14 Aug 2015 04:48:19 +0000 (21:48 -0700)]
vk: Move anv_CreateBufferView to anv_gen8.c

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Add new anv_gen8.c and move CreateDynamicRasterState there
Kristian Høgsberg Kristensen [Fri, 14 Aug 2015 04:05:47 +0000 (21:05 -0700)]
vk: Add new anv_gen8.c and move CreateDynamicRasterState there

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Implement multi-gen dispatch mechanism
Kristian Høgsberg Kristensen [Thu, 30 Jul 2015 21:44:01 +0000 (14:44 -0700)]
vk: Implement multi-gen dispatch mechanism

9 years agovk/meta: Implement depth clears
Chad Versace [Wed, 19 Aug 2015 19:17:37 +0000 (12:17 -0700)]
vk/meta: Implement depth clears

Fixes Crucible test
func.depthstencil.basic-depth.clear-1.0.op-greater.

9 years agovk: Cache each render pass's number of clear ops
Chad Versace [Thu, 20 Aug 2015 17:03:58 +0000 (10:03 -0700)]
vk: Cache each render pass's number of clear ops

During vkCreateRenderPass, count the number of clear ops and store them
in new members of anv_render_pass:

    uint32_t num_color_clear_attachments
    bool has_depth_clear_attachment
    bool has_stencil_clear_attachment

Cacheing these 8 bytes (including padding) reduces the number of times
that anv_cmd_buffer_clear_attachments needs to loop over the pass's
attachments.

9 years agovk: Use temp var in vkCreateRenderPass's attachment loop
Chad Versace [Thu, 20 Aug 2015 16:54:32 +0000 (09:54 -0700)]
vk: Use temp var in vkCreateRenderPass's attachment loop

Store the attachment in a temporary variable and
s/pass->attachments[i]/att/ .

9 years agovk: Improve memory locality of anv_render_pass
Chad Versace [Wed, 19 Aug 2015 22:10:14 +0000 (15:10 -0700)]
vk: Improve memory locality of anv_render_pass

Allocate the pass's array of attachments, anv_render_pass::attachments,
in the same allocation as the pass itself.

9 years agovk: Unharcode an argument to sizeof
Chad Versace [Wed, 19 Aug 2015 21:55:44 +0000 (14:55 -0700)]
vk: Unharcode an argument to sizeof

s/struct anv_subpass/pass->subpasses[0])/

9 years agovk/meta: Add Z coord to clear vertices
Chad Versace [Wed, 19 Aug 2015 19:28:14 +0000 (12:28 -0700)]
vk/meta: Add Z coord to clear vertices

For now, the Z coordinate is always 0.0. Will later be used for depth
clears.

9 years agovk/meta: Restore all saved state in anv_cmd_buffer_restore()
Chad Versace [Wed, 19 Aug 2015 19:07:20 +0000 (12:07 -0700)]
vk/meta: Restore all saved state in anv_cmd_buffer_restore()

anv_cmd_buffer_restore() did not restore the old
VkDynamicColorBlendState.

9 years agovk/meta: Use consistent names and types in anv_saved_state
Chad Versace [Wed, 19 Aug 2015 18:58:50 +0000 (11:58 -0700)]
vk/meta: Use consistent names and types in anv_saved_state

In struct anv_saved_state, each member's type was a pointer to an Anvil
struct and each member's name was prefixed with "old" except cb_state,
which was a Vulkan handle whose name lacked "old".

9 years agoAdd mesa.icd to the .gitignore
Neil Roberts [Mon, 10 Aug 2015 16:31:02 +0000 (17:31 +0100)]
Add mesa.icd to the .gitignore

Since 4d7e0fa8c731776 this file is generated by the configure script.
Reviewed-by: Tapani Palli <tapani.palli@intel.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
(cherry picked from commit 885762e18291eb4dc0b449297c3a78f7c036bcde)

9 years agovk/meta: Fix dest format of vkCmdCopyImage
Chad Versace [Tue, 18 Aug 2015 19:39:28 +0000 (12:39 -0700)]
vk/meta: Fix dest format of vkCmdCopyImage

The source image's format was incorrectly used for both the source view
and destination view. For vkCmdCopyImage to correctly translate formats,
the destination view's format must be that of the destination image's.

9 years agovk: Assert that swap chain format is a color format
Chad Versace [Mon, 17 Aug 2015 22:02:38 +0000 (15:02 -0700)]
vk: Assert that swap chain format is a color format

9 years agovk/image: Don't set anv_surface_view::offset twice
Chad Versace [Tue, 18 Aug 2015 18:30:38 +0000 (11:30 -0700)]
vk/image: Don't set anv_surface_view::offset twice

It was set twice a few lines apart, and the second setting always
overrode the first.

9 years agovk/meta: Use anv_format_is_color()
Chad Versace [Tue, 18 Aug 2015 18:09:40 +0000 (11:09 -0700)]
vk/meta: Use anv_format_is_color()

That is, replace !anv_format_is_depth_or_stencil() with
anv_format_is_color(). That conveys the meaning better.

9 years agovk: Add anv_format_is_color()
Chad Versace [Tue, 18 Aug 2015 18:08:39 +0000 (11:08 -0700)]
vk: Add anv_format_is_color()

9 years agovk: Add anv_format reference to anv_render_pass_attachment
Chad Versace [Mon, 17 Aug 2015 21:03:52 +0000 (14:03 -0700)]
vk: Add anv_format reference to anv_render_pass_attachment

Change type of anv_render_pass_attachment::format from VkFormat to const
struct anv_format*.  This elimiates the repetitive lookups into the
VkFormat -> anv_format table when looping over attachments during
anv_cmd_buffer_clear_attachments().

9 years agovk/image: Simplify stencil case for anv_image_create()
Chad Versace [Mon, 17 Aug 2015 20:50:43 +0000 (13:50 -0700)]
vk/image: Simplify stencil case for anv_image_create()

Stop creating a temporary VkImageCreateInfo with overriden
format=VK_FORMAT_S8_UINT. Instead, just pass the format override
directly to anv_image_make_surface().

9 years agovk/formats: Add global pointer to anv_format for S8_UINT
Chad Versace [Mon, 17 Aug 2015 20:49:35 +0000 (13:49 -0700)]
vk/formats: Add global pointer to anv_format for S8_UINT

Stencil formats are often a special case. To reduce the number of lookups
into the VkFormat-to-anv_format translation table when working with
stencil, expose the table's entry for VK_FORMAT_S8_UINT as global
variable anv_format_s8_uint.

9 years agovk: Add anv_format reference t anv_surface_view
Chad Versace [Mon, 17 Aug 2015 20:26:28 +0000 (13:26 -0700)]
vk: Add anv_format reference t anv_surface_view

Change type of anv_surface_view::format from VkFormat to const struct
anv_format*. This reduces the number of lookups in the VkFormat ->
anv_format table.

9 years agovk: Pass anv_format to anv_fill_buffer_surface_state()
Chad Versace [Mon, 17 Aug 2015 20:20:33 +0000 (13:20 -0700)]
vk: Pass anv_format to anv_fill_buffer_surface_state()

This moves the translation of VkFormat to anv_format from
anv_fill_buffer_surface_state() to its caller.

A prep commit to reduce more VkFormat -> anv_format translations.

9 years agovk: Add anv_format reference to anv_image
Chad Versace [Mon, 17 Aug 2015 20:10:40 +0000 (13:10 -0700)]
vk: Add anv_format reference to anv_image

Change type of anv_image::format from VkFormat to const struct
anv_format*. This reduces the number of lookups in the VkFormat ->
anv_format table.

9 years agovk: Store the original VkFormat in anv_format
Chad Versace [Mon, 17 Aug 2015 19:52:09 +0000 (12:52 -0700)]
vk: Store the original VkFormat in anv_format

Store the original VkFormat as anv_format::vk_format. This will be used
to reduce format indirection, such as lookups into the VkFormat ->
anv_format translation table.

9 years agovk: Update .gitignore for the autogenerated spirv changes
Jason Ekstrand [Mon, 17 Aug 2015 18:47:20 +0000 (11:47 -0700)]
vk: Update .gitignore for the autogenerated spirv changes

9 years agovk: Drop aub dumper and PCI ID override feature
Kristian Høgsberg Kristensen [Fri, 14 Aug 2015 16:39:01 +0000 (09:39 -0700)]
vk: Drop aub dumper and PCI ID override feature

These are now available in intel_aubdump from intel-gpu-tools.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Use anv_image_create() for creating dmabuf VkImage
Kristian Høgsberg Kristensen [Fri, 14 Aug 2015 17:02:19 +0000 (10:02 -0700)]
vk: Use anv_image_create() for creating dmabuf VkImage

We need to make sure we use the VkImage infrastructure for creating
dmabuf images.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
9 years agovk: Add an _autogen suffix autogenerated spirv file names
Jason Ekstrand [Mon, 17 Aug 2015 18:40:13 +0000 (11:40 -0700)]
vk: Add an _autogen suffix autogenerated spirv file names

This prevents make from stomping on nir_spirv.h

9 years agoMerge remote-tracking branch 'mesa-public/master' into vulkan
Jason Ekstrand [Sat, 15 Aug 2015 00:25:04 +0000 (17:25 -0700)]
Merge remote-tracking branch 'mesa-public/master' into vulkan

9 years agovk: Add four unit tests for our lock-free data-structures
Jason Ekstrand [Fri, 14 Aug 2015 22:24:01 +0000 (15:24 -0700)]
vk: Add four unit tests for our lock-free data-structures

9 years agovk: Build a version of the driver for linking into unit tests
Jason Ekstrand [Fri, 14 Aug 2015 22:22:57 +0000 (15:22 -0700)]
vk: Build a version of the driver for linking into unit tests

9 years agonvc0: disable tessellation on maxwell
Ilia Mirkin [Fri, 14 Aug 2015 19:58:28 +0000 (15:58 -0400)]
nvc0: disable tessellation on maxwell

The address calculations are all different (e.g. see GP), there appear
to be sync's in programs, and probably a bunch of other differences.
Just disable it for now.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agonir: Add support for CSE on textures.
Eric Anholt [Sat, 7 Feb 2015 00:24:36 +0000 (16:24 -0800)]
nir: Add support for CSE on textures.

NIR instruction count results on i965:
total instructions in shared programs: 1261954 -> 1261937 (-0.00%)
instructions in affected programs:     455 -> 438 (-3.74%)

One in yofrankie, two in tropics.  Apparently i965 had also optimized all
of these out anyway.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agonir: Zero out texture instructions when creating them.
Eric Anholt [Wed, 12 Aug 2015 00:10:35 +0000 (17:10 -0700)]
nir: Zero out texture instructions when creating them.

There are so many flags in textures, that the CSE pass would have a hard
time referencing the correct set when figuring out if two texture ops are
the same.  By zeroing, we can avoid that fragility.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agovc4: Move all of our fixed function fragment color handling to NIR.
Eric Anholt [Tue, 14 Apr 2015 04:36:24 +0000 (21:36 -0700)]
vc4: Move all of our fixed function fragment color handling to NIR.

This massively reduces our dependency on VC4-specific optimization passes.

shader-db:
total uniforms in shared programs: 32077 -> 32067 (-0.03%)
uniforms in affected programs:     149 -> 139 (-6.71%)
total instructions in shared programs: 98208 -> 98182 (-0.03%)
instructions in affected programs:     2154 -> 2128 (-1.21%)

9 years agovc4: Add a helper for making driver-specific NIR load_uniform for GL state
Eric Anholt [Fri, 31 Jul 2015 16:02:01 +0000 (09:02 -0700)]
vc4: Add a helper for making driver-specific NIR load_uniform for GL state

In order to move more of our lowering into NIR, we need the ability to
reference various pipeline state (like texture rectangle scaling factors
or blend colors), so we just set those up as a load_uniform with a big
offset to indicate that it's not within the shader's uniform storage and
is one of our state values.

9 years agonir: Don't try to scalarize unpack ops.
Eric Anholt [Fri, 31 Jul 2015 22:35:22 +0000 (15:35 -0700)]
nir: Don't try to scalarize unpack ops.

Avoids regressions in vc4 when trying to do our blending in NIR.

v2: Add the other unpack ops I meant to when writing the original commit
    message.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agonir: Add a nir_opt_undef() to handle csels with undef.
Eric Anholt [Tue, 4 Aug 2015 23:25:24 +0000 (16:25 -0700)]
nir: Add a nir_opt_undef() to handle csels with undef.

We may find a cause to do more undef optimization in the future, but for
now this fixes up things after if flattening.  vc4 was handling this
internally most of the time, but a GLB2.7 shader that did a conditional
discard and assign gl_FragColor in the else was still emitting some extra
code.

total instructions in shared programs: 100809 -> 100795 (-0.01%)
instructions in affected programs:     37 -> 23 (-37.84%)

v2: Use nir_instr_rewrite_src() to update def/use on src[0] (by Thomas
    Helland).
v3: Make sure to flag metadata dirties, and copy the swizzle and abs/neg
    over to src[0], too (by anholt).

Reviewed-by: Thomas Helland <thomashelland90@gmail.com> (v2)
Tested-by: Thomas Helland <thomashelland90@gmail.com> (v2)
9 years agogm107/ir: indirect handle goes first on maxwell also
Ilia Mirkin [Fri, 14 Aug 2015 18:10:36 +0000 (14:10 -0400)]
gm107/ir: indirect handle goes first on maxwell also

Fixes fs-simple-texture-size.shader_test

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "10.6" <mesa-stable@lists.freedesktop.org>
9 years agonv30: add depth bounds test support for hw that has it
Ilia Mirkin [Tue, 11 Aug 2015 16:19:54 +0000 (12:19 -0400)]
nv30: add depth bounds test support for hw that has it

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agonv50: add depth bounds test support
Ilia Mirkin [Tue, 11 Aug 2015 15:59:56 +0000 (11:59 -0400)]
nv50: add depth bounds test support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agonvc0: add depth bounds test support
Ilia Mirkin [Tue, 11 Aug 2015 15:46:22 +0000 (11:46 -0400)]
nvc0: add depth bounds test support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agodocs/relnotes: document amdgpu, GL 4.1 and other new features
Marek Olšák [Thu, 13 Aug 2015 21:46:13 +0000 (23:46 +0200)]
docs/relnotes: document amdgpu, GL 4.1 and other new features

9 years agoradeonsi: add all new VI PCI IDs including Fiji
Marek Olšák [Thu, 16 Apr 2015 20:59:41 +0000 (22:59 +0200)]
radeonsi: add all new VI PCI IDs including Fiji

9 years agoradeonsi: revert a wrong DB bug workaround for VI
Marek Olšák [Mon, 10 Aug 2015 14:23:53 +0000 (16:23 +0200)]
radeonsi: revert a wrong DB bug workaround for VI

The bug was misunderstood. Besides that, the bug affects a DB feature we
don't use yet.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeon/uvd: implement HEVC support
Boyuan Zhang [Wed, 8 Jul 2015 20:54:48 +0000 (16:54 -0400)]
radeon/uvd: implement HEVC support

add context buffer to fix H265 uvd decode issue.
fix H265 corruption issue caused by incorrect assigned ref_pic_list.

v2: disable interlace for HEVC
    add CZ sps flag workaround
    fix coding style

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
9 years agoradeon/vce: disable VCE dual instance for harvest part
Leo Liu [Mon, 13 Jul 2015 17:36:27 +0000 (13:36 -0400)]
radeon/vce: disable VCE dual instance for harvest part

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: implement VCE dual instance support
Leo Liu [Thu, 25 Jun 2015 14:14:14 +0000 (10:14 -0400)]
radeon/vce: implement VCE dual instance support

VCE dual instances are encoding in parallel, it needs two frames for
encoding with their own parameters in one IB. Master instance will check
the task info to find another frame, assign it to the slave instance

Signed-off-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/video: config encode stacked frame number based on HW
Leo Liu [Thu, 25 Jun 2015 16:12:12 +0000 (12:12 -0400)]
radeon/video: config encode stacked frame number based on HW

since VCE 3.0 with dual instances, we need stack frames for them.

Signed-off-by: Leo Liu <leo.liu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: make reloc offset signed
Christian König [Mon, 15 Jun 2015 18:19:48 +0000 (20:19 +0200)]
radeon/vce: make reloc offset signed

We need a negative offset for FW 50.

Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/vce: add config task and put task info into encoder v2
Leo Liu [Mon, 1 Jun 2015 17:48:24 +0000 (13:48 -0400)]
radeon/vce: add config task and put task info into encoder v2

The config task has own task ID, extract the configuration functions
into config task.

v2 (chk): calculate offset automatically

Signed-off-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/vce: fix VCE fail after rebase
Leo Liu [Mon, 15 Jun 2015 19:20:20 +0000 (15:20 -0400)]
radeon/vce: fix VCE fail after rebase

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: add dual pipe support for VI
Leo Liu [Mon, 15 Jun 2015 18:11:57 +0000 (14:11 -0400)]
radeon/vce: add dual pipe support for VI

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: add new firmware support for VI and CI
Leo Liu [Fri, 29 May 2015 17:43:00 +0000 (13:43 -0400)]
radeon/vce: add new firmware support for VI and CI

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: implement VCE two pipe support
Leo Liu [Wed, 15 Apr 2015 16:36:32 +0000 (12:36 -0400)]
radeon/vce: implement VCE two pipe support

v2: rebase by Marek

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/uvd: make 30M as minimum for MPEG4 dpb buffer size
Leo Liu [Thu, 12 Mar 2015 20:24:57 +0000 (16:24 -0400)]
radeon/uvd: make 30M as minimum for MPEG4 dpb buffer size

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/uvd: recalculate dbp buffer size
Leo Liu [Thu, 12 Mar 2015 20:13:44 +0000 (16:13 -0400)]
radeon/uvd: recalculate dbp buffer size

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/video: add 4K support for decode/encode parameters
Leo Liu [Mon, 9 Mar 2015 20:24:48 +0000 (16:24 -0400)]
radeon/video: add 4K support for decode/encode parameters

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
9 years agogallium/radeon: add h264 performance HW decoder support
Leo Liu [Mon, 15 Dec 2014 17:51:50 +0000 (12:51 -0500)]
gallium/radeon: add h264 performance HW decoder support

v2: -make tonga use new h264 performance HW decoder;
    -integrate it scaling buffer to msg_fb buffer

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agogallium/radeon: use VM for VCE
Christian König [Thu, 10 Apr 2014 15:18:32 +0000 (17:18 +0200)]
gallium/radeon: use VM for VCE

v2: (leo) add checking for driver backend
v3: (leo) change variable name from use_amdgpu to use_vm
v4: rebase by Marek

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agogallium/radeon: use VM for UVD
Christian König [Wed, 9 Apr 2014 17:41:06 +0000 (19:41 +0200)]
gallium/radeon: use VM for UVD

v2: (leo) add checking for driver backend
v3: (leo) change variable name from use_amdgpu to use_vm
v4: rebase by Marek

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeonsi: add support for FIJI (v4)
Alex Deucher [Wed, 29 Jul 2015 19:40:46 +0000 (15:40 -0400)]
radeonsi: add support for FIJI (v4)

v2: incorporate comments from Marek
v3: add missing fiji case in winsys init
    use tonga raster config (double check this)
v4: rebase on harvest patch

Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v3)
Reviewed-by: Christian König <christian.koenig@amd.com> (v3)
Reviewed-by: David Zhang <david1.zhang@amd.com> (v3)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agowinsys/amdgpu: add addrlib support for Fiji (v2)
Alex Deucher [Wed, 8 Jul 2015 02:18:13 +0000 (22:18 -0400)]
winsys/amdgpu: add addrlib support for Fiji (v2)

v2: fix tonga chip check

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: David Zhang <david1.zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeonsi: add harvest support for CI/VI parts (v3)
Alex Deucher [Thu, 9 Jul 2015 02:19:55 +0000 (22:19 -0400)]
radeonsi: add harvest support for CI/VI parts (v3)

Properly calculate the PA_SC_RASTER_CONFIG[_1] settings
for harvest chips.

v2: - fix default raster config settings for CZ and KV
    - Suggestions from Michel
v3: - handle multiple packers properly for CI+
    - GRBM_GFX_INDEX is privileged on VI+

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> (v2)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agogallium/radeon: enable the GPU load query for amdgpu
Marek Olšák [Sat, 27 Jun 2015 11:57:25 +0000 (13:57 +0200)]
gallium/radeon: enable the GPU load query for amdgpu

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeonsi: properly handler raster_config setup on CZ
Alex Deucher [Wed, 10 Jun 2015 15:43:24 +0000 (11:43 -0400)]
radeonsi: properly handler raster_config setup on CZ

Need to take into account the number of RBs.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeonsi: properly set the raster_config for KV
Alex Deucher [Wed, 10 Jun 2015 15:39:30 +0000 (11:39 -0400)]
radeonsi: properly set the raster_config for KV

This enables the second RB on asics that support it which
should boost performance.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: mesa-stable@lists.freedesktop.org
9 years agoradeonsi: add amdgpu support for querying the GPU reset state
Marek Olšák [Thu, 30 Apr 2015 15:02:38 +0000 (17:02 +0200)]
radeonsi: add amdgpu support for querying the GPU reset state

Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeonsi: add VI hardware support
Marek Olšák [Thu, 16 Apr 2015 18:44:54 +0000 (20:44 +0200)]
radeonsi: add VI hardware support

9 years agoradeonsi: add definitions for VI status registers
Marek Olšák [Sat, 11 Jul 2015 11:22:22 +0000 (13:22 +0200)]
radeonsi: add definitions for VI status registers

Useful for debugging hangs with the read-register interface.
I checked that this adds the same register fields as the kernel driver.

Acked-by: Michel Dänzer <michel.daenzer@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
9 years agoradeonsi: add VI register definitions
Marek Olšák [Thu, 16 Apr 2015 18:12:24 +0000 (20:12 +0200)]
radeonsi: add VI register definitions

9 years agoradeonsi: fix DRM version checks for amdgpu DRM 3.0.0
Marek Olšák [Thu, 16 Apr 2015 18:35:27 +0000 (20:35 +0200)]
radeonsi: fix DRM version checks for amdgpu DRM 3.0.0

9 years agowinsys/amdgpu: add addrlib - texture addressing and alignment calculator
Marek Olšák [Thu, 16 Apr 2015 17:41:33 +0000 (19:41 +0200)]
winsys/amdgpu: add addrlib - texture addressing and alignment calculator

This is an internal project that Catalyst uses and now open source will do
too.

v2: squashed these commits in:
    - winsys/amdgpu: fix warnings in addrlib
    - winsys/amdgpu: set PIPE_CONFIG and NUM_BANKS in tiling_flags

9 years agowinsys/amdgpu: add a new winsys for the new kernel driver
Marek Olšák [Thu, 16 Apr 2015 20:43:23 +0000 (22:43 +0200)]
winsys/amdgpu: add a new winsys for the new kernel driver

v2: - lots of changes according to Emil Velikov's comments
    - implemented radeon_winsys::read_registers

v3: - a lot of new work, many of them adapt to libdrm interface changes
Squashed patches:
winsys/amdgpu: implement radeon_winsys context support
winsys/amdgpu: add reference counting for contexts
winsys/amdgpu: add userptr support
winsys/amdgpu: allocate IBs like normal buffers
winsys/amdgpu: add IBs to the buffer list, adapt to interface changes
winsys/amdgpu: don't use KMS handles as reloc hash keys
winsys/amdgpu: sync buffer accesses to different rings
winsys/amdgpu: use dependencies instead of waiting for last fence v2
gallium/radeon: unify buffer_wait and buffer_is_busy in the winsys interface (amdgpu part)
winsys/amdgpu: track fences per ring and be thread-safe
winsys/amdgpu: simplify waiting on a variable in amdgpu_fence_wait
gallium/radeon: allow the winsys to choose the IB size (amdgpu part)
winsys/amdgpu: switch to new amdgpu_cs_query_fence_status interface
winsys/amdgpu: handle fence and dependencies merge
winsys/amdgpu follow libdrm change to move user fence into UMD
winsys/amdgpu: use amdgpu_bo_va_op for va map/unmap v2
winsys/amdgpu: use the new tiling flags
winsys/amdgpu: switch to new GTT_USWC definition
winsys/amdgpu: expose amdgpu_cs_query_reset_state to drivers
winsys/amdgpu: fix valgrind warnings
winsys/amdgpu: don't use VRAM with APUs that don't have much of it
winsys/amdgpu: require LLVM 3.6.1 for VI because of bug fixes there
winsys/amdgpu: remove amdgpu_winsys::num_cpus
winsys/amdgpu: align BO size to page size
winsys/amdgpu: reduce BO cache timeout
winsys/amdgpu: remove useless flushing and waiting in amdgpu_bo_set_tiling
winsys/amdgpu: use amdgpu_device_handle as a unique device ID instead of fd
winsys/amdgpu: use safer access to amdgpu_fence_wait::signalled
winsys/amdgpu: allow maximum IB size of 4 MB
winsys/amdgpu: add ip_instance into amdgpu_fence
gallium/radeon: add RING_COMPUTE instead of RADEON_FLUSH_COMPUTE
winsys/amdgpu: set the ring type at CS initilization
winsys/amdgpu: query the GART page size from the kernel
winsys/amdgpu: correctly wait for shared buffers to become idle
winsys/amdgpu: set the amdgpu_cs_fence structure only once at fence creation
winsys/amdgpu: add a specific error message for cs_submit -> -ENOMEM
winsys/amdgpu: check num_active_ioctls before calling amdgpu_bo_wait_for_idle
winsys/amdgpu: clear user fence BO after allocating it
winsys/amdgpu: fix user fences
winsys/amdgpu: make amdgpu_winsys_create public
winsys/amdgpu: remove thread offloading
winsys/amdgpu: flatten the amdgpu_cs_context structure and simplify more

v4: require libdrm 2.4.63