-
Value-initialize all vk::GraphicsState members · 940f2accNicolas Capens authored
The vk::GraphicsState constructor does not initialize all members in all code paths. We were relying on the zero-initializing done by vk::allocate() which is used to allocate vk::GraphicsPipeline which in turn contains a GraphicsState member. We want to change vk::allocate() to no longer zero-initialize all memory, to catch more MemorySanitizer errors made by applications. Thus we must also not rely on such automatic initialization ourselves. Note that this change might also hide MemorySantizer violations committed by the application side. For example some state is only copied from VkGraphicsPipelineCreateInfo into vk::GraphicsState on construction when flags indicate they're not dynamic state. If the application forgets to makerecord commands that set the dynamic state, their value is undefined: Vulkan 1.2.178 section 6. Command Buffers: "When a command buffer begins recording, all state in that command buffer is undefined." Vulkan 1.2.178 section 10.11. Dynamic State: "If the state is specified as dynamic in the new pipeline object, then that command buffer state is not disturbed. Before any draw or dispatch call with this pipeline there must have been at least one call to each of the corresponding dynamic state setting commands since the command buffer recording was begun, or the last bound pipeline object with that state specified as static, whichever was the latter." Thus once sw::allocate() no longer also zeroes this data, we should revert the value-initialization where possible and ensure we don't touch the uninitialized data ourselves, unless as a consequence of an application bug. Bug: b/140991626 Change-Id: I060e8d8a79e93b0676669eed361fab4f86ab1b56 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/53089 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Kokoro-Result: kokoro <noreply+kokoro@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
940f2acc
×