| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
vkGetPhysicalDeviceImageFormatProperties has multiple 'flags'
parameters.
|
|
|
|
|
| |
Teach vkGetPhysicalDeviceImageFormatProperties() to advertise
multisampled formats.
|
| |
|
|
|
|
| |
Gen8 requires any Y tiling, not any *standard* Y tiling.
|
| |
|
|
|
|
|
|
|
|
| |
Add assertions to:
anv_CmdBlitImage
anv_CmdCopyImage
anv_CmdCopyImageToBuffer
anv_CmdCopyBufferToImage
|
|
|
|
| |
It's set but not yet used.
|
|
|
|
| |
Use it in vkGetPhysicalDeviceProperties.
|
| |
|
|
|
|
|
|
|
|
|
| |
MinimumArrayElement carries the same meaning for BDW and SKL.
Suggested by Jason.
No regressions in dEQP-VK.pipeline.image.view_type.cube_array.*
Fixes a number of cube tests, including cube_array_base_slice
and cube_base_slice tests.
|
|
|
|
| |
Add helper anv_surface_format().
|
|
|
|
| |
shader.
|
| |
|
|
|
|
|
|
|
|
|
| |
This makes it act like the address mode is set to TEXCOORDMODE_CUBE
whenever this sampler is combined with a cube surface. This *should* be
what we need for Vulkan. Interestingly, the PRM contains a programming
note for this field that says simply, "This field must be set to
CUBECTRLMODE_PROGRAMMED". However, emprical evidence suggests that it does
what the PRM says it does and OVERRIDE is just fine.
|
|
|
|
|
| |
For Broadwell cube maps, MinimumArrayElement is in terms of 2d slices (a
multiple of 6) but Depth is in terms of whole cubes.
|
|
|
|
|
|
|
|
| |
These fields are ignored for non-cube surfaces. For cube surfaces
these fields should be enabled when using TEXCOORDMODE_CLAMP and
TEXCOORDMODE_CUBE.
TODO: Determine if these are the only two modes used in Vulkan.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Some fields of the surface state template were dependent on the
surface type, which is dependent on the usage of the image view, which
wasn't known until the bottom of the function after the template had
been constructed. This caused failures in all image load/store CTS
tests using cubemaps. Refactor the surface state calculation into a
function that is called once for each required usage.
|
|
|
|
|
|
| |
We don't want to do this in the long-run but it's needed for passing the
NoContraction tests at the moment. Eventually, we want to plumb this
through NIR properly.
|
| |
|
| |
|
|
|
|
|
| |
Bug found by unit test
test_bdw_3d_r8g8b8a8_unorm_256x256x256_levels09_tiley0.
|
|
|
|
|
|
| |
test_bdw_3d_r8g8b8a8_unorm_256x256x256_levels09_tiley0
Currently fails.
|
| |
|
|
|
|
| |
isl_device_init() acquired a new param for bit6 swizzling.
|
|
|
|
|
|
|
|
| |
Relocations are 64 bits on Gen8+. Most CTS tests that send
non-trivial work to the GPU would fail when run from a single deqp-vk
invocation because they were effectively relying on reloc presumed
offsets to be wrong so the kernel would come and apply relocations
correctly.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Before we were asuming that a deref would either be something in a block or
something that we could pass off to NIR directly. However, it is possible
that someone would choose to load/store/copy a split structure all in one
go. We need to be able to handle that.
|
|
|
|
| |
This makes dealing with single-component derefs easier
|
|
|
|
|
| |
This makes them much easier to construct because you can also just specify
a literal number and it doesn't have to be a valid SPIR-V id.
|
|
|
|
| |
This is similar to what we did for block loads/stores.
|
|
|
|
|
| |
This allows us, among other things, to do structure splitting on-the-fly to
more correctly handle input/output structs.
|
|
|
|
| |
It's 1300 lines all by itself and it will only grow.
|
|
|
|
|
|
|
| |
Previously, we were creating nir_deref's immediately. Now, instead, we
have an intermediate vtn_access_chain structure. While a little more
awkward initially, this will allow us to more easily do structure splitting
on-the-fly.
|
| |
|
|
|
|
|
| |
Jason left these stray code fragments in
22804de110b97dce1415318fd02c1003e16ef14a.
|
|
|
|
| |
This is needed for SKL as well.
|
|
|
|
|
|
|
| |
If we're continuing a render pass, make sure we don't emit the depth and
stencil buffer addresses before we set the state base addresses.
Fixes crucible func.cmd-buffer.small-secondaries
|
|
|
|
|
|
|
| |
This currently sets the base and size of all push constants to the
entire push constant block. The idea is that we'll use the base and size
to eventually optimize the amount we actually push, but for now we don't
do that.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Unfortunately, this also means that we need to use a slightly different
algorithm for assign_constant_locations. The old algorithm worked based on
the assumption that each read of a uniform value read exactly one float.
If it encountered a MOV_INDIRECT, it would immediately bail and push the
whole thing. Since we can now read ranges using MOV_INDIRECT, we need to
be able to push a series of floats without breaking them up. To do this,
we use an algorithm similar to the on in split_virtual_grfs.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit moves us to an instruction based model rather than a
register-based model for indirects. This is more accurate anyway as we
have to emit instructions to resolve the reladdr. It's also a lot simpler
because it gets rid of the recursive reladdr problem by design.
One side-effect of this is that we need a whole new algorithm in
move_uniform_array_access_to_pull_constants. This new algorithm is much
more straightforward than the old one and is fairly similar to what we're
already doing in the FS backend.
|