2222
2323#include < array>
2424#include < functional>
25+ #include < sstream>
2526#include < string>
2627#include < string_view>
2728
@@ -75,25 +76,25 @@ class BufferAddressValidation {
7576 [[nodiscard]] bool HasInvalidBuffer (vvl::span<vvl::Buffer* const > buffer_list) const noexcept ;
7677 // For every vuid, build an error mentioning every buffer from buffer_list that violates it, then log this error
7778 // using details provided by the other parameters.
78- [[nodiscard]] bool LogInvalidBuffers (const CoreChecks& checker , vvl::span<vvl::Buffer* const > buffer_list,
79+ [[nodiscard]] bool LogInvalidBuffers (const CoreChecks& validator , vvl::span<vvl::Buffer* const > buffer_list,
7980 const Location& device_address_loc, const LogObjectList& objlist,
8081 VkDeviceAddress device_address) const noexcept ;
8182
82- [[nodiscard]] bool LogErrorsIfNoValidBuffer (const CoreChecks& checker , vvl::span<vvl::Buffer* const > buffer_list,
83+ [[nodiscard]] bool LogErrorsIfNoValidBuffer (const CoreChecks& validator , vvl::span<vvl::Buffer* const > buffer_list,
8384 const Location& device_address_loc, const LogObjectList& objlist,
8485 VkDeviceAddress device_address) const noexcept {
8586 bool skip = false ;
8687 if (!HasValidBuffer (buffer_list)) {
87- skip |= LogInvalidBuffers (checker , buffer_list, device_address_loc, objlist, device_address);
88+ skip |= LogInvalidBuffers (validator , buffer_list, device_address_loc, objlist, device_address);
8889 }
8990 return skip;
9091 }
91- [[nodiscard]] bool LogErrorsIfInvalidBufferFound (const CoreChecks& checker , vvl::span<vvl::Buffer* const > buffer_list,
92+ [[nodiscard]] bool LogErrorsIfInvalidBufferFound (const CoreChecks& validator , vvl::span<vvl::Buffer* const > buffer_list,
9293 const Location& device_address_loc, const LogObjectList& objlist,
9394 VkDeviceAddress device_address) const noexcept {
9495 bool skip = false ;
9596 if (HasInvalidBuffer (buffer_list)) {
96- skip |= LogInvalidBuffers (checker , buffer_list, device_address_loc, objlist, device_address);
97+ skip |= LogInvalidBuffers (validator , buffer_list, device_address_loc, objlist, device_address);
9798 }
9899 return skip;
99100 }
@@ -175,7 +176,7 @@ bool BufferAddressValidation<ChecksCount>::HasInvalidBuffer(vvl::span<vvl::Buffe
175176}
176177
177178template <size_t ChecksCount>
178- bool BufferAddressValidation<ChecksCount>::LogInvalidBuffers(const CoreChecks& checker , vvl::span<vvl::Buffer* const > buffer_list,
179+ bool BufferAddressValidation<ChecksCount>::LogInvalidBuffers(const CoreChecks& validator , vvl::span<vvl::Buffer* const > buffer_list,
179180 const Location& device_address_loc, const LogObjectList& objlist,
180181 VkDeviceAddress device_address) const noexcept {
181182 std::array<Error, ChecksCount> errors;
@@ -190,9 +191,7 @@ bool BufferAddressValidation<ChecksCount>::LogInvalidBuffers(const CoreChecks& c
190191 }();
191192 error_msg_beginning += " (" ;
192193 error_msg_beginning += address_string;
193- error_msg_beginning +=
194- " ) has no buffer(s) associated to it such that valid usage passes. "
195- " At least one buffer associated to this device address must be valid.\n " ;
194+ error_msg_beginning += " ) has no buffer(s) associated that are valid.\n " ;
196195 }
197196
198197 // For each buffer, and for each violated VUID, build an error message
@@ -223,7 +222,8 @@ bool BufferAddressValidation<ChecksCount>::LogInvalidBuffers(const CoreChecks& c
223222 error_msg += ' \n ' ;
224223 }
225224
226- error_msg += checker.FormatHandle (buffer->Handle ());
225+ error_msg += " " ; // small indent help to visualize
226+ error_msg += validator.FormatHandle (buffer->Handle ());
227227 error_msg += " : " ;
228228 error_msg += buffer_error;
229229 }
@@ -236,10 +236,19 @@ bool BufferAddressValidation<ChecksCount>::LogInvalidBuffers(const CoreChecks& c
236236 const auto & vuidAndValidation = vuidsAndValidationFunctions[i];
237237 const auto & error = errors[i];
238238 if (!error.Empty ()) {
239- skip |=
240- checker. LogError (vuidAndValidation. vuid . data (), error. objlist , device_address_loc, " %s \n " , error.error_msg .c_str ());
239+ skip |= validator. LogError (vuidAndValidation. vuid . data (), error. objlist , device_address_loc, " %s \n " ,
240+ error.error_msg .c_str ());
241241 }
242242 }
243243
244244 return skip;
245245}
246+
247+ [[maybe_unused]] static std::string PrintBufferRanges (const CoreChecks& validator, vvl::span<vvl::Buffer* const > buffers) {
248+ std::ostringstream ss;
249+ for (const auto & buffer : buffers) {
250+ ss << " " << validator.FormatHandle (buffer->Handle ()) << " : range " << string_range_hex (buffer->DeviceAddressRange ())
251+ << ' \n ' ;
252+ }
253+ return ss.str ();
254+ }
0 commit comments