summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* anv: Do resolves at end of subpassChad Versace2016-01-284-0/+68
|
* anv/meta: Remove unneeded resolve pipelineChad Versace2016-01-282-9/+16
| | | | | Vulkan does not allow resolving a single-sample image. So remove that pipeline from anv_meta_state::resolve::pipelines.
* anv/meta_resolve: Remove redundant initialization paramsChad Versace2016-01-281-18/+10
|
* anv: Drop const on anv_framebuffer::attachmentsChad Versace2016-01-281-1/+1
| | | | | | | | 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().
* anv: Add anv_subpass::has_resolveChad Versace2016-01-282-2/+7
| | | | Indicates that the subpass has at least one resolve attachment.
* anv/meta_resolve: Save/Restore viewport and scissorChad Versace2016-01-281-2/+21
|
* anv/meta_resolve: Begin pass outside emit_resolve()Chad Versace2016-01-281-45/+48
| | | | This refactor is preparation for handling subpass resolve attachments.
* anv/image: Update usage flags for multisample imagesChad Versace2016-01-281-0/+6
| | | | | Meta resolves multisample images by binding them as textures. Therefore we must add VK_IMAGE_USAGE_SAMPLED_BIT.
* anv/device: Add a better version check.Jason Ekstrand2016-01-281-1/+4
| | | | | We now check that the requested version is precicely within the range of versions that we support.
* anv/device: Advertise 1.0.2Jason Ekstrand2016-01-271-1/+1
|
* anv/formats: Properly set FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITJason Ekstrand2016-01-271-0/+3
| | | | This was added last minute and the API bumped to 1.0.2.
* anv/device: Improve the api version check to allow 1.0.XJason Ekstrand2016-01-271-1/+1
|
* vtn: Improve accuracy of acos approximation.Francisco Jerez2016-01-271-3/+3
| | | | | | | | 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.
* An alternate arccosine implementationJason Ekstrand2016-01-271-2/+24
|
* anv/meta_resolve: Fix a bug in the meta pipeline destroy pathJason Ekstrand2016-01-271-1/+1
|
* anv/skl: Fix crash in 16x multisamplingChad Versace2016-01-271-2/+3
| | | | | We built meta clear and resolve pipelines for only up to 8x samples. There were no 16x pipelines.
* anv: Fix comment for anv_meta_state arraysChad Versace2016-01-271-2/+2
| | | | Array element i is for 2^i samples, not log2(i) samples.
* anv/push constants: Use constant buffer #2Ben Widawsky2016-01-271-2/+2
| | | | | | | | | | 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.
* anv/meta: Implement multisample clearsChad Versace2016-01-272-72/+70
|
* anv/meta: Simplify failure handling during clear initChad Versace2016-01-271-54/+32
| | | | | | | 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.
* anv/meta: Implement vkCmdResolveImageChad Versace2016-01-275-18/+813
| | | | | | | 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.
* anv/meta: Add func anv_meta_get_iview_layer()Chad Versace2016-01-272-13/+19
| | | | | | | 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.
* anv/gen8: Begin enabling pipeline multisample stateChad Versace2016-01-274-18/+137
| | | | | | | | 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
* anv/gen8: Set multisample surface stateChad Versace2016-01-271-1/+11
|
* anv/meta: Merge anv_meta_clear.h into anv_meta.hChad Versace2016-01-274-39/+3
| | | | The header was too small.
* vtn: Make tanh implementation even stupiderKenneth Graunke2016-01-271-5/+7
| | | | | | | | | | | | | | | 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.
* nir/opt_algebraic: Use a more elementary mechanism for lowering ldexpJason Ekstrand2016-01-271-62/+2
|
* gen8/state: Fix QPitch for compressed textures on BroadwellJason Ekstrand2016-01-271-1/+14
|
* anv/image: Use the entire image height for compressed meta blitsJason Ekstrand2016-01-271-1/+1
|
* anv/image: Enlarge the image level 0 extentNanley Chery2016-01-271-4/+4
| | | | | | | | | | | | | | 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.
* anv/image: Minify before dividing by block dimensionsJason Ekstrand2016-01-271-8/+8
|
* anv/meta: Don't double-call choose_buffer_formatJason Ekstrand2016-01-271-3/+2
| | | | This fixes all the renderpass tests
* anv/meta: Modify make_image_for_buffer()'s imageNanley Chery2016-01-271-7/+10
| | | | | Always use a valid buffer format and convert the extent to units of elements with respect to original image format.
* anv/image: Use custom VkBufferImageCopy for iview initializationNanley Chery2016-01-271-3/+10
| | | | | | 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.
* anv: Add offset parameter to anv_image_view_init()Nanley Chery2016-01-274-15/+17
| | | | | | 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.
* anv/meta: Calculate mip offset for compressed textureNanley Chery2016-01-271-3/+16
| | | | This value will be used in a later commit.
* anv/meta: Disambiguate slice variable valueNanley Chery2016-01-271-11/+12
| | | | | This will simplify the usage of isl_surf_get_image_intratile_offset_el().
* gen8_state: use iview extent to program RENDER_SURFACE_STATENanley Chery2016-01-271-2/+2
| | | | | | | | | | | | | | | 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.
* anv/image: Scale iview extent by backing imageNanley Chery2016-01-272-3/+22
| | | | | | | | | | | | | | 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
* anv/meta: Set depth to 0 for buffer image in CopyBufferToImage()Nanley Chery2016-01-271-2/+1
| | | | | The buffer image is a flat 2D surface. Each surface represents an array/depth layer, therefore, the Z-offset is 0 when blitting.
* anv/meta: Use the uncompressed rectangle when blittingNanley Chery2016-01-271-9/+41
| | | | | | | | | 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.
* i965: Update the surface_format table for ETC formatsNanley Chery2016-01-271-11/+11
| | | | | | | 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.
* anv/image: Update usages of isl_surf_get_image_offset_saNanley Chery2016-01-271-1/+1
|
* isl: Add logical z offset to GEN4_2D surfacesNanley Chery2016-01-271-1/+2
| | | | | | 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.
* isl/tests: Add some tests for intratile offsetsChad Versace2016-01-271-2/+94
| | | | | | 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
* isl: Add func isl_get_intratile_image_offset_el()Chad Versace2016-01-272-0/+57
|
* isl/tests: Rename t_assert_offset()Chad Versace2016-01-271-30/+30
| | | | | Rename it to t_assert_offset_el(), clarifying that the offset in units of surface elements, not samples.
* isl: Add func isl_surf_get_image_offset_el()Chad Versace2016-01-273-17/+51
| | | | This replaces function isl_surf_get_image_offset_sa()
* isl: Fix row pitch for compressed formatsChad Versace2016-01-271-1/+1
| | | | | | | | | | | 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
* isl: Add func isl_surf_get_tile_info()Chad Versace2016-01-272-0/+14
|