The Scotland forward coolly slotted home a 58th-minute equaliser after Leon Britton’s defensive header had slipped between his own defenders to allow Mackie in on goal.
Swansea had led from the 14th minute thanks to Danny Graham’s sixth goal of the season. The striker was given too much time to control a Wayne Routledge cross, albeit with the apparent use of his arm, before turning and firing low into the net as QPR defence appealed in vain for handball.
Graham was also denied what looked a clear penalty in the closing stages as he went down under Armand Traore’s challenge, but referee Lee Probert was not interested.
Many sides have found themselves starved of possession on their visits to south Wales this season, but QPR set down their marker as Adel Taarabt, in ahead of Shaun Wright-Phillips, and captain Joey Barton dictated the early play.
A cross from the latter was met by Heidar Helguson and Mackie almost managed to nod the ball over Swansea keeper Michel Vorm as he followed in.
The Welsh side, defeated just once at home this term, slowly found their feet, with Graham having an effort cleared by Alejandro Faurlin.
And the striker gave the hosts a disputed lead, controlling Routledge’s centre before firing low into Paddy Kenny’s left-hand corner, having being given too much time to turn by Fitz Hall and Luke Young.
The QPR defenders appealed that Graham had handled as he brought the ball down, with manager Neil Warnock leaving the fourth official in no doubt as to his own view, but the goal stood.
It took a great block by Hill to deny Graham a second as the striker waited to pounce on Scott Sinclair’s ball across the box, before Vorm made a flying stop to keep out Barton’s effort from distance.
Faurlin’s lovely pass looked to have freed Mackie just prior to the half-hour mark but Steven Caulker showed impressive pace to take the ball off the winger’s toes.
Graham was proving a constant threat for the hosts and he showed impressive strength to shield the ball from Hall and get away a shot that Kenny had to scramble low to his right to hang on to.
At the other end Helguson was guilty of poor finishing as he headed over twice in quick succession from crosses by Young and Barton as the interval approached.
That spell of QPR supremacy continued when they controlled the early stages of the second stanza, with Taarabt and Faurlin teasing the home defence as the Moroccan flashed a volley just wide off the heels of Ashley Williams.
Swansea manager Brendan Rodgers shuffled his pack in a bid to alter the pattern of the game as Nathan Dyer and Luke Moore replaced Angel Rangel and Routledge, but less than a minute later the scores were level.
Britton’s effort to get his head to Kenny’s goal-kick only managed to split his own defence, and the alert Mackie pounced to race through and calmly guide the ball past Vorm.
Buoyed by his strike Mackie was soon heading towards goal again, but could not pick his way between Caulker and Kemy Agustien.
Graham almost teed up Moore after fine hold-up work in the box, and the former Watford man was then denied what he felt was a clear penalty after being felled as he rolled away from Traore, but referee Probert waved away the appeals.
The menacing Taarabt saw Vorm tip his curling strike wide as the game flowed from end to end, and Williams made a fantastic clearing header from Traore’s fierce cross as Rangers pressed for a winner which their second-half superiority would have merited.
But Swansea held out for a share of the spoils.