Thanks! Rb On Oct 7, 2016 9:22 AM, "Lionel Landwerlin" <llandwer...@gmail.com> wrote:
> According to the spec - 9.6. Pipeline Cache : > > If pDataSize is less than the maximum size that can be retrieved by the > pipeline cache, at most pDataSize bytes will be written to pData, and > vkGetPipelineCacheData will return VK_INCOMPLETE. > > Fixes the following test from Vulkan CTS : > > dEQP-VK.pipeline.cache.pipeline_from_incomplete_get_ > data.vertex_stage_fragment_stage > dEQP-VK.pipeline.cache.pipeline_from_incomplete_get_ > data.vertex_stage_geometry_stage_fragment_stage > dEQP-VK.pipeline.cache.misc_tests.invalid_size_test > > Signed-off-by: Lionel Landwerlin <lionel.g.landwer...@intel.com> > Cc: Jason Ekstrand <ja...@jlekstrand.net> > --- > src/intel/vulkan/anv_pipeline_cache.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/intel/vulkan/anv_pipeline_cache.c b/src/intel/vulkan/anv_ > pipeline_cache.c > index 2753c46..6e3f0f2 100644 > --- a/src/intel/vulkan/anv_pipeline_cache.c > +++ b/src/intel/vulkan/anv_pipeline_cache.c > @@ -490,13 +490,16 @@ VkResult anv_GetPipelineCacheData( > p += align_u32(sizeof(*count), 8); > *count = 0; > > + VkResult result = VK_SUCCESS; > if (cache->cache) { > struct hash_entry *entry; > hash_table_foreach(cache->cache, entry) { > struct anv_shader_bin *shader = entry->data; > size_t data_size = anv_shader_bin_data_size(entry->data); > - if (p + data_size > end) > + if (p + data_size > end) { > + result = VK_INCOMPLETE; > break; > + } > > anv_shader_bin_write_data(shader, p); > p += data_size; > @@ -507,7 +510,7 @@ VkResult anv_GetPipelineCacheData( > > *pDataSize = p - pData; > > - return VK_SUCCESS; > + return result; > } > > VkResult anv_MergePipelineCaches( > -- > 2.9.3 > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev