Kristian Høgsberg Kristensen
6139fe9a77
anv: Also cache the struct anv_pipeline_binding maps
...
This is state the we generate when compiling the shaders and we need it
for mapping resources from descriptor sets to binding table indices.
2016-03-05 13:50:07 -08:00
Kristian Høgsberg Kristensen
87967a2c85
anv: Simplify pipeline cache control flow a bit
...
No functional change, but the control flow around searching the cache
and falling back to compiling is a bit simpler.
2016-03-05 13:50:07 -08:00
Kristian Høgsberg Kristensen
2b29342fae
anv: Store prog data in pipeline cache stream
...
We have to keep it there for the cache to work, so let's not have an
extra copy in struct anv_pipeline too.
2016-03-05 13:50:07 -08:00
Kristian Høgsberg Kristensen
ab36eae5e7
anv: Remove left-over bits of sparse-descriptor code
2016-03-05 13:50:07 -08:00
Kenneth Graunke
623ce595a9
anv: Compile shader stages in pipeline order.
...
Instead of the arbitrary order modules might be specified in.
Acked-by: Jason Ekstrand <jason.ekstrand@intel.com >
2016-03-03 11:36:19 -08:00
Kenneth Graunke
89e421369c
Merge remote-tracking branch 'origin/master' into vulkan
2016-03-01 17:11:29 -08:00
Jason Ekstrand
9715724015
anv/pipeline: Follow push constant alignment restrictions on BDW+ and HSW gt3
2016-02-29 14:36:24 -08:00
Jason Ekstrand
6986ae35ad
anv/pipeline: Avoid a division by zero
2016-02-29 14:36:24 -08:00
Jason Ekstrand
51b618285d
anv/pipeline: Use dynamic checks for max push constants
...
The GEN_GEN macros aren't available in anv_pipeline since it only gets
compiled once for the whold driver.
2016-02-29 14:36:24 -08:00
Jordan Justen
ef06ddb08a
anv/pipeline: Set FS URB space to zero if the FS is unused
...
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com >
2016-02-28 10:51:38 -08:00
Jordan Justen
45d8ce07a5
anv/pipeline: Set stage URB size to zero if it is unused
...
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com >
2016-02-28 10:49:39 -08:00
Kristian Høgsberg Kristensen
25c2470b24
anv: Set max_hs_threads/max_ds_threads
2016-02-24 12:21:26 -08:00
Kenneth Graunke
3ecd357d81
anv: Allocate more push constant space.
...
Previously we allocated 4kB of push constant space for VS, GS, and PS
(for a total of 12kB) no matter what. This works, but doesn't fully
utilize the space - we have 16kB or 32kB of space.
This makes anv use the same method as brw - divide up the space evenly
among all active shader stages. This means HS and DS would get space,
if those shader stages existed.
In the future, we can probably do better by inspecting how many push
constants each shader stage uses, and weight things accordingly. But
this is strictly better than the old code, and ideally we'd justify
a fancier solution with actual performance data.
2016-02-24 11:22:05 -08:00
Kenneth Graunke
3f11517730
anv: Properly size the push constant L3 area.
...
We were assuming it was 32kB everywhere, reducing the available URB
space. It's actually 16kB on Ivybridge, Baytrail, and Haswell GT1-2.
2016-02-24 11:13:08 -08:00
Kenneth Graunke
7f9b03cc8b
anv: Emit 3DSTATE_PUSH_CONSTANT_ALLOC_* via a loop.
...
Now we're emitting HS and DS packets as well.
2016-02-24 11:13:08 -08:00
Kenneth Graunke
1024a66fc4
anv: Emit 3DSTATE_URB_* via a loop.
...
Rather than keeping separate {vs,hs,ds,gs}_start fields, we now store an
array indexed by the shader stage (MESA_SHADER_*). The 3DSTATE_URB_*
commands are also sequentially numbered. This makes it easy to just
emit them in a loop.
This simplifies the code a little, and also will make it easier to add
more credible HS and DS code later.
2016-02-24 11:13:02 -08:00
Jason Ekstrand
e0565f40ea
anv/pipeline: Use nir's num_images for allocating image_params
2016-02-18 11:44:26 -08:00
Jason Ekstrand
e881c73975
anv/pipeline: Don't leak the binding map
2016-02-18 11:09:30 -08:00
Jason Ekstrand
9851c8285f
Move the intel vulkan driver to src/intel/vulkan
2016-02-18 10:37:59 -08:00