| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
Vulkan does not allow resolving a single-sample image. So remove that
pipeline from anv_meta_state::resolve::pipelines.
|
| |
|
|
|
|
|
|
|
|
| |
The attachments should be const, but the driver's function signatures
are generally not const-friendly.
Drop the const because it conflicts with upcoming
anv_cmd_buffer_resolve_subpass().
|
|
|
|
| |
Indicates that the subpass has at least one resolve attachment.
|
| |
|
|
|
|
| |
This refactor is preparation for handling subpass resolve attachments.
|
|
|
|
|
| |
Meta resolves multisample images by binding them as textures. Therefore
we must add VK_IMAGE_USAGE_SAMPLED_BIT.
|
|
|
|
|
| |
We now check that the requested version is precicely within the range of
versions that we support.
|
| |
|
|
|
|
| |
This was added last minute and the API bumped to 1.0.2.
|
| |
|
|
|
|
|
|
|
|
| |
The adjusted polynomial coefficients come from the numerical
minimization of the L2 norm of the relative error. The old
coefficients would give a maximum relative error of about 15000 ULP in
the neighborhood around acos(x) = 0, the new ones give a relative
error bounded by less than 2000 ULP in the same neighborhood.
|
| |
|
| |
|
|
|
|
|
| |
We built meta clear and resolve pipelines for only up to 8x samples.
There were no 16x pipelines.
|
|
|
|
| |
Array element i is for 2^i samples, not log2(i) samples.
|
|
|
|
|
|
|
|
|
|
| |
SKL has a workaround which requires either some weird programming of buffer 3,
OR, just never using buffer 0. Since we don't actually use multiple constant
buffers, it's easier to just not use 0.
Only SKL requires this workaround, but there is no harm in applying it to all
platforms. The big change here is that buffer #0 is relative to dynamic state
base normally (depending upon ISTPM), where buffer 1-3 is a GPU virtual address.
|
| |
|
|
|
|
|
|
|
| |
Remove all the fine-grained cleanup in
anv_device_init_meta_clear_state(). Instead, if anything fails during
initialization, simply call anv_device_finish_meta_clear_state() and let
it clean up the partially initialized anv_meta_state::clear.
|
|
|
|
|
|
|
| |
This handles multisample color images that have a floating-point or
normalized format and have a single array layer.
This does not yet handle integer formats nor multisample array images.
|
|
|
|
|
|
|
| |
This function is just meta_blit_get_dest_view_base_array_slice(), but
moved to the shared header anv_meta.h.
Will be needed by anv_meta_resolve.c.
|
|
|
|
|
|
|
|
| |
As far as I can tell, this patch sets all pipeline multisample state
except:
- alpha to coverage
- alpha to one
- the dispatch count for per-sample dispatch
|
| |
|
|
|
|
| |
The header was too small.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The dEQP "precision" test tries to verify that the reference functions
float sinh(float a) { return ((exp(a) - exp(-a)) / 2); }
float cosh(float a) { return ((exp(a) + exp(-a)) / 2); }
float tanh(float a) { return (sinh(a) / cosh(a)); }
produce the same values as the built-ins. We simplified away the
multiplication by 0.5 in the numerator and denominator, and apparently
this causes them not to match for exactly 1 out of 13,632 values.
So, put it back in, fixing the test, but making our code generation
(and precision?) worse.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The extent previously was supposed to match the mip at a given level
under the assumption that the base address would be that of the mip
as well.
Now however, the base address only matches the offset of the
containing tile. Therefore, enlarge the extent to match that of
phys_slice0, so that we don't draw/fetch in out of bounds territory.
This solution isn't perfect because the base adress isn't always at
the first tile, therefore the assumed valid memory region by the HW
contains some number of invalid tiles on two edges.
|
| |
|
|
|
|
| |
This fixes all the renderpass tests
|
|
|
|
|
| |
Always use a valid buffer format and convert the extent to units of
elements with respect to original image format.
|
|
|
|
|
|
| |
Use a custom VkBufferImageCopy with the user-provided struct as
the base. A few fields are modified when the iview is uncompressed
and the underlying image is compressed.
|
|
|
|
|
|
| |
This is the offset of the tile that contains the mip specified by
isl_surf_get_image_intratile_offset_el(). Used to draw to/from the
specified mip.
|
|
|
|
| |
This value will be used in a later commit.
|
|
|
|
|
| |
This will simplify the usage of
isl_surf_get_image_intratile_offset_el().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When creating an uncompressed ImageView on an compressed Image, the
SurfaceFormat is updated to match the ImageView's. The surface
dimensions must also change so that the HW sees the same size image
instead of a 4x larger one.
Fixes the following error which results from running many VulkanCTS
compressed tests in one shot:
ResourceError (vk.queueSubmit(queue, 1, &submitInfo, *m_fence):
VK_ERROR_OUT_OF_DEVICE_MEMORY at
vktPipelineImageSamplingInstance.cpp:921)
Makes all compressed format tests with a height > 1 pass.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Aligns with formula's presented in Vulkan spec concerning CopyBufferToImage.
18.4 Copying Data Between Buffers and Images
This won't conflict with valid API usage, because:
1) Users are not allowed to create an uncompressed ImageView with a
compressed Image.
see: VkSpec - 11.5 Image Views - VkImageViewCreateInfo's Valid Usage box
2) If users create a differently formatted compressed ImageView with a
compressed Image, the block dimensions will still match.
see: VkSpec - 28.3.1.5 Format Compatibility Classes - Table 28.5
|
|
|
|
|
| |
The buffer image is a flat 2D surface. Each surface represents an
array/depth layer, therefore, the Z-offset is 0 when blitting.
|
|
|
|
|
|
|
|
|
| |
For an uncompressed ImageView of a compressed Image, the
dimensions and offsets are all divided by the appropriate
block dimensions.
We are not yet using an uncompressed ImageView for a
compressed Image, but will do so in a future commit.
|
|
|
|
|
|
|
| |
Enable ETC support for BDW+. In Vulkan, an array lookup on
surface_format[] is used to determine HW support for certain
formats. In contrast, Mesa dynamically populates an array
which reports this information.
|
| |
|
|
|
|
|
|
| |
3D surfaces in Skylake are stored with ISL_DIM_LAYOUT_GEN4_2D. Any
delta in the logical z offset causes an equivalent delta in the
surface's array layer.
|
|
|
|
|
|
| |
Test isl_surf_get_image_intratile_offset_el() in the tests:
test_bdw_2d_r8g8b8a8_unorm_512x512_array01_samples01_noaux_tiley0
test_bdw_2d_r8g8b8a8_unorm_1024x1024_array06_samples01_noaux_tiley0
|
| |
|
|
|
|
|
| |
Rename it to t_assert_offset_el(), clarifying that the offset in units
of surface elements, not samples.
|
|
|
|
| |
This replaces function isl_surf_get_image_offset_sa()
|
|
|
|
|
|
|
|
|
|
|
| |
When calculating row pitch, the row's width in samples must be divided
by the format's block width. The commit below accidentally removed the
division.
commit eea2d4d05987b4f8ad90a1588267f9495f1e9e99
Author: Chad Versace <[email protected]>
Date: Tue Jan 5 14:28:28 2016 -0800
Subject: isl: Don't align phys_slice0_sa.width twice
|
| |
|