mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
vulkan/pipeline: Handle VIEW_INDEX_FROM_DEVICE_INDEX_BIT
The rehash we're doing here is a bit of a hack but it's a back-portable hack. We'll fix it properly in following commits. Fixes:9308e8d90d("vulkan: Add generic graphics and compute VkPipeline implementations") Reviewed-by: Ivan Briano <ivan.briano@intel.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30876> (cherry picked from commitc0191b20de)
This commit is contained in:
parent
c3cdff396e
commit
b336bc37e6
2 changed files with 14 additions and 1 deletions
|
|
@ -234,7 +234,7 @@
|
|||
"description": "vulkan/pipeline: Handle VIEW_INDEX_FROM_DEVICE_INDEX_BIT",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "9308e8d90d26fca678fe72380d899cdae77415b5",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -820,6 +820,16 @@ vk_pipeline_precompile_shader(struct vk_device *device,
|
|||
uint8_t stage_sha1[SHA1_DIGEST_LENGTH];
|
||||
vk_pipeline_hash_shader_stage(info, &rs, stage_sha1);
|
||||
|
||||
/* This bit affects shader compilation but isn't taken into account in
|
||||
* vk_pipeline_hash_shader_stage(). Re-hash the SHA1 if it's set.
|
||||
*/
|
||||
if (pipeline_flags & VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR) {
|
||||
struct mesa_sha1 ctx;
|
||||
_mesa_sha1_init(&ctx);
|
||||
_mesa_sha1_update(&ctx, stage_sha1, sizeof(stage_sha1));
|
||||
_mesa_sha1_final(&ctx, stage_sha1);
|
||||
}
|
||||
|
||||
if (cache != NULL) {
|
||||
struct vk_pipeline_cache_object *cache_obj =
|
||||
vk_pipeline_cache_lookup_object(cache, stage_sha1, sizeof(stage_sha1),
|
||||
|
|
@ -847,6 +857,9 @@ vk_pipeline_precompile_shader(struct vk_device *device,
|
|||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
if (pipeline_flags & VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR)
|
||||
NIR_PASS(_, nir, nir_lower_view_index_to_device_index);
|
||||
|
||||
if (ops->preprocess_nir != NULL)
|
||||
ops->preprocess_nir(device->physical, nir);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue