SWDEV-246687 - Do not use std::vector reference as class member cuMask_
The current implementation creates default reference in the stack and assigns it to class member cuMasks_, so whenever the content of the stack changes, cuMask_ would change. Change-Id: Iefab63c335d504b83c4ae90bd34ae76c6afb8f3c
Esse commit está contido em:
@@ -492,7 +492,7 @@ bool VirtualGPU::dispatchGenericAqlPacket(
|
||||
// NOTE: need multiple packets to dispatch the performance counter
|
||||
// packet blob of the legacy devices (gfx8)
|
||||
for (uint i = 0; i < size; i++, index++, packet++) {
|
||||
AqlPacket* aql_loc = &((AqlPacket*)(gpu_queue_->base_address))[index & queueMask];
|
||||
AqlPacket* aql_loc = &((AqlPacket*)(gpu_queue_->base_address))[index & queueMask];
|
||||
*aql_loc = *packet;
|
||||
if (header != 0) {
|
||||
packet_store_release(reinterpret_cast<uint32_t*>(aql_loc), header, rest);
|
||||
@@ -503,7 +503,7 @@ bool VirtualGPU::dispatchGenericAqlPacket(
|
||||
"group_seg_size=%zu, kernel_obj=0x%zx, kernarg_address=0x%zx, completion_signal=0x%zx",
|
||||
std::this_thread::get_id(), gpu_queue_,
|
||||
header, extractAqlBits(header, HSA_PACKET_HEADER_TYPE, HSA_PACKET_HEADER_WIDTH_TYPE),
|
||||
extractAqlBits(header, HSA_PACKET_HEADER_BARRIER,
|
||||
extractAqlBits(header, HSA_PACKET_HEADER_BARRIER,
|
||||
HSA_PACKET_HEADER_WIDTH_BARRIER),
|
||||
extractAqlBits(header, HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE,
|
||||
HSA_PACKET_HEADER_WIDTH_SCACQUIRE_FENCE_SCOPE),
|
||||
|
||||
@@ -368,7 +368,7 @@ class VirtualGPU : public device::VirtualDevice {
|
||||
uint16_t dispatchPacketHeader_;
|
||||
|
||||
//!< bit-vector representing the CU mask. Each active bit represents using one CU
|
||||
const std::vector<uint32_t>& cuMask_;
|
||||
const std::vector<uint32_t> cuMask_;
|
||||
amd::CommandQueue::Priority priority_; //!< The priority for the hsa queue
|
||||
};
|
||||
|
||||
|
||||
@@ -131,14 +131,14 @@ class CommandQueue : public RuntimeObject {
|
||||
context_(context),
|
||||
cuMask_(cuMask){}
|
||||
|
||||
Properties properties_; //!< Queue properties
|
||||
uint rtCUs_; //!< The number of used RT compute units
|
||||
Priority priority_; //!< Queue priority
|
||||
Monitor queueLock_; //!< Lock protecting the queue
|
||||
Monitor lastCmdLock_; //!< Lock protecting the last queued command
|
||||
Device& device_; //!< The device
|
||||
SharedReference<Context> context_; //!< The context of this command queue
|
||||
const std::vector<uint32_t>& cuMask_; //!< The CU mask
|
||||
Properties properties_; //!< Queue properties
|
||||
uint rtCUs_; //!< The number of used RT compute units
|
||||
Priority priority_; //!< Queue priority
|
||||
Monitor queueLock_; //!< Lock protecting the queue
|
||||
Monitor lastCmdLock_; //!< Lock protecting the last queued command
|
||||
Device& device_; //!< The device
|
||||
SharedReference<Context> context_; //!< The context of this command queue
|
||||
const std::vector<uint32_t> cuMask_; //!< The CU mask
|
||||
|
||||
private:
|
||||
//! Disable copy constructor
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário