performance: add new copy operations to state base address properties

Adding properties to selectively copy properties for surface state,
dynamic state and binding table base addresses.

Related-To: NEO-7808

Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2023-06-06 14:26:51 +00:00
committed by Compute-Runtime-Automation
parent 6036735840
commit 8d983d3e7a
3 changed files with 141 additions and 0 deletions

View File

@@ -159,6 +159,9 @@ struct StateBaseAddressProperties {
void copyPropertiesAll(const StateBaseAddressProperties &properties);
void copyPropertiesStatelessMocs(const StateBaseAddressProperties &properties);
void copyPropertiesStatelessMocsIndirectState(const StateBaseAddressProperties &properties);
void copyPropertiesBindingTableSurfaceState(const StateBaseAddressProperties &properties);
void copyPropertiesSurfaceState(const StateBaseAddressProperties &properties);
void copyPropertiesDynamicState(const StateBaseAddressProperties &properties);
bool isDirty() const;
void clearIsDirty();

View File

@@ -505,6 +505,30 @@ void StateBaseAddressProperties::copyPropertiesStatelessMocsIndirectState(const
this->indirectObjectSize.set(properties.indirectObjectSize.value);
}
void StateBaseAddressProperties::copyPropertiesBindingTableSurfaceState(const StateBaseAddressProperties &properties) {
this->bindingTablePoolBaseAddress.isDirty = false;
this->surfaceStateBaseAddress.isDirty = false;
this->bindingTablePoolBaseAddress.set(properties.bindingTablePoolBaseAddress.value);
this->bindingTablePoolSize.set(properties.bindingTablePoolSize.value);
this->surfaceStateBaseAddress.set(properties.surfaceStateBaseAddress.value);
this->surfaceStateSize.set(properties.surfaceStateSize.value);
}
void StateBaseAddressProperties::copyPropertiesSurfaceState(const StateBaseAddressProperties &properties) {
this->surfaceStateBaseAddress.isDirty = false;
this->surfaceStateBaseAddress.set(properties.surfaceStateBaseAddress.value);
this->surfaceStateSize.set(properties.surfaceStateSize.value);
}
void StateBaseAddressProperties::copyPropertiesDynamicState(const StateBaseAddressProperties &properties) {
this->dynamicStateBaseAddress.isDirty = false;
this->dynamicStateBaseAddress.set(properties.dynamicStateBaseAddress.value);
this->dynamicStateSize.set(properties.dynamicStateSize.value);
}
bool StateBaseAddressProperties::isDirty() const {
return globalAtomics.isDirty || statelessMocs.isDirty ||
bindingTablePoolBaseAddress.isDirty ||