Commit graph

77456 commits

Author SHA1 Message Date
Kristian Høgsberg Kristensen
83c86e09a8 Merge remote-tracking branch 'jekstrand/wip/i965-uniforms' into vulkan 2016-01-21 11:09:58 -08:00
Jordan Justen
b1a7a27d60 nir/spirv: Handle compute shared atomics
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
a7e5b683ca nir/spirv: Support workgroup (shared) variable translation
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
bc035db3c8 anv/gen8: Set SLM size in interface descriptor
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
819cb69434 anv/gen8+9: Invalidate color calc state when switching to the GPGPU pipeline
Port 044acb9256 to anv.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
19830031cb anv/gen8: Enable SLM in L3 cache control register
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
97b09a9268 anv/pipeline: Set size of shared variables in prog_data
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
86daceb7f2 i965/nir: Lower nir compute shader shared variables
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
ca55817fa1 nir: Lower shared var atomics during nir_lower_io
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
36157cd5ea nir: Add support for lowering load/stores of shared variables
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
7a9a54b5c8 nir: Add atomic operations on variables
This allows us to first generate atomic operations for shared
variables using these opcodes, and then later we can lower those to
the shared atomics intrinsics with nir_lower_io.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
10db985fa0 nir: Add compute shader shared variable storage class
Previously we were receiving shared variable accesses via a lowered
intrinsic function from glsl. This change allows us to send in
variables instead. For example, when converting from SPIR-V.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
65a5407931 nir/print: Add space after shader_storage var mode
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Jordan Justen
9f4a72c9e3 i965/fs/nir: Move shared variable load/store to nir_emit_cs_intrinsic
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-01-21 00:31:29 -08:00
Chad Versace
5ce5a7d021 anv/image: Stop including gen8_pack.h in common file 2016-01-20 15:42:17 -08:00
Chad Versace
8ab527de03 isl: Add a README
Most of the file-level comment in isl.h is moved to the README.
2016-01-20 15:24:40 -08:00
Kristian Høgsberg Kristensen
7b7a7c2bfc vk: Make maxSamplerAllocationCount more reasonable
We can't allocate 4 billion samplers. Let's go with 64k.
2016-01-20 14:36:52 -08:00
Kristian Høgsberg Kristensen
8ef002dd7a vk/tests: Add stub for anv_gem_get_bit6_swizzle() 2016-01-20 13:47:40 -08:00
Kristian Høgsberg Kristensen
420e8664cb vk/tests: Add isl include path 2016-01-20 13:47:40 -08:00
Kenneth Graunke
b76e4458f9 nir/spirv/glsl450: Use fabs not iabs in ldexp.
This was just wrong.
2016-01-20 12:18:02 -08:00
Kristian Høgsberg Kristensen
947ebd9c71 isl: Add ish.h to libsil_la_SOURCES 2016-01-20 12:03:46 -08:00
Jason Ekstrand
21b2d87408 nir/spirv/glsl450: Implement FrexpStruct 2016-01-20 11:36:41 -08:00
Jason Ekstrand
c7896d1868 spirv/nir/glsl450: Use vtn_create_ssa_value to create SSA values 2016-01-20 11:36:26 -08:00
Jason Ekstrand
e45748bade anv/device: Default to scalar GS on BDW+ 2016-01-20 11:16:44 -08:00
Jason Ekstrand
34f9a5f301 nir/spirv: Pull texture dimensionality out of the image when available 2016-01-20 11:11:30 -08:00
Jason Ekstrand
59ef7c6507 anv/meta: fix UpdateBuffer in the case where we do multiple updates 2016-01-20 07:56:48 -08:00
Jason Ekstrand
a0516cfbac anv/meta: Fix a finishme 2016-01-20 07:33:41 -08:00
Jason Ekstrand
c7203aa621 nir/spirv: Move OpPhi handling to vtn_cfg.c
Phi handling is somewhat intrinsically tied to the CFG.  Moving it here
makes it a bit easier to handle that.  In particular, we can now do SSA
repair after we've done the phi node second-pass.  This fixes 6 CTS tests.
2016-01-19 19:00:00 -08:00
Jason Ekstrand
891564adb9 nir/spirv: Handle OpLine and OpNoLine in foreach_instruction
This way we don't have to explicitly handle them everywhere.
2016-01-19 19:00:00 -08:00
Kenneth Graunke
e79f8a4926 nir: Lower ldexp to arithmetic.
This is a port of Matt's GLSL IR lowering pass to NIR.  It's required
because we translate SPIR-V directly to NIR, bypassing GLSL IR.

I haven't introduced a lower_ldexp flag, as I believe all current NIR
consumers would set the flag.  i965 wants this, vc4 doesn't implement
this feature, and st_glsl_to_tgsi currently lowers ldexp
unconditionally anyway.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
2016-01-19 18:10:30 -08:00
Kenneth Graunke
b3cc10f3b2 nir: Let nir_opt_algebraic rules contain unsigned constants > INT_MAX.
struct.pack('i', val) interprets `val` as a signed integer, and dies
if `val` > INT_MAX.  For larger constants, we need to use 'I' which
interprets it as an unsigned value.

This patch makes us use 'I' for all values >= 0, and 'i' for negative
values.  This should work in all cases.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
2016-01-19 18:10:30 -08:00
Jason Ekstrand
eb2a119da2 anv/meta: Implement UpdateBuffer 2016-01-19 16:53:35 -08:00
Jason Ekstrand
0ae1bd321e anv/meta: Implement CmdFillBuffer 2016-01-19 16:53:35 -08:00
Jason Ekstrand
46eef31311 anv/meta_clear: Call emit_clear directly in ClearImage
Using the load op means that we end up with recursive meta.  We shouldn't
be doing that.
2016-01-19 16:53:35 -08:00
Jason Ekstrand
6325a75011 anv/meta_clear: Do save/restore in actual entry points 2016-01-19 16:53:35 -08:00
Jason Ekstrand
56dbf13045 anv: Add support for VK_WHOLE_SIZE several places 2016-01-19 16:53:35 -08:00
Kenneth Graunke
549be68258 nir/spirv/glsl450: Implement Frexp. 2016-01-19 16:46:03 -08:00
Kenneth Graunke
68c9ca1a94 nir/spirv/glsl450: Blindly implement Atan2.
This is untested and probably broken.

We already passed the atan2 CTS tests before implementing this opcode.
Presumably, glslang or something was giving us a plain Atan opcode
instead of Atan2.  I don't know why.
2016-01-19 16:14:05 -08:00
Kenneth Graunke
2ab3efa0ad nir/spirv/glsl450: Implement Atan. 2016-01-19 16:14:05 -08:00
Kenneth Graunke
bc9d9bc2e3 nir/spirv/glsl450: Implement Asin and Acos. 2016-01-19 16:14:05 -08:00
Jason Ekstrand
5e57a87dcf anv/pipeline: Fix point size 2016-01-19 12:03:13 -08:00
Jason Ekstrand
3276610ea6 getX/state: Set LOD pre-clamp to OpenGL mode
This gets us another couple hundred sampler tests
2016-01-18 17:51:35 -08:00
Jason Ekstrand
580b2e85e4 isl/device: Add a flag for bit 6 swizzling 2016-01-18 17:21:05 -08:00
Jason Ekstrand
587842a0ca anv/gem: Add a helper for getting bit6 swizzling information 2016-01-18 17:21:05 -08:00
Jason Ekstrand
c2a6f4302e nir/spirv: Patch through image qualifiers 2016-01-18 17:21:05 -08:00
Jason Ekstrand
56c8a5f2b8 nir/spirv: Implement ImageQuerySize for storage iamges
SPIR-V only has one ImageQuerySize opcode that has to work for both
textures and storage images.  Therefore, we have to special-case that one a
bit and look at the type of the incoming image handle.
2016-01-18 17:21:05 -08:00
Jason Ekstrand
bb8cadd169 nir/spirv: Insert movs around image intrinsics
Image intrinsics always take a vec4 coordinate and always return a vec4.
This simplifies the intrinsics a but but also means that they don't
actually match the incomming SPIR-V.  In order to compensate for this, we
add swizzling movs for both source and destination to get the right number
of components.
2016-01-18 17:21:05 -08:00
Jason Ekstrand
6f956b0b22 anv/meta: Improve meta clear cleanup a bit 2016-01-18 14:07:46 -08:00
Jason Ekstrand
45d17fcf9b anv: Misc allocation scope fixes 2016-01-18 14:04:13 -08:00
Jason Ekstrand
378af64e30 anv/meta: Add a meta allocator that uses SCOPE_DEVICE
The Vulkan spec requires all allocations that happen for device creation to
happen with SCOPE_DEVICE.  Since meta calls into other things that allocate
memory, the easiest way to do this is with an allocator.
2016-01-18 14:03:24 -08:00