You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Setting enabled_features.bufferDeviceAddress to true in GpuShaderInstrumentor::PreCallRecordCreateDevice
when adding missing features will modify another validator object, one associated to VkInstance, gpuav::Validator is associated to a device. enabled_features is not inherited, (and besides
would be reset in GetEnabledDeviceFeatures). So for instance, looking at enabled_features.bufferDeviceAddress in gpuav::Validator::GetBufferDeviceAddress will not show the value updated in GpuShaderInstrumentor::PreCallRecordCreateDevice.
Note: The switch from the instance validator object to the device one happens in state_tracker.cpp, ValidationStateTracker::PostCallRecordCreateDevice
The text was updated successfully, but these errors were encountered:
yes, there are currently two DeviceFeatures enabled_features, one for the Instance level and one for Device level, but the Instance Level one should never matter for GPU-AV
I think the only call that we use as an instance level is PostCallRecordGetPhysicalDeviceProperties and it doesn't care about the enabled_features there
So the flow should be
We call GetEnabledDeviceFeatures() which sets it
We check if not enabled, and set it to true and enable it
I updated the issue. Not sure about how to fix this. It looks like modifying enabled_features in GpuShaderInstrumentor::PreCallRecordCreateDevice is a hack, I do not want to go down that route.
I would have expected modifications made to modified_create_info to be propagated correctly and used in GetEnabledDeviceFeatures but it is not the case. See CreateDevice in chassis, and how modified_create_info is used.
The unmodified device create info ends up being up for this function. I think that using the modified one here should be the fix, but I am unsure about other implications of such a change...
I think the features we enforce in GPU-AV are correctly enabled on the device, it is just a matter of toggling the corresponding flags in state tracking
Setting
enabled_features.bufferDeviceAddress
to true inGpuShaderInstrumentor::PreCallRecordCreateDevice
when adding missing features will modify another validator object, one associated to VkInstance,
gpuav::Validator
is associated to a device.enabled_features
is not inherited, (and besideswould be reset in
GetEnabledDeviceFeatures
). So for instance, looking atenabled_features.bufferDeviceAddress
ingpuav::Validator::GetBufferDeviceAddress
will not show the value updated inGpuShaderInstrumentor::PreCallRecordCreateDevice
.Note: The switch from the instance validator object to the device one happens in
state_tracker.cpp
,ValidationStateTracker::PostCallRecordCreateDevice
The text was updated successfully, but these errors were encountered: