Commit graph

798 commits

Author SHA1 Message Date
Chad Versace
1e98177439 anv/pass: Move VkRenderPass code to new file
Move it from anv_device.c to new file anv_pass.c. Because it will soon
grow bigger.
2015-10-29 11:10:03 -07:00
Chad Versace
c284c39b13 anv: Fix parsing of load ops in VkAttachmentDescription
My original understanding of VkAttachmentDescription::loadOp,
stencilLoadOp was incorrect. Below are all possible combinations:

  VkFormat       | loadOp=clear   stencilLoadOp=clear
  ---------------+---------------------------
  color          | clear-color    ignored
  depth-only     | clear-depth    ignored
  stencil-only   | ignored        clear-stencil
  depth-stencil  | clear-depth    clear-stencil
2015-10-29 10:59:55 -07:00
Jason Ekstrand
a6be53223e anv/nir: Work with the new vulkan_resource_index intrinsic 2015-10-27 13:42:51 -07:00
Jason Ekstrand
37b6afb3d9 Add a todo comment about intput_slots_valid in the FS shader key 2015-10-26 16:25:02 -07:00
Jason Ekstrand
ab6ed2e1ac anv/gen8_pipeline: Emit a real 3DSTATE_SBE_SWIZ packet 2015-10-26 16:25:02 -07:00
Jason Ekstrand
9006e555ce anv/pipeline: Bump the size of the pipeline batch to accomodate GS
The 1k batch size wasn't big enough for a full pipeline setup including
geometry shaders.  Some day we should make it dynamic.
2015-10-23 16:50:31 -07:00
Jason Ekstrand
4c59ee808f anv/gen8_pipeline: Various 3DSTATE_GS fixes 2015-10-23 16:49:26 -07:00
Jason Ekstrand
8aba8cf513 anv/pipeline: Use separate-shader 2015-10-23 10:53:00 -07:00
Jason Ekstrand
760c4b894d anv/pipeline: Pull separate_shader from NIR for vue map setup 2015-10-23 10:48:52 -07:00
Jason Ekstrand
82c579e314 anv/gen8: Set the correct maximum number of GS threads
This equation was pulled from mesa gen8_gs_state.c
2015-10-21 21:51:18 -07:00
Jason Ekstrand
d0e8c78407 anv/pipeline: set the gs_vertex_count in compile_gs
This was missed in the initial enabling commit.
2015-10-21 21:50:47 -07:00
Jason Ekstrand
8af2a09956 anv/pipeline: Make the has_push_constants computation more accurate
The computation used to only look for uniforms that weren't samplers.  Now
it also filters out arrays of samplers.
2015-10-21 21:50:16 -07:00
Jason Ekstrand
d538fe849d anv/pipeline: Add back basic geometry shader support
Now that we've done the refactoring upstream, it's much easier to to get
hooked up.  We haven't tested things well enough to know that we're setting
up the GPU state correctly for them yet but at least we can compile them now.
2015-10-21 18:45:48 -07:00
Chad Versace
0ab926dfbf anv: Don't teardown uninitialized anv_physical_device
If the user called vkDestroyDevice but never called
vkEnumeratePhysicalDevices, then the driver tried to ralloc_free() an
unitialized anv_physical_device.

Fixes test 'dEQP-VK.api.device_init.create_instance_name_version'.
2015-10-21 11:55:37 -07:00
Jason Ekstrand
c8572d0f9c anv/pipeline: Remove a redundant line
We set compute_sample_id based on multisample state two lines below.
2015-10-20 16:02:03 -07:00
Jason Ekstrand
72d99f8a40 anv/pipeline: Update a comment 2015-10-20 16:00:55 -07:00
Jason Ekstrand
27d868500a anv/pipeline: Set key->render_to_fbo to false for fragment shaaders
Vulkan uses the upper-left convention.  This is the same as DX one and what
our hardware does.  We had it flipped around.
2015-10-20 15:37:16 -07:00
Jason Ekstrand
a71e614d33 anv: Completely rework shader compilation
Now that we have a decent interface in upstream mesa, we can get rid of all
our hacks.  As of this commit, we no longer use any fake GL state objects
and all of shader compilation is moved into anv_pipeline.c.  This should
make way for actually implementing a shader cache one of these days.

As a nice side-benifit, this commit also gains us an extra 300 passing CTS
tests because we're actually filling out the texture swizzle information
for vertex shaders.
2015-10-20 13:02:03 -07:00
Jason Ekstrand
6fb4469588 anv: Move the brw_compiler from anv_compiler to physical_device 2015-10-20 13:02:03 -07:00
Jason Ekstrand
bf6407079b i965: Split process_nir into two haves; pre- and post- 2015-10-20 13:02:03 -07:00
Jason Ekstrand
611ace6861 anv/compiler: Remove more pre-SNB shader key setup 2015-10-20 13:02:03 -07:00
Jason Ekstrand
b3a344db30 anv/compiler: Get rid of GS support.
The geometry shader support is currently completely untested.  As I go
through and re-factor the compiler, I'd rather not refactor dead code that
I don't have a way to know if I broke.  Let's just remove it for now.  We
can put it back in easily enough later and then we'll do it properly.
2015-10-20 13:02:03 -07:00
Jason Ekstrand
5f5224f256 anv/meta: Use the actual render pass for creating blit pipelines 2015-10-20 13:02:02 -07:00
Chad Versace
4d4e559b6a vk: Use consistent names for anv_cmd_state dirty bits
Prefix all anv_cmd_state dirty bit tokens with ANV_CMD_DIRTY. For
example:

    old                           -> new
    ANV_DYNAMIC_VIEWPORT_DIRTY    -> ANV_CMD_DIRTY_DYNAMIC_VIEWPORT
    ANV_CMD_BUFFER_PIPELINE_DIRTY -> ANV_CMD_DIRTY_PIPELINE

Change type of anv_cmd_state::dirty and ::compute_dirty from uint32_t to
the self-documenting type anv_cmd_dirty_mask_t.
2015-10-20 11:40:24 -07:00
Chad Versace
2484d1a01f anv/pipeline: Fix requirement for depthstencil state
The Vulkan spec allows VkGraphicsPipelineCreateInfo::pDepthStencilState
to be NULL when the pipeline's subpass contains no depthstencil
attachment (see spec quote below). anv_pipeline_init_dynamic_state()
required it unconditionally.

This path fixes anv_pipeline_init_dynamic_state() to access
pDepthStencilState only when there is a depthstencil attachment.

From the Vulkan spec (20 Oct 2015, git-aa308cb)

   pDepthStencilState [...] may only be NULL if renderPass and subpass
   specify a subpass that has no depth/stencil attachment.
2015-10-20 11:29:16 -07:00
Chad Versace
b51468b519 anv/pipeline: Validate VkGraphicsPipelineCreateInfo
The Vulkan spec (20 Oct 2015, git-aa308cb) states that some fields of
VkGraphicsPipelineCreateInfo are required under certain conditions.
Add a new function, anv_pipeline_validate_create_info() that asserts the
requirements hold.

The assertions helped me discover bugs in Crucible and anv_meta.c.
2015-10-20 10:55:54 -07:00
Chad Versace
855180b3d9 anv: Define anv_validate macro
If a block of code is annotated with anv_validate, then the block runs
only in debug builds.
2015-10-20 10:55:54 -07:00
Chad Versace
81f8b82fc8 vk/meta: Add required renderpass to pipeline
The Vulkan spec (20 Oct 2015, git-aa308cb) requires that
VkGraphicsPipelineCreateInfo::renderPass be a valid handle. To satisfy
that, define a static dummy render pass used for all meta operations.
2015-10-20 10:48:26 -07:00
Chad Versace
0d84a0d58b vk/meta: Add required multisample state to pipeline
The Vulkan spec (20 Oct 2015, git-aa308cb) requires that
VkGraphicsPipelineCreateInfo::pMultisampleState not be NULL.
2015-10-20 10:48:09 -07:00
Jason Ekstrand
60e8439237 anv/compiler: Remove irrelevant wm key setup
Most of this applies to Iron Lake and prior only.  While we're at it, we
get rid of the legacy GL shading model code.
2015-10-19 17:00:26 -07:00
Jason Ekstrand
27ca9ca4e1 anv/compiler: Get rid of legacy shader key setup
Most of the shader key setup we did was for pre-Sandybridge and the stuff
for SNB+ wasn't in the key setup.  That stuff still isn't there but at
least we've left ourselves notes for now.
2015-10-19 16:45:11 -07:00
Jason Ekstrand
661d0db077 anv/compiler: Delete legacy clipping code
This is a Vulkan driver.  We don't need legacy clipping stuff and, even if
we did, we don't plan on supporting pre-Sandybridge anyway.
2015-10-19 16:26:16 -07:00
Jason Ekstrand
fba55b711e anv/compiler: Remove unneeded wm prog data setup
As of upstream mesa changes, brw_compile_fs does this for us so there's no
need to have the code in the Vulkan driver anymore.
2015-10-19 16:17:41 -07:00
Jason Ekstrand
958fc04dc5 Merge remote-tracking branch 'mesa-public/master' into vulkan 2015-10-19 14:14:21 -07:00
Jason Ekstrand
995d9c4ac7 anv/pipeline: Remove the ViewportState finishme
We should be doing everything we need to with the viewport state
2015-10-17 10:35:29 -07:00
Jason Ekstrand
3e47e34036 anv: Add support for immutable descriptors 2015-10-17 08:17:00 -07:00
Jason Ekstrand
7010fe61c8 anv: Add facilities for dumping an image to a file
The ability to dump an arbitrary miplevel or array slice of an anv_image to
a file is very useful for debugging.  Nothing inside of the driver calls
this right now, but it's very useful to call from GDB.
2015-10-16 20:03:06 -07:00
Jason Ekstrand
368e703a01 anv/pipeline: Rework dynamic state handling
Aparently, we had the dynamic state array in the pipeline backwards.
Instead of enabling the bits in the pipeline, it disables them and marks
them as "dynamic".
2015-10-16 16:30:02 -07:00
Jason Ekstrand
2552df41a1 anv/cmd_buffer: Reset the command buffer in BeginCommandBuffer 2015-10-15 18:28:00 -07:00
Jason Ekstrand
298d031642 anv/batch_chain: Add some sanity-check asserts for relocations 2015-10-15 17:24:32 -07:00
Jason Ekstrand
3130851add anv/x11: Only advertise VK_FORMAT_B8R8G8A8_UNORM
The others don't work at the moment so we shouldn't be advertising them.
2015-10-15 16:16:17 -07:00
Jason Ekstrand
f5eec407ea anv/x11: Treat the pPlatformWindow as a xcb_window_t* instead of xcb_window_t 2015-10-15 15:38:20 -07:00
Jason Ekstrand
03952b1513 anv/device: Add support for combined image and sampler descriptors 2015-10-15 15:17:27 -07:00
Jason Ekstrand
b459b3d82c anv/device: Remove some unneeded anv_finishmes 2015-10-15 15:17:07 -07:00
Jason Ekstrand
ba20569626 anv/device: Make the CreateSemaphore stub return success 2015-10-15 14:34:07 -07:00
Jason Ekstrand
bed7d1e03c anv: Add support for BufferInfo in descriptor sets 2015-10-15 13:45:53 -07:00
Jason Ekstrand
6dc4cad994 anv/cmd_buffer: Add an alloc_surface_state helper 2015-10-15 13:45:07 -07:00
Jason Ekstrand
896c1c65d6 anv: Get rid of the descriptor_set_binding struct
We no longer need it as we have a better way to deal with dynamic offsets.
2015-10-14 19:02:29 -07:00
Jason Ekstrand
42683e3757 anv: Get rid of backend compiler hacks for descriptor sets
Now that we have anv_nir_apply_pipeline_layout, we can hand the backend
compiler intrinsics and texture instructions that use a flat buffer index
just like it wants.  There's no longer any reason for any of these hacks.
2015-10-14 18:38:33 -07:00
Jason Ekstrand
da994f4b7e anv/nir: Rewrite apply_dynamic_offsets to handle the new vk intrinsics 2015-10-14 18:38:33 -07:00