Fixing wraparound.
This still needs a tremendous amount of cleanup.
This commit is contained in:
@@ -35,8 +35,17 @@ public:
|
||||
|
||||
void Pump();
|
||||
|
||||
protected:
|
||||
void ExecuteSegment(uint32_t ptr, uint32_t length);
|
||||
private:
|
||||
typedef struct {
|
||||
uint32_t ptr;
|
||||
uint32_t base_ptr;
|
||||
uint32_t max_address;
|
||||
uint32_t ptr_mask;
|
||||
} PacketArgs;
|
||||
void AdvancePtr(PacketArgs& args, uint32_t n);
|
||||
void ExecutePrimaryBuffer(uint32_t start_index, uint32_t end_index);
|
||||
void ExecuteIndirectBuffer(uint32_t ptr, uint32_t length);
|
||||
uint32_t ExecutePacket(PacketArgs& args);
|
||||
|
||||
protected:
|
||||
xe_memory_ref memory_;
|
||||
@@ -52,6 +61,7 @@ protected:
|
||||
|
||||
HANDLE write_ptr_index_event_;
|
||||
volatile uint32_t write_ptr_index_;
|
||||
volatile uint32_t write_ptr_max_index_;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user