Blog
AMD Radeon RX 9070 GRE review (Acer Nitro)
The AMD RX 9070 GRE is probably the most 2026 graphics card any GPU company could release this year. With the possible exception of Nvidia digging down the back of the sofa again and releasing another RTX 3060. The RX 9070 GRE was previously a China-exclusive card and represents a dumbing down of the Navi 48 GPU with less of that expensive ol’ VRAM. But the most damning aspect is the fact AMD has given this weaker card a global release at the same starting price as the beefier RX 9070.
I get the rationale—because of memory and silicon constraints, graphics card prices are all higher than they were when this card originally launched in China—but still, releasing a weaker GPU at the same initial MSRP as another card, which has a more fully functional version of the same chip, is never going to feel good. It’s becoming a common phrase for me, but this is just another damning indictment of the state of PC gaming hardware in 2026.
This is a card very much released for right now, giving AMD more options for its Navi 48 silicon (especially for chips that don’t make the grade for full RX 9070/XT cards) without needing to offer the full 16 GB monty. And it is priced for right now, too, with Nvidia’s RTX 5070 available at $600 and the RTX 5060 Ti 16 GB at $550. AMD is laser-focused on those two GeForce cards, but clearly also doesn’t want to completely torpedo the RX 9070 by pricing it fully $100 lower at $499.
It is still an impressive card in its own right, getting mighty close to the RTX 5070 at stock speeds and regularly beating it with a simple, pain-free undervolt. So, while I’m not necessarily loving the optics of it being priced at the same MSRP as the unquestionably better RX 9070, it’s the $550 card I would recommend right now, with the $50 delta between them being just enough. But if retailers lose their collective minds and regularly price it at the same level as the cheapest RX 9070 cards—which could absolutely happen, too—the RX 9070 GRE’s value-proposition entirely evaporates.
✅ You can find it at or below MSRP: The RX 9070 GRE rapidly loses relevance as soon as it strays above its $549 price tag. With the superior RX 9070 costing $600 right now, there isn’t a lot of wiggle room for retailers or manufacturers.
✅ You’re happy tweaking: The extra level of performance you can extract from the RX 9070 GRE with some easy undervolting is tangible, and levels up the card.
❌ You can find the RX 9070 for the same price: With 16 GB of faster VRAM and a more powerful version of the Navi 48 GPU, the straight RX 9070 is easily the better card.
❌ You want compute power, too: The RDNA 4 architecture just doesn’t have the same general compute performance as equivalent Nvidia GPUs. If you’re rendering or hoping for a GenAI card, this is not the way.
titles.push(c.getAttribute(‘data-title’)
| Product | Features () | Performance () | Thermals () | Sound () | Value () | Software () |
|---|---|---|---|---|---|---|
| RX 9070 GRE (Acer Nitro) | 3.5 | 4 | 4.5 | 4.5 | 3 | 4 |
window.iFrameResizer = 16 GB – Total War: Warhammer 3 (4K Ultra)”, “value”: 52, “unitText”: “Avg FPS” ; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice ); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) ); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) 12 GB – Black Myth Wukong (1080p High)”, “value”: 95, “unitText”: “Avg FPS” ); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) “@type”: “PropertyValue”, “name”: “RX 9060 XT ); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) “@type”: “PropertyValue”, “name”: “RX 9060 XT else var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) 16 GB – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 96, “unitText”: “Avg FPS” ); if (winner === ‘left’ && pctDiffStr) “@type”: “PropertyValue”, “name”: “RTX 5070 else if (winner === ‘right’ && pctDiffStr) “@type”: “PropertyValue”, “name”: “RX 9060 XT if (leftBar) “@type”: “PropertyValue”, “name”: “RX 9070 if (rightBar) 12 GB – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 130, “unitText”: “Avg FPS” if (leftText) “@type”: “PropertyValue”, “name”: “RTX 5060 Ti if (rightText) 12 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 176, “unitText”: “Avg FPS” if (labelText) 16 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 190, “unitText”: “Avg FPS” }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) “@type”: “PropertyValue”, “name”: “RTX 5060 Ti else 12 GB – Cyberpunk 2077 (1080p RT Ultra)”, “value”: 72, “unitText”: “Avg FPS” function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) ); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } } if (dropdown) dropdown.addEventListener(‘change’, function(e) 12 GB – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 144, “unitText”: “Avg FPS” ); if (prevBtn) prevBtn.addEventListener(‘click’, function() “@type”: “PropertyValue”, “name”: “RX 9060 XT ); if (nextBtn) nextBtn.addEventListener(‘click’, function() 16 GB – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 197, “unitText”: “Avg FPS” ); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() “@type”: “PropertyValue”, “name”: “RX 9070 GRE function constrainPan() titles.push(c.getAttribute(‘data-title’) wrapper.addEventListener(‘wheel’, function(e) , “@type”: “PropertyValue”, “name”: “RTX 5070 ); wrapper.addEventListener(‘mousedown’, function(e) 16 GB – F1 24 (1080p Ultra high)”, “value”: 90, “unitText”: “Avg FPS” ); window.addEventListener(‘mouseup’, function() -130mV ); wrapper.addEventListener(‘touchstart’, function(e) “@type”: “PropertyValue”, “name”: “RTX 5070 , Stock – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 111, “unitText”: “Avg FPS” ); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) 16 GB – Black Myth Wukong (1080p High)”, “value”: 75, “unitText”: “Avg FPS” else if (e.touches.length === 1 && isPanning) 16 GB – F1 24 (1080p Ultra high)”, “value”: 138, “unitText”: “Avg FPS” }, Stock – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 45, “unitText”: “Avg FPS” ); wrapper.addEventListener(‘touchend’, function(e) “@type”: “PropertyValue”, “name”: “RX 9070 GRE ); function handleMove(clientX) “@type”: “PropertyValue”, “name”: “RTX 5070 function onMouseMove(e) “@type”: “PropertyValue”, “name”: “RX 9070 function onTouchMove(e) -130mV function stopDragging() Stock – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 130, “unitText”: “Avg FPS” if (slider) “@type”: “PropertyValue”, “name”: “RX 9060 XT /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) Stock – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 261, “unitText”: “Avg FPS” else “@type”: “PropertyValue”, “name”: “RX 9070 } if (closeBtn) “@type”: “PropertyValue”, “name”: “RX 9070 /* Close on Escape */ document.addEventListener(‘keydown’, function(e) 12 GB – Homeworld 3 (1080p Epic)”, “value”: 123, “unitText”: “Avg FPS” ); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) Undervolted ); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() “@type”: “PropertyValue”, “name”: “RX 9070 GRE , 300); } } hotspots.forEach(function(btn) “@type”: “PropertyValue”, “name”: “RTX 5070 ); if (‘parentIFrame’ in window) “@type”: “PropertyValue”, “name”: “RX 9070 } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) 2700 Mem – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 118, “unitText”: “Avg FPS” /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) “@type”: “PropertyValue”, “name”: “RTX 5060 Ti if ('parentIFrame' in window) Stock – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 100, “unitText”: “Avg FPS” } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) “@type”: “PropertyValue”, “name”: “RX 9070 else “@type”: “PropertyValue”, “name”: “RTX 5070 }); } if (iaWrapper) “@type”: “PropertyValue”, “name”: “RX 9060 XT /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) “@type”: “PropertyValue”, “name”: “RX 9070 } } if (false) 12 GB – Cyberpunk 2077 (1080p RT Ultra)”, “value”: 63, “unitText”: “Avg FPS” else -130mV } if (document.readyState === ‘loading’) 12 GB – The Talos Principle 2 (1080p Ultra)”, “value”: 92, “unitText”: “Avg FPS” else Stock – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 144, “unitText”: “Avg FPS” })();
AMD Radeon RX 9070 GRE features

|
RX 9070 GRE |
RX 9070 |
RTX 5070 |
|
|---|---|---|---|
|
GPU |
Navi 48 |
Navi 48 |
GB205-300 |
|
Shaders |
3072 |
3584 |
6144 |
|
Lithography |
TSMC N4P |
TSMC N4P |
TSMC 4N |
|
Transistors (B) |
53.9 |
53.9 |
31.1 |
|
Die size (mm²) |
356.5 |
356.5 |
263 |
|
Memory size (GB) |
12 |
16 |
12 |
|
Memory type |
GDDR6 |
GDDR6 |
GDDR7 |
|
Memory bus |
192 |
256 |
192 |
|
TDP (W) |
220 |
220 |
250 |
|
MSRP (US$) |
$449 |
$549 |
$549 |
Sporting the same Navi 48 GPU as both the RX 9070 and the RX 9070 XT, the GRE is obviously cut from the same silicon. Andy covered the RDNA 4 architecture in more depth in his tech dive, and I added some extra notes in my original RX 9070 XT review, too. The chip at the heart of this GRE, however, has lost another eight compute units (CUs) compared with the next card up, which in turn had lost eight CUs compared with the top-end RX 9070 XT. That means you’re getting 3072 shaders, making it over 500 and 1000 shaders behind its other Navi 48 brethren respectively.
That theoretically allows AMD to use GPUs that may not have been able to run either 56 or 64 CUs at full speed to create another graphics card, and still get almost the same amount of cash for it, too. All it has to do is fuse off those errant, potentially dysfunctional CUs (too much to hope that it’s a soft-block, potentially circumvented by some ingenious vBIOS hacks) and ship that GPU out as an RX 9070 GRE.
With 12 GB of GDDR6, as opposed to the 16 GB used by the other Navi 48 cards, and slower memory at that, AMD is also able to save on the manufacturing costs of the RX 9070 GRE. Which is vital right now given the skyrocketing pricing of memory, whether server, system, or video memory.
Like the other RDNA 4 GPUs, the RX 9070 GRE benefits from a drastically improved ray tracing engine, which means that these latest AMD cards are able to better deal with the rigours of that fancy lighting feature than any other Radeon GPU of times past. They’re far closer to how Nvidia has been building and running its RT Cores, and that means they no longer lag so far behind GeForce cards in terms of ray traced gaming performance.
The other big feature of RDNA 4 is the support for FSR 4, AMD’s most up to date, machine-learning powered upscaling engine. When it was first introduced it represented a step change in the Radeon upscaler, making FSR far closer to the image fidelity and stability that Nvidia’s similar DLSS feature offers. But it wasn’t built into a lot of games at the beginning, though that is starting to change, and will only grow as time moves on. Though it is notable that FSR support is still a secondary concern for many games developers, despite AMD’s reports of how straightforward it is to implement.
Right now it is only available for RDNA 4 cards, but AMD is finally committing to opening support to RDNA 3 and later RDNA 2 GPUs.
{ “@context”: ” “@type”: “Dataset”, “name”: “Nipped and tucked, but RDNA 4 still delivers”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: 12 GB – The Talos Principle 2 (4K Ultra)”, “value”: 26, “unitText”: “Avg FPS” , “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T21:52:22.028Z”, “citation”: “Add your caption to explain the data, the learnings and the key takeaways of the data being visualized”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “Features”, “Group 1”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ “@type”: “PropertyValue”, “name”: “RTX 5060 Ti ]}
Nipped and tucked, but RDNA 4 still delivers
| Product | Features () |
|---|---|
| RX 9070 GRE (Acer Nitro) | 3.5 |
window.iFrameResizer = “@type”: “PropertyValue”, “name”: “RTX 5070 ; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) “@type”: “PropertyValue”, “name”: “RX 9060 XT setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) 16 GB – Total War: Warhammer 3 (4K Ultra)”, “value”: 52, “unitText”: “Avg FPS” }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() 12 GB – Total War: Warhammer 3 (4K Ultra)”, “value”: 42, “unitText”: “Avg FPS” , 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() , 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) else if (chartType !== ‘Pie’) e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) 16 GB – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 86, “unitText”: “Avg FPS” else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) 12 GB – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 107, “unitText”: “Avg FPS” } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) “@type”: “PropertyValue”, “name”: “RX 9060 XT } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) 16 GB – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 111, “unitText”: “Avg FPS” ); if (winner === ‘left’ && pctDiffStr) “@type”: “PropertyValue”, “name”: “RX 9070 GRE else if (winner === ‘right’ && pctDiffStr) “@type”: “PropertyValue”, “name”: “RTX 5060 Ti if (leftBar) 12 GB – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 122, “unitText”: “Avg FPS” if (rightBar) “@type”: “PropertyValue”, “name”: “RX 9060 XT if (leftText) 16 GB – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 149, “unitText”: “Avg FPS” if (rightText) “@type”: “PropertyValue”, “name”: “RX 9070 GRE if (labelText) “@type”: “PropertyValue”, “name”: “RTX 5060 Ti }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) “@type”: “PropertyValue”, “name”: “RTX 5070 ); } else { charts.forEach(function(c) 16 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 190, “unitText”: “Avg FPS” ); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) 16 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 261, “unitText”: “Avg FPS” else if (cType !== ‘Pie’) 12 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 249, “unitText”: “Avg FPS” /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) 16 GB – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 118, “unitText”: “Avg FPS” else 12 GB – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 127, “unitText”: “Avg FPS” } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) “@type”: “PropertyValue”, “name”: “RX 9060 XT else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) 16 GB – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 123, “unitText”: “Avg FPS” } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) “@type”: “PropertyValue”, “name”: “RX 9070 GRE ); if (prevBtn) prevBtn.addEventListener(‘click’, function() “@type”: “PropertyValue”, “name”: “RTX 5060 Ti ); if (nextBtn) nextBtn.addEventListener(‘click’, function() “@type”: “PropertyValue”, “name”: “RTX 5070 ); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) 16 GB – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 135, “unitText”: “Avg FPS” else 16 GB – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 197, “unitText”: “Avg FPS” } function constrainPan() “@type”: “PropertyValue”, “name”: “RX 9070 GRE wrapper.addEventListener(‘wheel’, function(e) , titles.push(c.getAttribute(‘data-title’) ); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() “@type”: “PropertyValue”, “name”: “RTX 5070 ); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) Stock – Black Myth Wukong (1440p High)”, “value”: 73, “unitText”: “Avg FPS” else if (e.touches.length === 1 && scale > 1) “@type”: “PropertyValue”, “name”: “RX 9070 GRE }, Stock – Black Myth Wukong (1440p High)”, “value”: 62, “unitText”: “Avg FPS” ); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) Stock – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 107, “unitText”: “Avg FPS” scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) “@type”: “PropertyValue”, “name”: “RX 9070 lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, Undervolted ); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) Stock – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 95, “unitText”: “Avg FPS” if (e.touches.length === 0) Stock – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 45, “unitText”: “Avg FPS” }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) “@type”: “PropertyValue”, “name”: “RX 9070 else 2700 Mem – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 44, “unitText”: “Avg FPS” } } function onMouseMove(e) Stock – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 38, “unitText”: “Avg FPS” function onTouchMove(e) Stock – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 122, “unitText”: “Avg FPS” function stopDragging() “@type”: “PropertyValue”, “name”: “RX 9070 if (slider) { var startDrag = function(clientX) -130mV ; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, Stock – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 130, “unitText”: “Avg FPS” ); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) Stock – F1 24 (1440p Ultra High)”, “value”: 78, “unitText”: “Avg FPS” ); slider.addEventListener(‘touchstart’, function(e) Stock – F1 24 (1440p Ultra High)”, “value”: 90, “unitText”: “Avg FPS” , “@type”: “PropertyValue”, “name”: “RX 9070 GRE ); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) Stock – F1 24 (1440p Ultra High)”, “value”: 81, “unitText”: “Avg FPS” else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) “@type”: “PropertyValue”, “name”: “RTX 5070 if (bgImage && bgImage.dataset.highresSrc) Stock – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 261, “unitText”: “Avg FPS” }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) Undervolted ); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) Stock – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 249, “unitText”: “Avg FPS” }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) Stock – Homeworld 3 (1440p Epic)”, “value”: 112, “unitText”: “Avg FPS” ); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) Stock – Homeworld 3 (1440p Epic)”, “value”: 104, “unitText”: “Avg FPS” } }, 300); } } hotspots.forEach(function(btn) Undervolted ); if (‘parentIFrame’ in window) “@type”: “PropertyValue”, “name”: “RX 9070 GRE } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) Stock – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 127, “unitText”: “Avg FPS” /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView( Stock – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 123, “unitText”: “Avg FPS” ); }, 100); } if ('parentIFrame' in window) -130mV } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) “@type”: “PropertyValue”, “name”: “RX 9070 GRE else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) Stock – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 100, “unitText”: “Avg FPS” targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) “@type”: “PropertyValue”, “name”: “RX 9070 }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) Undervolted var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) Stock – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 92, “unitText”: “Avg FPS” ); } } else “@type”: “PropertyValue”, “name”: “RTX 5070 } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() “@type”: “PropertyValue”, “name”: “RX 9070 ); } else Undervolted })();
AMD Radeon RX 9070 GRE performance

While AMD’s pricing of the RX 9070 GRE should point us towards the equivalently priced RTX 5060 Ti 16 GB, for me it’s the performance delta between the GRE and the straight RX 9070, and the delta between it and the RTX 5070, which are more interesting.
The Navi 48 GPU at its heart ought to be able to best an RTX 5060 Ti’s GB206 GPU, which is getting on for half the size and with fewer than half the transistors inside it. I don’t care that we’re talking about 12 GB vs 16 GB in terms of memory, the RTX 5060 Ti with its 128-bit memory bus shows what a weak mid-range card it is at this price by comparison.
And so it is, at every level you’re looking at around 15 – 20 fps dropped between the parity priced AMD and Nvidia cards. There is no contest.
[{ “@context”: ” “@type”: “Dataset”, “name”: “1080p gaming performance”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T16:45:30.214Z”, “citation”: “The cheaper RX 9070 GRE is getting very close to the 1080p performance of the RX 9070, and it’s practically a tie with the pricier Nvidia RTX 5070.”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “RX 9070”, “RTX 5070”, “RTX 5060 Ti Palit Infinity 3”, “RX 9060 XT XFX 16 GB”, “Black Myth Wukong (1080p High)”, “Cyberpunk 2077 (1080p RT Ultra)”, “F1 24 (1080p Ultra high)”, “Homeworld 3 (1080p Epic)”, “Metro Exodus Enhanced Edition (1080p Ultra)”, “The Talos Principle 2 (1080p Ultra)”, “Total War: Warhammer 3 (1080p Ultra)”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Black Myth Wukong (1080p High)”, “value”: 75, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Black Myth Wukong (1080p High)”, “value”: 95, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Black Myth Wukong (1080p High)”, “value”: 73, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Black Myth Wukong (1080p High)”, “value”: 103, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Black Myth Wukong (1080p High)”, “value”: 90, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Cyberpunk 2077 (1080p RT Ultra)”, “value”: 51, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Cyberpunk 2077 (1080p RT Ultra)”, “value”: 72, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Cyberpunk 2077 (1080p RT Ultra)”, “value”: 49, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Cyberpunk 2077 (1080p RT Ultra)”, “value”: 70, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Cyberpunk 2077 (1080p RT Ultra)”, “value”: 63, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – F1 24 (1080p Ultra high)”, “value”: 90, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – F1 24 (1080p Ultra high)”, “value”: 123, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – F1 24 (1080p Ultra high)”, “value”: 95, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – F1 24 (1080p Ultra high)”, “value”: 138, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – F1 24 (1080p Ultra high)”, “value”: 123, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Homeworld 3 (1080p Epic)”, “value”: 117, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Homeworld 3 (1080p Epic)”, “value”: 125, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Homeworld 3 (1080p Epic)”, “value”: 106, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Homeworld 3 (1080p Epic)”, “value”: 125, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Homeworld 3 (1080p Epic)”, “value”: 123, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Metro Exodus Enhanced Edition (1080p Ultra)”, “value”: 98, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Metro Exodus Enhanced Edition (1080p Ultra)”, “value”: 139, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Metro Exodus Enhanced Edition (1080p Ultra)”, “value”: 96, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Metro Exodus Enhanced Edition (1080p Ultra)”, “value”: 143, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Metro Exodus Enhanced Edition (1080p Ultra)”, “value”: 124, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – The Talos Principle 2 (1080p Ultra)”, “value”: 75, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – The Talos Principle 2 (1080p Ultra)”, “value”: 92, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – The Talos Principle 2 (1080p Ultra)”, “value”: 73, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – The Talos Principle 2 (1080p Ultra)”, “value”: 106, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – The Talos Principle 2 (1080p Ultra)”, “value”: 92, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Total War: Warhammer 3 (1080p Ultra)”, “value”: 83, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Total War: Warhammer 3 (1080p Ultra)”, “value”: 104, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Total War: Warhammer 3 (1080p Ultra)”, “value”: 94, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Total War: Warhammer 3 (1080p Ultra)”, “value”: 112, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Total War: Warhammer 3 (1080p Ultra)”, “value”: 102, “unitText”: “Avg FPS” } ]},{ “@context”: ” “@type”: “Dataset”, “name”: “1440p gaming performance”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T16:45:30.214Z”, “citation”: “As the resolution gets higher, the performance delta between the RX 9070 GRE and RTX 5070 does increase, but it’s still not huge.”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “RX 9070”, “RTX 5070”, “RTX 5060 Ti Palit Infinity 3”, “RX 9060 XT XFX 16 GB”, “Black Myth Wukong (1440p High)”, “Cyberpunk 2077 (1440p RT Ultra)”, “F1 24 (1440p Ultra High)”, “Homeworld 3 (1440p Epic)”, “Metro Exodus Enhanced Edition (1440p Ultra)”, “The Talos Principle 2 (1440p Ultra)”, “Total War: Warhammer 3 (1440p Ultra)”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Black Myth Wukong (1440p High)”, “value”: 51, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Black Myth Wukong (1440p High)”, “value”: 68, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Black Myth Wukong (1440p High)”, “value”: 48, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Black Myth Wukong (1440p High)”, “value”: 73, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Black Myth Wukong (1440p High)”, “value”: 62, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 32, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 45, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 30, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 43, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 38, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – F1 24 (1440p Ultra High)”, “value”: 56, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – F1 24 (1440p Ultra High)”, “value”: 78, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – F1 24 (1440p Ultra High)”, “value”: 60, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – F1 24 (1440p Ultra High)”, “value”: 90, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – F1 24 (1440p Ultra High)”, “value”: 81, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Homeworld 3 (1440p Epic)”, “value”: 97, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Homeworld 3 (1440p Epic)”, “value”: 112, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Homeworld 3 (1440p Epic)”, “value”: 86, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Homeworld 3 (1440p Epic)”, “value”: 104, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Homeworld 3 (1440p Epic)”, “value”: 101, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 72, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 100, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 71, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 107, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 92, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – The Talos Principle 2 (1440p Ultra)”, “value”: 51, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – The Talos Principle 2 (1440p Ultra)”, “value”: 64, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – The Talos Principle 2 (1440p Ultra)”, “value”: 49, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – The Talos Principle 2 (1440p Ultra)”, “value”: 74, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – The Talos Principle 2 (1440p Ultra)”, “value”: 61, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Total War: Warhammer 3 (1440p Ultra)”, “value”: 60, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Total War: Warhammer 3 (1440p Ultra)”, “value”: 81, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Total War: Warhammer 3 (1440p Ultra)”, “value”: 62, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Total War: Warhammer 3 (1440p Ultra)”, “value”: 96, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Total War: Warhammer 3 (1440p Ultra)”, “value”: 82, “unitText”: “Avg FPS” } ]},{ “@context”: ” “@type”: “Dataset”, “name”: “4K gaming performance”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T16:45:30.214Z”, “citation”: “Neither the RX 9070 GRE nor RTX 5070 are native 4K GPUs, and the Nvidia card still holds sway, but again it is close.”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “RX 9070”, “RTX 5070”, “RTX 5060 Ti Palit Infinity 3”, “RX 9060 XT XFX 16 GB”, “Black Myth Wukong (4K High)”, “Cyberpunk 2077 (4K RT Ultra)”, “F1 24 (4K Ultra High)”, “Homeworld 3 (4K Epic)”, “Metro Exodus Enhanced Edition (4K Ultra)”, “The Talos Principle 2 (4K Ultra)”, “Total War: Warhammer 3 (4K Ultra)”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Black Myth Wukong (4K High)”, “value”: 28, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Black Myth Wukong (4K High)”, “value”: 37, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Black Myth Wukong (4K High)”, “value”: 25, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Black Myth Wukong (4K High)”, “value”: 40, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Black Myth Wukong (4K High)”, “value”: 33, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Cyberpunk 2077 (4K RT Ultra)”, “value”: 15, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Cyberpunk 2077 (4K RT Ultra)”, “value”: 21, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Cyberpunk 2077 (4K RT Ultra)”, “value”: 14, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Cyberpunk 2077 (4K RT Ultra)”, “value”: 20, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Cyberpunk 2077 (4K RT Ultra)”, “value”: 10, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – F1 24 (4K Ultra High)”, “value”: 27, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – F1 24 (4K Ultra High)”, “value”: 39, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – F1 24 (4K Ultra High)”, “value”: 30, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – F1 24 (4K Ultra High)”, “value”: 44, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – F1 24 (4K Ultra High)”, “value”: 33, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Homeworld 3 (4K Epic)”, “value”: 58, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Homeworld 3 (4K Epic)”, “value”: 79, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Homeworld 3 (4K Epic)”, “value”: 46, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Homeworld 3 (4K Epic)”, “value”: 72, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Homeworld 3 (4K Epic)”, “value”: 63, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Metro Exodus Enhanced Edition (4K Ultra)”, “value”: 42, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Metro Exodus Enhanced Edition (4K Ultra)”, “value”: 57, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Metro Exodus Enhanced Edition (4K Ultra)”, “value”: 41, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Metro Exodus Enhanced Edition (4K Ultra)”, “value”: 62, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Metro Exodus Enhanced Edition (4K Ultra)”, “value”: 52, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – The Talos Principle 2 (4K Ultra)”, “value”: 27, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – The Talos Principle 2 (4K Ultra)”, “value”: 35, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – The Talos Principle 2 (4K Ultra)”, “value”: 25, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – The Talos Principle 2 (4K Ultra)”, “value”: 39, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – The Talos Principle 2 (4K Ultra)”, “value”: 26, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Total War: Warhammer 3 (4K Ultra)”, “value”: 33, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Total War: Warhammer 3 (4K Ultra)”, “value”: 44, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Total War: Warhammer 3 (4K Ultra)”, “value”: 30, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Total War: Warhammer 3 (4K Ultra)”, “value”: 52, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Total War: Warhammer 3 (4K Ultra)”, “value”: 42, “unitText”: “Avg FPS” } ]}]
1080p gaming performance
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 90 Avg FPS, 78 1% Low FPS |
| RX 9070 | 16 GB | 103 Avg FPS, 89 1% Low FPS |
| RTX 5070 | 12 GB | 95 Avg FPS, 82 1% Low FPS |
| RTX 5060 Ti | 16 GB | 75 Avg FPS, 65 1% Low FPS |
| RX 9060 XT | 16 GB | 73 Avg FPS, 63 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 63 Avg FPS, 52 1% Low FPS |
| RX 9070 | 16 GB | 70 Avg FPS, 58 1% Low FPS |
| RTX 5070 | 12 GB | 72 Avg FPS, 56 1% Low FPS |
| RTX 5060 Ti | 16 GB | 51 Avg FPS, 41 1% Low FPS |
| RX 9060 XT | 16 GB | 49 Avg FPS, 39 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 123 Avg FPS, 89 1% Low FPS |
| RX 9070 | 16 GB | 138 Avg FPS, 108 1% Low FPS |
| RTX 5070 | 12 GB | 123 Avg FPS, 96 1% Low FPS |
| RTX 5060 Ti | 16 GB | 90 Avg FPS, 71 1% Low FPS |
| RX 9060 XT | 16 GB | 95 Avg FPS, 61 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 123 Avg FPS, 65 1% Low FPS |
| RX 9070 | 16 GB | 125 Avg FPS, 62 1% Low FPS |
| RTX 5070 | 12 GB | 125 Avg FPS, 64 1% Low FPS |
| RTX 5060 Ti | 16 GB | 117 Avg FPS, 65 1% Low FPS |
| RX 9060 XT | 16 GB | 106 Avg FPS, 65 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 124 Avg FPS, 80 1% Low FPS |
| RX 9070 | 16 GB | 143 Avg FPS, 76 1% Low FPS |
| RTX 5070 | 12 GB | 139 Avg FPS, 88 1% Low FPS |
| RTX 5060 Ti | 16 GB | 98 Avg FPS, 42 1% Low FPS |
| RX 9060 XT | 16 GB | 96 Avg FPS, 42 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 92 Avg FPS, 49 1% Low FPS |
| RX 9070 | 16 GB | 106 Avg FPS, 74 1% Low FPS |
| RTX 5070 | 12 GB | 92 Avg FPS, 57 1% Low FPS |
| RTX 5060 Ti | 16 GB | 75 Avg FPS, 41 1% Low FPS |
| RX 9060 XT | 16 GB | 73 Avg FPS, 37 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 102 Avg FPS, 46 1% Low FPS |
| RX 9070 | 16 GB | 112 Avg FPS, 41 1% Low FPS |
| RTX 5070 | 12 GB | 104 Avg FPS, 53 1% Low FPS |
| RTX 5060 Ti | 16 GB | 83 Avg FPS, 54 1% Low FPS |
| RX 9060 XT | 16 GB | 94 Avg FPS, 72 1% Low FPS |
1440p gaming performance
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 62 Avg FPS, 55 1% Low FPS |
| RX 9070 | 16 GB | 73 Avg FPS, 64 1% Low FPS |
| RTX 5070 | 12 GB | 68 Avg FPS, 60 1% Low FPS |
| RTX 5060 Ti | 16 GB | 51 Avg FPS, 45 1% Low FPS |
| RX 9060 XT | 16 GB | 48 Avg FPS, 44 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 38 Avg FPS, 23 1% Low FPS |
| RX 9070 | 16 GB | 43 Avg FPS, 36 1% Low FPS |
| RTX 5070 | 12 GB | 45 Avg FPS, 36 1% Low FPS |
| RTX 5060 Ti | 16 GB | 32 Avg FPS, 26 1% Low FPS |
| RX 9060 XT | 16 GB | 30 Avg FPS, 24 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 81 Avg FPS, 52 1% Low FPS |
| RX 9070 | 16 GB | 90 Avg FPS, 67 1% Low FPS |
| RTX 5070 | 12 GB | 78 Avg FPS, 60 1% Low FPS |
| RTX 5060 Ti | 16 GB | 56 Avg FPS, 45 1% Low FPS |
| RX 9060 XT | 16 GB | 60 Avg FPS, 46 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 101 Avg FPS, 61 1% Low FPS |
| RX 9070 | 16 GB | 104 Avg FPS, 62 1% Low FPS |
| RTX 5070 | 12 GB | 112 Avg FPS, 64 1% Low FPS |
| RTX 5060 Ti | 16 GB | 97 Avg FPS, 64 1% Low FPS |
| RX 9060 XT | 16 GB | 86 Avg FPS, 65 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 92 Avg FPS, 63 1% Low FPS |
| RX 9070 | 16 GB | 107 Avg FPS, 74 1% Low FPS |
| RTX 5070 | 12 GB | 100 Avg FPS, 68 1% Low FPS |
| RTX 5060 Ti | 16 GB | 72 Avg FPS, 34 1% Low FPS |
| RX 9060 XT | 16 GB | 71 Avg FPS, 34 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 61 Avg FPS, 22 1% Low FPS |
| RX 9070 | 16 GB | 74 Avg FPS, 53 1% Low FPS |
| RTX 5070 | 12 GB | 64 Avg FPS, 42 1% Low FPS |
| RTX 5060 Ti | 16 GB | 51 Avg FPS, 32 1% Low FPS |
| RX 9060 XT | 16 GB | 49 Avg FPS, 35 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 82 Avg FPS, 51 1% Low FPS |
| RX 9070 | 16 GB | 96 Avg FPS, 43 1% Low FPS |
| RTX 5070 | 12 GB | 81 Avg FPS, 53 1% Low FPS |
| RTX 5060 Ti | 16 GB | 60 Avg FPS, 44 1% Low FPS |
| RX 9060 XT | 16 GB | 62 Avg FPS, 45 1% Low FPS |
4K gaming performance
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 33 Avg FPS, 30 1% Low FPS |
| RX 9070 | 16 GB | 40 Avg FPS, 30 1% Low FPS |
| RTX 5070 | 12 GB | 37 Avg FPS, 30 1% Low FPS |
| RTX 5060 Ti | 16 GB | 28 Avg FPS, 25 1% Low FPS |
| RX 9060 XT | 16 GB | 25 Avg FPS, 22 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 10 Avg FPS, 5 1% Low FPS |
| RX 9070 | 16 GB | 20 Avg FPS, 17 1% Low FPS |
| RTX 5070 | 12 GB | 21 Avg FPS, 17 1% Low FPS |
| RTX 5060 Ti | 16 GB | 15 Avg FPS, 12 1% Low FPS |
| RX 9060 XT | 16 GB | 14 Avg FPS, 11 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 33 Avg FPS, 23 1% Low FPS |
| RX 9070 | 16 GB | 44 Avg FPS, 32 1% Low FPS |
| RTX 5070 | 12 GB | 39 Avg FPS, 30 1% Low FPS |
| RTX 5060 Ti | 16 GB | 27 Avg FPS, 21 1% Low FPS |
| RX 9060 XT | 16 GB | 30 Avg FPS, 22 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 63 Avg FPS, 50 1% Low FPS |
| RX 9070 | 16 GB | 72 Avg FPS, 56 1% Low FPS |
| RTX 5070 | 12 GB | 79 Avg FPS, 55 1% Low FPS |
| RTX 5060 Ti | 16 GB | 58 Avg FPS, 50 1% Low FPS |
| RX 9060 XT | 16 GB | 46 Avg FPS, 41 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 52 Avg FPS, 35 1% Low FPS |
| RX 9070 | 16 GB | 62 Avg FPS, 47 1% Low FPS |
| RTX 5070 | 12 GB | 57 Avg FPS, 44 1% Low FPS |
| RTX 5060 Ti | 16 GB | 42 Avg FPS, 20 1% Low FPS |
| RX 9060 XT | 16 GB | 41 Avg FPS, 21 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 26 Avg FPS, 10 1% Low FPS |
| RX 9070 | 16 GB | 39 Avg FPS, 24 1% Low FPS |
| RTX 5070 | 12 GB | 35 Avg FPS, 24 1% Low FPS |
| RTX 5060 Ti | 16 GB | 27 Avg FPS, 18 1% Low FPS |
| RX 9060 XT | 16 GB | 25 Avg FPS, 19 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 42 Avg FPS, 29 1% Low FPS |
| RX 9070 | 16 GB | 52 Avg FPS, 36 1% Low FPS |
| RTX 5070 | 12 GB | 44 Avg FPS, 30 1% Low FPS |
| RTX 5060 Ti | 16 GB | 33 Avg FPS, 22 1% Low FPS |
| RX 9060 XT | 16 GB | 30 Avg FPS, 20 1% Low FPS |
window.iFrameResizer = { heightCalculationMethod: ‘taggedElement’ }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, baseMargin + ‘%’, ‘important’); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, targetMargin + ‘%’, ‘important’); } }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = ‘stroke-dashoffset 1s ease-out ‘ + (i * 0.1) + ‘s, stroke-width 0.2s, opacity 0.2s’; p.style.strokeDashoffset=”0″; }, 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() { dot.style.transition = ‘opacity 0.3s ease’; dot.style.opacity = ‘1’; }, 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) { animateLineChart(chart); } else if (chartType !== ‘Pie’) { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) { var diff = Math.round(((leftNum – rightNum) / rightNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) { var diff = Math.round(((rightNum – leftNum) / leftNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === ‘left’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === ‘right’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty(‘–target-width’, leftWidth + ‘%’); leftBar.style.width = leftWidth + ‘%’; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty(‘–target-width’, rightWidth + ‘%’); rightBar.style.width = rightWidth + ‘%’; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ‘ (‘ + unit + ‘)’ : ”); } }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute(‘data-title’) || ”); }); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) { /* Line chart animations if needed */ } else if (cType !== ‘Pie’) { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) { chartWrapper.classList.add(‘labels-on-top’); } else { chartWrapper.classList.remove(‘labels-on-top’); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = ‘block’; if (bottomBarEl) bottomBarEl.style.display = ‘flex’; } else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = ‘none’; } } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex – 1); }); if (nextBtn) nextBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { inner.style.setProperty(‘transform’, ‘translate(‘ + panX + ‘px, ‘ + panY + ‘px) scale(‘ + scale + ‘)’, ‘important’); } else { inner.style.removeProperty(‘transform’); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); /* Max pan depends on how much the image is scaled beyond the wrapper */ var maxPanX = Math.max(0, (rect.width * scale – rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale – rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener(‘wheel’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX – rect.left – rect.width / 2; var mouseY = e.clientY – rect.top – rect.height / 2; var ratio = newScale / scale; panX = mouseX – (mouseX – panX) * ratio; panY = mouseY – (mouseY – panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() { isPanning = false; }); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; hasPanned = true; /* Prevent click after pinch */ } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest(‘.fv-image-compare-slider’) || e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX – lastCenterX); panY += (centerY – lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) { labelRight.style.setProperty(‘opacity’, ‘0’, ‘important’); } else { labelRight.style.setProperty(‘opacity’, ‘1’, ‘important’); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener(‘mousemove’, onMouseMove); window.removeEventListener(‘mouseup’, stopDragging); window.removeEventListener(‘touchmove’, onTouchMove); window.removeEventListener(‘touchend’, stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘mousemove’, onMouseMove); window.addEventListener(‘mouseup’, stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, { passive: false }); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener(‘touchstart’, function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = ‘none’; } else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute(‘srcset’); fgImage.removeAttribute(‘sizes’); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute(‘srcset’); bgImage.removeAttribute(‘sizes’); } }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); }); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) { item.classList.remove(‘is-highlighted’); }); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute(‘aria-expanded’, ‘false’); }); if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (true) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) { setupWrapper(slide.querySelector(‘.fv-chart-wrapper’)); }); } var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); /* Check if container exists to prevent errors */ if (slideshowContainer) { var currentSlideIndex = 0; var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); var counter = slideshowContainer.querySelector(‘.fv-slide-counter’); var prevBtn = slideshowContainer.querySelector(‘.fv-nav-btn.prev’); var nextBtn = slideshowContainer.querySelector(‘.fv-nav-btn.next’); var dropdown = slideshowContainer.querySelector(‘.fv-slideshow-select’); function updateControls(index) { if (counter) counter.textContent = (index + 1) + ‘ / ‘ + slides.length; if (dropdown) dropdown.value = index; if (prevBtn) { if (index === 0) prevBtn.classList.add(‘disabled’); else prevBtn.classList.remove(‘disabled’); } if (nextBtn) { if (index === slides.length – 1) nextBtn.classList.add(‘disabled’); else nextBtn.classList.remove(‘disabled’); } } function showSlide(index) { if (index = slides.length) return; /* index = 0; */ currentSlideIndex = index; slides.forEach(function(slide, i) { slide.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { /* Re-trigger animations for the active slide */ var chartEl = slide.querySelector(‘.fv-chart-wrapper’); if (chartEl && window.fvAnimateCharts) { window.fvAnimateCharts(chartEl); } } }); updateControls(currentSlideIndex); } if (prevBtn) { prevBtn.addEventListener(‘click’, function() { showSlide(currentSlideIndex – 1); }); } if (nextBtn) { nextBtn.addEventListener(‘click’, function() { showSlide(currentSlideIndex + 1); }); } if (dropdown) { dropdown.addEventListener(‘change’, function(e) { showSlide(parseInt(e.target.value)); }); } /* Initial setup */ updateControls(currentSlideIndex); /* Initial animation for the first slide */ if (slides.length > 0) { var firstChart = slides[0].querySelector(‘.fv-chart-wrapper’); if (firstChart && window.fvAnimateCharts) { setTimeout(function() { window.fvAnimateCharts(firstChart); }, 100); } } } } else { setupWrapper(root); } } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() { initialize(‘fv-chart-1779813930213-aevj8xmje’, true); }); } else { initialize(‘fv-chart-1779813930213-aevj8xmje’, true); } })();
But the pricier RTX 5070 and RX 9070 are interesting in just how close they are in performance terms to the RX 9070 GRE. Against the RTX 5070 the two cards are not far off being on a level, trading blows across parts of our benchmarking suite. On the whole, though you’d have to say the Nvidia card more consistently leads the GRE overall, but there’s surprisingly little in it, certainly not enough that you’d actually feel it in most games. It is clear, however, that the 3584 core Navi 48 chip inside the straight RX 9070—with its 16 GB VRAM quotient and 256-bit memory bus—is absolutely the better option.
{ “@context”: ” “@type”: “Dataset”, “name”: “Upscaled gaming performance”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T16:47:42.060Z”, “citation”: “There are a couple of instances where, when using upscaling, the RX 9070 GRE takes a healthy lead in terms of frame rates over the RTX 5070.”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “RX 9070”, “RTX 5070”, “RTX 5060 Ti Palit Infinity 3”, “RX 9060 XT XFX 16 GB”, “Black Myth Wukong (1440p High + Upscaling (quality))”, “Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “Homeworld 3 (1440p Epic + upscaling (quality))”, “The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “F1 24 (1440p Ultra high +upscaling (Quality), 2x FG)”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 86, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 107, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 78, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 111, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 95, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 96, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 122, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 102, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 149, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 130, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 136, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 176, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 190, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 261, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 249, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 118, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 127, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 110, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 123, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 115, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 115, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 144, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 135, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 197, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 164, “unitText”: “Avg FPS” } ]}
Upscaled gaming performance
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 95 Avg FPS, 82 1% Low FPS |
| RX 9070 | 16 GB | 111 Avg FPS, 96 1% Low FPS |
| RTX 5070 | 12 GB | 107 Avg FPS, 81 1% Low FPS |
| RTX 5060 Ti | 16 GB | 86 Avg FPS, 72 1% Low FPS |
| RX 9060 XT | 16 GB | 78 Avg FPS, 69 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 130 Avg FPS, 78 1% Low FPS |
| RX 9070 | 16 GB | 149 Avg FPS, 102 1% Low FPS |
| RTX 5070 | 12 GB | 122 Avg FPS, 97 1% Low FPS |
| RTX 5060 Ti | 16 GB | 96 Avg FPS, 79 1% Low FPS |
| RX 9060 XT | 16 GB | 102 Avg FPS, 73 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 249 Avg FPS, 122 1% Low FPS |
| RX 9070 | 16 GB | 261 Avg FPS, 114 1% Low FPS |
| RTX 5070 | 12 GB | 176 Avg FPS, 113 1% Low FPS |
| RTX 5060 Ti | 16 GB | 136 Avg FPS, 89 1% Low FPS |
| RX 9060 XT | 16 GB | 190 Avg FPS, 113 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 115 Avg FPS, 63 1% Low FPS |
| RX 9070 | 16 GB | 123 Avg FPS, 64 1% Low FPS |
| RTX 5070 | 12 GB | 127 Avg FPS, 63 1% Low FPS |
| RTX 5060 Ti | 16 GB | 118 Avg FPS, 63 1% Low FPS |
| RX 9060 XT | 16 GB | 110 Avg FPS, 62 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 164 Avg FPS, 60 1% Low FPS |
| RX 9070 | 16 GB | 197 Avg FPS, 90 1% Low FPS |
| RTX 5070 | 12 GB | 144 Avg FPS, 65 1% Low FPS |
| RTX 5060 Ti | 16 GB | 115 Avg FPS, 41 1% Low FPS |
| RX 9060 XT | 16 GB | 135 Avg FPS, 59 1% Low FPS |
window.iFrameResizer = { heightCalculationMethod: ‘taggedElement’ }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, baseMargin + ‘%’, ‘important’); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, targetMargin + ‘%’, ‘important’); } }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = ‘stroke-dashoffset 1s ease-out ‘ + (i * 0.1) + ‘s, stroke-width 0.2s, opacity 0.2s’; p.style.strokeDashoffset=”0″; }, 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() { dot.style.transition = ‘opacity 0.3s ease’; dot.style.opacity = ‘1’; }, 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) { animateLineChart(chart); } else if (chartType !== ‘Pie’) { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) { var diff = Math.round(((leftNum – rightNum) / rightNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) { var diff = Math.round(((rightNum – leftNum) / leftNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === ‘left’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === ‘right’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty(‘–target-width’, leftWidth + ‘%’); leftBar.style.width = leftWidth + ‘%’; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty(‘–target-width’, rightWidth + ‘%’); rightBar.style.width = rightWidth + ‘%’; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ‘ (‘ + unit + ‘)’ : ”); } }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute(‘data-title’) || ”); }); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) { /* Line chart animations if needed */ } else if (cType !== ‘Pie’) { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) { chartWrapper.classList.add(‘labels-on-top’); } else { chartWrapper.classList.remove(‘labels-on-top’); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = ‘block’; if (bottomBarEl) bottomBarEl.style.display = ‘flex’; } else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = ‘none’; } } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex – 1); }); if (nextBtn) nextBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { inner.style.setProperty(‘transform’, ‘translate(‘ + panX + ‘px, ‘ + panY + ‘px) scale(‘ + scale + ‘)’, ‘important’); } else { inner.style.removeProperty(‘transform’); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); /* Max pan depends on how much the image is scaled beyond the wrapper */ var maxPanX = Math.max(0, (rect.width * scale – rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale – rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener(‘wheel’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX – rect.left – rect.width / 2; var mouseY = e.clientY – rect.top – rect.height / 2; var ratio = newScale / scale; panX = mouseX – (mouseX – panX) * ratio; panY = mouseY – (mouseY – panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() { isPanning = false; }); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; hasPanned = true; /* Prevent click after pinch */ } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest(‘.fv-image-compare-slider’) || e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX – lastCenterX); panY += (centerY – lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) { labelRight.style.setProperty(‘opacity’, ‘0’, ‘important’); } else { labelRight.style.setProperty(‘opacity’, ‘1’, ‘important’); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener(‘mousemove’, onMouseMove); window.removeEventListener(‘mouseup’, stopDragging); window.removeEventListener(‘touchmove’, onTouchMove); window.removeEventListener(‘touchend’, stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘mousemove’, onMouseMove); window.addEventListener(‘mouseup’, stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, { passive: false }); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener(‘touchstart’, function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = ‘none’; } else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute(‘srcset’); fgImage.removeAttribute(‘sizes’); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute(‘srcset’); bgImage.removeAttribute(‘sizes’); } }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); }); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) { item.classList.remove(‘is-highlighted’); }); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute(‘aria-expanded’, ‘false’); }); if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) { setupWrapper(slide.querySelector(‘.fv-chart-wrapper’)); }); } } else { setupWrapper(root); } } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() { initialize(‘fv-chart-1779814062060-lpiqcv1dg’, false); }); } else { initialize(‘fv-chart-1779814062060-lpiqcv1dg’, false); } })();
Though the GRE is still not far off, and if the price gap between either the RX 9070 or RTX 5070 increases then the GRE will become a more tempting option. At MSRP vs. current pricing of the RX 9070 specifically, with the GRE you’re getting roughly 86% of the performance, but you are paying around 92% of the price.
At the higher resolutions the GRE notably struggles against the other two cards, though if you’re aiming specifically for 4K gaming with anything in the $600 range you are 100% relying on some heavy upscaling. At 1440p though it still shines.
{ “@context”: ” “@type”: “Dataset”, “name”: “Undervolting performance”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T16:55:33.260Z”, “citation”: “With a super-easy undervolt, the RX 9070 GRE is able to post performance on par or beyond the RTX 5070, and alongside the straight RX 9070.”, “keywords”: [ “RX 9070 GRE (Acer Nitro) (Undervolted | -130mV | 2700 Mem)”, “RX 9070 GRE (Acer Nitro) (v1.0)”, “RX 9070”, “RTX 5070”, “Black Myth Wukong (1440p High)”, “Black Myth Wukong (1440p High + Upscaling (quality))”, “Cyberpunk 2077 (1440p RT Ultra)”, “Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “F1 24 (1440p Ultra High)”, “F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “Homeworld 3 (1440p Epic)”, “Homeworld 3 (1440p Epic + upscaling (quality))”, “Metro Exodus Enhanced Edition (1440p Ultra)”, “The Talos Principle 2 (1440p Ultra)”, “The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “Total War: Warhammer 3 (1440p Ultra)”, “F1 24 (1440p Ultra high +upscaling (Quality), 2x FG)”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – Black Myth Wukong (1440p High)”, “value”: 68, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – Black Myth Wukong (1440p High)”, “value”: 73, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – Black Myth Wukong (1440p High)”, “value”: 69, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – Black Myth Wukong (1440p High)”, “value”: 62, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 107, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 111, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 103, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – Black Myth Wukong (1440p High + Upscaling (quality))”, “value”: 95, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 45, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 43, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 44, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – Cyberpunk 2077 (1440p RT Ultra)”, “value”: 38, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 122, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 149, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 145, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – Cyberpunk 2077 (1440p RT Ultra + upscaling (quality))”, “value”: 130, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – F1 24 (1440p Ultra High)”, “value”: 78, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – F1 24 (1440p Ultra High)”, “value”: 90, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – F1 24 (1440p Ultra High)”, “value”: 89, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – F1 24 (1440p Ultra High)”, “value”: 81, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 176, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 261, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 262, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – F1 24 (1440p Ultra high +upscsaling (Quality), 2x FG)”, “value”: 249, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – Homeworld 3 (1440p Epic)”, “value”: 112, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – Homeworld 3 (1440p Epic)”, “value”: 104, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – Homeworld 3 (1440p Epic)”, “value”: 103, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – Homeworld 3 (1440p Epic)”, “value”: 101, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 127, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 123, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 118, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – Homeworld 3 (1440p Epic + upscaling (quality))”, “value”: 115, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 100, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 107, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 101, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – Metro Exodus Enhanced Edition (1440p Ultra)”, “value”: 92, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – The Talos Principle 2 (1440p Ultra)”, “value”: 64, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – The Talos Principle 2 (1440p Ultra)”, “value”: 74, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – The Talos Principle 2 (1440p Ultra)”, “value”: 65, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – The Talos Principle 2 (1440p Ultra)”, “value”: 61, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 144, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 197, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 183, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – The Talos Principle 2 (1440p Ultra +upscaling (quality), 2x FG)”, “value”: 164, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | Stock – Total War: Warhammer 3 (1440p Ultra)”, “value”: 81, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | Stock – Total War: Warhammer 3 (1440p Ultra)”, “value”: 96, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Undervolted | -130mV | 2700 Mem – Total War: Warhammer 3 (1440p Ultra)”, “value”: 91, “unitText”: “Avg FPS” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | Stock – Total War: Warhammer 3 (1440p Ultra)”, “value”: 82, “unitText”: “Avg FPS” } ]}
Undervolting performance
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 69 Avg FPS, 42 1% Low FPS |
| RX 9070 GRE | Stock | 62 Avg FPS, 55 1% Low FPS |
| RX 9070 | Stock | 73 Avg FPS, 64 1% Low FPS |
| RTX 5070 | Stock | 68 Avg FPS, 60 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 103 Avg FPS, 89 1% Low FPS |
| RX 9070 GRE | Stock | 95 Avg FPS, 82 1% Low FPS |
| RX 9070 | Stock | 111 Avg FPS, 96 1% Low FPS |
| RTX 5070 | Stock | 107 Avg FPS, 81 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 44 Avg FPS, 34 1% Low FPS |
| RX 9070 GRE | Stock | 38 Avg FPS, 23 1% Low FPS |
| RX 9070 | Stock | 43 Avg FPS, 36 1% Low FPS |
| RTX 5070 | Stock | 45 Avg FPS, 36 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 145 Avg FPS, 73 1% Low FPS |
| RX 9070 GRE | Stock | 130 Avg FPS, 78 1% Low FPS |
| RX 9070 | Stock | 149 Avg FPS, 102 1% Low FPS |
| RTX 5070 | Stock | 122 Avg FPS, 97 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 89 Avg FPS, 49 1% Low FPS |
| RX 9070 GRE | Stock | 81 Avg FPS, 52 1% Low FPS |
| RX 9070 | Stock | 90 Avg FPS, 67 1% Low FPS |
| RTX 5070 | Stock | 78 Avg FPS, 60 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 262 Avg FPS, 126 1% Low FPS |
| RX 9070 GRE | Stock | 249 Avg FPS, 122 1% Low FPS |
| RX 9070 | Stock | 261 Avg FPS, 114 1% Low FPS |
| RTX 5070 | Stock | 176 Avg FPS, 113 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 103 Avg FPS, 63 1% Low FPS |
| RX 9070 GRE | Stock | 101 Avg FPS, 61 1% Low FPS |
| RX 9070 | Stock | 104 Avg FPS, 62 1% Low FPS |
| RTX 5070 | Stock | 112 Avg FPS, 64 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 118 Avg FPS, 64 1% Low FPS |
| RX 9070 GRE | Stock | 115 Avg FPS, 63 1% Low FPS |
| RX 9070 | Stock | 123 Avg FPS, 64 1% Low FPS |
| RTX 5070 | Stock | 127 Avg FPS, 63 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 101 Avg FPS, 68 1% Low FPS |
| RX 9070 GRE | Stock | 92 Avg FPS, 63 1% Low FPS |
| RX 9070 | Stock | 107 Avg FPS, 74 1% Low FPS |
| RTX 5070 | Stock | 100 Avg FPS, 68 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 65 Avg FPS, 35 1% Low FPS |
| RX 9070 GRE | Stock | 61 Avg FPS, 22 1% Low FPS |
| RX 9070 | Stock | 74 Avg FPS, 53 1% Low FPS |
| RTX 5070 | Stock | 64 Avg FPS, 42 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 183 Avg FPS, 69 1% Low FPS |
| RX 9070 GRE | Stock | 164 Avg FPS, 60 1% Low FPS |
| RX 9070 | Stock | 197 Avg FPS, 90 1% Low FPS |
| RTX 5070 | Stock | 144 Avg FPS, 65 1% Low FPS |
Avg FPS
1% Low FPS
| Product | Value |
|---|---|
| RX 9070 GRE | Undervolted | -130mV | 2700 Mem | 91 Avg FPS, 48 1% Low FPS |
| RX 9070 GRE | Stock | 82 Avg FPS, 51 1% Low FPS |
| RX 9070 | Stock | 96 Avg FPS, 43 1% Low FPS |
| RTX 5070 | Stock | 81 Avg FPS, 53 1% Low FPS |
window.iFrameResizer = { heightCalculationMethod: ‘taggedElement’ }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, baseMargin + ‘%’, ‘important’); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, targetMargin + ‘%’, ‘important’); } }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = ‘stroke-dashoffset 1s ease-out ‘ + (i * 0.1) + ‘s, stroke-width 0.2s, opacity 0.2s’; p.style.strokeDashoffset=”0″; }, 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() { dot.style.transition = ‘opacity 0.3s ease’; dot.style.opacity = ‘1’; }, 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) { animateLineChart(chart); } else if (chartType !== ‘Pie’) { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) { var diff = Math.round(((leftNum – rightNum) / rightNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) { var diff = Math.round(((rightNum – leftNum) / leftNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === ‘left’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === ‘right’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty(‘–target-width’, leftWidth + ‘%’); leftBar.style.width = leftWidth + ‘%’; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty(‘–target-width’, rightWidth + ‘%’); rightBar.style.width = rightWidth + ‘%’; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ‘ (‘ + unit + ‘)’ : ”); } }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute(‘data-title’) || ”); }); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) { /* Line chart animations if needed */ } else if (cType !== ‘Pie’) { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) { chartWrapper.classList.add(‘labels-on-top’); } else { chartWrapper.classList.remove(‘labels-on-top’); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = ‘block’; if (bottomBarEl) bottomBarEl.style.display = ‘flex’; } else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = ‘none’; } } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex – 1); }); if (nextBtn) nextBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { inner.style.setProperty(‘transform’, ‘translate(‘ + panX + ‘px, ‘ + panY + ‘px) scale(‘ + scale + ‘)’, ‘important’); } else { inner.style.removeProperty(‘transform’); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); /* Max pan depends on how much the image is scaled beyond the wrapper */ var maxPanX = Math.max(0, (rect.width * scale – rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale – rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener(‘wheel’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX – rect.left – rect.width / 2; var mouseY = e.clientY – rect.top – rect.height / 2; var ratio = newScale / scale; panX = mouseX – (mouseX – panX) * ratio; panY = mouseY – (mouseY – panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() { isPanning = false; }); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; hasPanned = true; /* Prevent click after pinch */ } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest(‘.fv-image-compare-slider’) || e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX – lastCenterX); panY += (centerY – lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) { labelRight.style.setProperty(‘opacity’, ‘0’, ‘important’); } else { labelRight.style.setProperty(‘opacity’, ‘1’, ‘important’); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener(‘mousemove’, onMouseMove); window.removeEventListener(‘mouseup’, stopDragging); window.removeEventListener(‘touchmove’, onTouchMove); window.removeEventListener(‘touchend’, stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘mousemove’, onMouseMove); window.addEventListener(‘mouseup’, stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, { passive: false }); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener(‘touchstart’, function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = ‘none’; } else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute(‘srcset’); fgImage.removeAttribute(‘sizes’); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute(‘srcset’); bgImage.removeAttribute(‘sizes’); } }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); }); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) { item.classList.remove(‘is-highlighted’); }); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute(‘aria-expanded’, ‘false’); }); if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) { setupWrapper(slide.querySelector(‘.fv-chart-wrapper’)); }); } } else { setupWrapper(root); } } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() { initialize(‘fv-chart-1779814533259-6zoxelk6m’, false); }); } else { initialize(‘fv-chart-1779814533259-6zoxelk6m’, false); } })();
The pricing maths start to make more sense when you factor in the level of performance headroom built into this card, however. With a little oh-so-simple undervolt I was able to push the RX 9070 GRE with a few percentage points of the performance of the RX 9070. And with the GPU consistently topping the 3 GHz mark, you’re looking at generally a performance lead over the RTX 5070, too.
I still find the performance headroom of Navi 48 GPUs surprising, and while AMD’s lower order RX 9000-series cards don’t have as consistent a level of overclocking/undervolting performance to them, every Navi 48-powered card I’ve tested is happy to let you pull back its core voltage in exchange for giving up a whole lot more clock speed and around 10% extra frame rate performance in games.
{ “@context”: ” “@type”: “Dataset”, “name”: “Undervolt and watch it fly”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T21:53:10.095Z”, “citation”: “Add your caption to explain the data, the learnings and the key takeaways of the data being visualized”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “Performance”, “Group 1”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RX 9070 GRE (Acer Nitro) – Performance”, “value”: 4, “unitText”: “”, “maxValue”: 5 } ]}
Undervolt and watch it fly
| Product | Performance () |
|---|---|
| RX 9070 GRE (Acer Nitro) | 4 |
window.iFrameResizer = { heightCalculationMethod: ‘taggedElement’ }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, baseMargin + ‘%’, ‘important’); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, targetMargin + ‘%’, ‘important’); } }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = ‘stroke-dashoffset 1s ease-out ‘ + (i * 0.1) + ‘s, stroke-width 0.2s, opacity 0.2s’; p.style.strokeDashoffset=”0″; }, 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() { dot.style.transition = ‘opacity 0.3s ease’; dot.style.opacity = ‘1’; }, 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) { animateLineChart(chart); } else if (chartType !== ‘Pie’) { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) { var diff = Math.round(((leftNum – rightNum) / rightNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) { var diff = Math.round(((rightNum – leftNum) / leftNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === ‘left’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === ‘right’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty(‘–target-width’, leftWidth + ‘%’); leftBar.style.width = leftWidth + ‘%’; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty(‘–target-width’, rightWidth + ‘%’); rightBar.style.width = rightWidth + ‘%’; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ‘ (‘ + unit + ‘)’ : ”); } }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute(‘data-title’) || ”); }); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) { /* Line chart animations if needed */ } else if (cType !== ‘Pie’) { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) { chartWrapper.classList.add(‘labels-on-top’); } else { chartWrapper.classList.remove(‘labels-on-top’); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = ‘block’; if (bottomBarEl) bottomBarEl.style.display = ‘flex’; } else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = ‘none’; } } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex – 1); }); if (nextBtn) nextBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { inner.style.setProperty(‘transform’, ‘translate(‘ + panX + ‘px, ‘ + panY + ‘px) scale(‘ + scale + ‘)’, ‘important’); } else { inner.style.removeProperty(‘transform’); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); /* Max pan depends on how much the image is scaled beyond the wrapper */ var maxPanX = Math.max(0, (rect.width * scale – rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale – rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener(‘wheel’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX – rect.left – rect.width / 2; var mouseY = e.clientY – rect.top – rect.height / 2; var ratio = newScale / scale; panX = mouseX – (mouseX – panX) * ratio; panY = mouseY – (mouseY – panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() { isPanning = false; }); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; hasPanned = true; /* Prevent click after pinch */ } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest(‘.fv-image-compare-slider’) || e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX – lastCenterX); panY += (centerY – lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) { labelRight.style.setProperty(‘opacity’, ‘0’, ‘important’); } else { labelRight.style.setProperty(‘opacity’, ‘1’, ‘important’); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener(‘mousemove’, onMouseMove); window.removeEventListener(‘mouseup’, stopDragging); window.removeEventListener(‘touchmove’, onTouchMove); window.removeEventListener(‘touchend’, stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘mousemove’, onMouseMove); window.addEventListener(‘mouseup’, stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, { passive: false }); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener(‘touchstart’, function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = ‘none’; } else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute(‘srcset’); fgImage.removeAttribute(‘sizes’); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute(‘srcset’); bgImage.removeAttribute(‘sizes’); } }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); }); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) { item.classList.remove(‘is-highlighted’); }); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute(‘aria-expanded’, ‘false’); }); if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) { setupWrapper(slide.querySelector(‘.fv-chart-wrapper’)); }); } } else { setupWrapper(root); } } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() { initialize(‘fv-chart-1779832390094-amoge5ivm’, false); }); } else { initialize(‘fv-chart-1779832390094-amoge5ivm’, false); } })();
AMD Radeon RX 9070 GRE thermals

It’s probably no surprise that a mid-range graphics card sporting a triple fan cooling array actually trends to the pretty chill, but that’s where we’re at with at least the Acer Nitro RX 9070 GRE I’ve been testing. There are no Made by AMD (MBA) cards for this generation, so all RDNA 4 GPUs are clothed in their manufacturer’s cooling shrouds, and you’re likely to be getting arrays designed for beefier cards slapped onto the RX 9070 GRE.
{ “@context”: ” “@type”: “Dataset”, “name”: “System performance”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T16:51:20.850Z”, “citation”: “The RX 9070 GRE uses the same coolers as the RX 9070/XT cards, with more power-hungry GPUs, the cooling noise and thermal load is impressively light.”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “RX 9070”, “RTX 5070”, “RTX 5060 Ti Palit Infinity 3”, “RX 9060 XT XFX 16 GB”, “Thermals”, “GPU frequency”, “Power”, “Performance per watt”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Thermals”, “value”: 67, “unitText”: “Peak temperature (°C)” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Thermals”, “value”: 79, “unitText”: “Peak temperature (°C)” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Thermals”, “value”: 57, “unitText”: “Peak temperature (°C)” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Thermals”, “value”: 57, “unitText”: “Peak temperature (°C)” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Thermals”, “value”: 62, “unitText”: “Peak temperature (°C)” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – GPU frequency”, “value”: 2687, “unitText”: “Average clock speed (MHz)” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – GPU frequency”, “value”: 2693, “unitText”: “Average clock speed (MHz)” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – GPU frequency”, “value”: 2849, “unitText”: “Average clock speed (MHz)” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – GPU frequency”, “value”: 2349, “unitText”: “Average clock speed (MHz)” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – GPU frequency”, “value”: 2674, “unitText”: “Average clock speed (MHz)” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Power”, “value”: 207, “unitText”: “Peak power (watts)” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Power”, “value”: 284, “unitText”: “Peak power (watts)” }, { “@type”: “PropertyValue”, “name”: “RX 9060 XT | 16 GB – Power”, “value”: 182, “unitText”: “Peak power (watts)” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Power”, “value”: 270, “unitText”: “Peak power (watts)” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Power”, “value”: 287, “unitText”: “Peak power (watts)” }, { “@type”: “PropertyValue”, “name”: “RTX 5060 Ti | 16 GB – Performance per watt”, “value”: 0.23, “unitText”: “4K frames per J” }, { “@type”: “PropertyValue”, “name”: “RTX 5070 | 12 GB – Performance per watt”, “value”: 0.24, “unitText”: “4K frames per J” }, { “@type”: “PropertyValue”, “name”: “RX 9070 | 16 GB – Performance per watt”, “value”: 0.26, “unitText”: “4K frames per J” }, { “@type”: “PropertyValue”, “name”: “RX 9070 GRE | 12 GB – Performance per watt”, “value”: 0.22, “unitText”: “4K frames per J” } ]}
System performance
Peak temperature (°C)
Average temperature (°C)
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 62 Peak temperature (°C), 59 Average temperature (°C) |
| RX 9070 | 16 GB | 57 Peak temperature (°C), 55 Average temperature (°C) |
| RTX 5070 | 12 GB | 79 Peak temperature (°C), 76 Average temperature (°C) |
| RTX 5060 Ti | 16 GB | 67 Peak temperature (°C), 65 Average temperature (°C) |
| RX 9060 XT | 16 GB | 57 Peak temperature (°C), 48 Average temperature (°C) |
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 2674 |
| RX 9070 | 16 GB | 2349 |
| RTX 5070 | 12 GB | 2693 |
| RTX 5060 Ti | 16 GB | 2687 |
| RX 9060 XT | 16 GB | 2849 |
Peak power (watts)
Average power (watts)
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 287 Peak power (watts), 244 Average power (watts) |
| RX 9070 | 16 GB | 270 Peak power (watts), 248 Average power (watts) |
| RTX 5070 | 12 GB | 284 Peak power (watts), 251 Average power (watts) |
| RTX 5060 Ti | 16 GB | 207 Peak power (watts), 182 Average power (watts) |
| RX 9060 XT | 16 GB | 182 Peak power (watts), 146 Average power (watts) |
4K frames per J
1080p frame per J
| Product | Value |
|---|---|
| RX 9070 GRE | 12 GB | 0.22 4K frames per J, 0.53 1080p frame per J |
| RX 9070 | 16 GB | 0.26 4K frames per J, 0.6 1080p frame per J |
| RTX 5070 | 12 GB | 0.24 4K frames per J, 0.61 1080p frame per J |
| RTX 5060 Ti | 16 GB | 0.23 4K frames per J, 0.62 1080p frame per J |
| RX 9060 XT | 16 GB | N/A |
window.iFrameResizer = { heightCalculationMethod: ‘taggedElement’ }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, baseMargin + ‘%’, ‘important’); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, targetMargin + ‘%’, ‘important’); } }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = ‘stroke-dashoffset 1s ease-out ‘ + (i * 0.1) + ‘s, stroke-width 0.2s, opacity 0.2s’; p.style.strokeDashoffset=”0″; }, 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() { dot.style.transition = ‘opacity 0.3s ease’; dot.style.opacity = ‘1’; }, 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) { animateLineChart(chart); } else if (chartType !== ‘Pie’) { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) { var diff = Math.round(((leftNum – rightNum) / rightNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) { var diff = Math.round(((rightNum – leftNum) / leftNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === ‘left’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === ‘right’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty(‘–target-width’, leftWidth + ‘%’); leftBar.style.width = leftWidth + ‘%’; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty(‘–target-width’, rightWidth + ‘%’); rightBar.style.width = rightWidth + ‘%’; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ‘ (‘ + unit + ‘)’ : ”); } }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute(‘data-title’) || ”); }); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) { /* Line chart animations if needed */ } else if (cType !== ‘Pie’) { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) { chartWrapper.classList.add(‘labels-on-top’); } else { chartWrapper.classList.remove(‘labels-on-top’); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = ‘block’; if (bottomBarEl) bottomBarEl.style.display = ‘flex’; } else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = ‘none’; } } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex – 1); }); if (nextBtn) nextBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { inner.style.setProperty(‘transform’, ‘translate(‘ + panX + ‘px, ‘ + panY + ‘px) scale(‘ + scale + ‘)’, ‘important’); } else { inner.style.removeProperty(‘transform’); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); /* Max pan depends on how much the image is scaled beyond the wrapper */ var maxPanX = Math.max(0, (rect.width * scale – rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale – rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener(‘wheel’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX – rect.left – rect.width / 2; var mouseY = e.clientY – rect.top – rect.height / 2; var ratio = newScale / scale; panX = mouseX – (mouseX – panX) * ratio; panY = mouseY – (mouseY – panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() { isPanning = false; }); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; hasPanned = true; /* Prevent click after pinch */ } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest(‘.fv-image-compare-slider’) || e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX – lastCenterX); panY += (centerY – lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) { labelRight.style.setProperty(‘opacity’, ‘0’, ‘important’); } else { labelRight.style.setProperty(‘opacity’, ‘1’, ‘important’); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener(‘mousemove’, onMouseMove); window.removeEventListener(‘mouseup’, stopDragging); window.removeEventListener(‘touchmove’, onTouchMove); window.removeEventListener(‘touchend’, stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘mousemove’, onMouseMove); window.addEventListener(‘mouseup’, stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, { passive: false }); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener(‘touchstart’, function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = ‘none’; } else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute(‘srcset’); fgImage.removeAttribute(‘sizes’); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute(‘srcset’); bgImage.removeAttribute(‘sizes’); } }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); }); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) { item.classList.remove(‘is-highlighted’); }); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute(‘aria-expanded’, ‘false’); }); if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) { setupWrapper(slide.querySelector(‘.fv-chart-wrapper’)); }); } } else { setupWrapper(root); } } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() { initialize(‘fv-chart-1779814280850-sfyjmq3av’, false); }); } else { initialize(‘fv-chart-1779814280850-sfyjmq3av’, false); } })();
From what I can tell, without having the cards cheek-by-jowl, this Acer GRE is using the exact same Frostblade 4.0 cooler as its RX 9070 XT stablemate, and I’ve tested at a solid ~60°C when under load. That makes it cooler than the similarly triple-fanned Palit RTX 5060 Ti we’ve tested, and waaaaaay cooler than the Founders Edition RTX 5070.
And that’s true whether you indulge in undervolting or not. I actually found it running a teensy bit more frosty when I’d pulled back the power, even though the GPU is generally running at over 300 MHz faster than at stock levels.
{ “@context”: ” “@type”: “Dataset”, “name”: “Chillers built for better GPUs means cool GPUs”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T21:54:44.643Z”, “citation”: “Add your caption to explain the data, the learnings and the key takeaways of the data being visualized”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “Thermals”, “Group 1”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RX 9070 GRE (Acer Nitro) – Thermals”, “value”: 4.5, “unitText”: “”, “maxValue”: 5 } ]}
Chillers built for better GPUs means cool GPUs
| Product | Thermals () |
|---|---|
| RX 9070 GRE (Acer Nitro) | 4.5 |
window.iFrameResizer = { heightCalculationMethod: ‘taggedElement’ }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, baseMargin + ‘%’, ‘important’); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, targetMargin + ‘%’, ‘important’); } }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = ‘stroke-dashoffset 1s ease-out ‘ + (i * 0.1) + ‘s, stroke-width 0.2s, opacity 0.2s’; p.style.strokeDashoffset=”0″; }, 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() { dot.style.transition = ‘opacity 0.3s ease’; dot.style.opacity = ‘1’; }, 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) { animateLineChart(chart); } else if (chartType !== ‘Pie’) { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) { var diff = Math.round(((leftNum – rightNum) / rightNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) { var diff = Math.round(((rightNum – leftNum) / leftNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === ‘left’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === ‘right’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty(‘–target-width’, leftWidth + ‘%’); leftBar.style.width = leftWidth + ‘%’; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty(‘–target-width’, rightWidth + ‘%’); rightBar.style.width = rightWidth + ‘%’; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ‘ (‘ + unit + ‘)’ : ”); } }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute(‘data-title’) || ”); }); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) { /* Line chart animations if needed */ } else if (cType !== ‘Pie’) { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) { chartWrapper.classList.add(‘labels-on-top’); } else { chartWrapper.classList.remove(‘labels-on-top’); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = ‘block’; if (bottomBarEl) bottomBarEl.style.display = ‘flex’; } else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = ‘none’; } } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex – 1); }); if (nextBtn) nextBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { inner.style.setProperty(‘transform’, ‘translate(‘ + panX + ‘px, ‘ + panY + ‘px) scale(‘ + scale + ‘)’, ‘important’); } else { inner.style.removeProperty(‘transform’); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); /* Max pan depends on how much the image is scaled beyond the wrapper */ var maxPanX = Math.max(0, (rect.width * scale – rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale – rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener(‘wheel’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX – rect.left – rect.width / 2; var mouseY = e.clientY – rect.top – rect.height / 2; var ratio = newScale / scale; panX = mouseX – (mouseX – panX) * ratio; panY = mouseY – (mouseY – panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() { isPanning = false; }); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; hasPanned = true; /* Prevent click after pinch */ } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest(‘.fv-image-compare-slider’) || e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX – lastCenterX); panY += (centerY – lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) { labelRight.style.setProperty(‘opacity’, ‘0’, ‘important’); } else { labelRight.style.setProperty(‘opacity’, ‘1’, ‘important’); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener(‘mousemove’, onMouseMove); window.removeEventListener(‘mouseup’, stopDragging); window.removeEventListener(‘touchmove’, onTouchMove); window.removeEventListener(‘touchend’, stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘mousemove’, onMouseMove); window.addEventListener(‘mouseup’, stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, { passive: false }); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener(‘touchstart’, function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = ‘none’; } else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute(‘srcset’); fgImage.removeAttribute(‘sizes’); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute(‘srcset’); bgImage.removeAttribute(‘sizes’); } }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); }); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) { item.classList.remove(‘is-highlighted’); }); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute(‘aria-expanded’, ‘false’); }); if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) { setupWrapper(slide.querySelector(‘.fv-chart-wrapper’)); }); } } else { setupWrapper(root); } } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() { initialize(‘fv-chart-1779832484642-wst2orehw’, false); }); } else { initialize(‘fv-chart-1779832484642-wst2orehw’, false); } })();
AMD Radeon RX 9070 GRE sound

I have found only the tiniest smattering of coil whine. That’s something I regularly listen out for with AMD GPUs, and in this generation with Nvidia cards, too. But, with the RX 9070 GRE I’ve been testing, I’m only detecting the very occasional electrical fizz when the frame rate in a settings screen spikes to ludicrous levels—in games I never heard the power componentry sing its siren song.
The actual fan noise is blessedly relaxed, too. The GPU may be running cool, but it’s not because Acer has tuned those three fans to run at turbine settings. Even under sustained load, and even with the card sitting in an open test rig right next to me, the fan noise never got to a distracting level at all.
It will sound different in a closed PC case, though there should also be moving air around and/or across the GPU to help shift that hot air, too.
{ “@context”: ” “@type”: “Dataset”, “name”: “Cool also means quiet”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T21:55:23.671Z”, “citation”: “Add your caption to explain the data, the learnings and the key takeaways of the data being visualized”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “Sound”, “Group 1”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RX 9070 GRE (Acer Nitro) – Sound”, “value”: 4.5, “unitText”: “”, “maxValue”: 5 } ]}
Cool also means quiet
| Product | Sound () |
|---|---|
| RX 9070 GRE (Acer Nitro) | 4.5 |
window.iFrameResizer = { heightCalculationMethod: ‘taggedElement’ }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, baseMargin + ‘%’, ‘important’); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, targetMargin + ‘%’, ‘important’); } }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = ‘stroke-dashoffset 1s ease-out ‘ + (i * 0.1) + ‘s, stroke-width 0.2s, opacity 0.2s’; p.style.strokeDashoffset=”0″; }, 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() { dot.style.transition = ‘opacity 0.3s ease’; dot.style.opacity = ‘1’; }, 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) { animateLineChart(chart); } else if (chartType !== ‘Pie’) { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) { var diff = Math.round(((leftNum – rightNum) / rightNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) { var diff = Math.round(((rightNum – leftNum) / leftNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === ‘left’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === ‘right’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty(‘–target-width’, leftWidth + ‘%’); leftBar.style.width = leftWidth + ‘%’; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty(‘–target-width’, rightWidth + ‘%’); rightBar.style.width = rightWidth + ‘%’; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ‘ (‘ + unit + ‘)’ : ”); } }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute(‘data-title’) || ”); }); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) { /* Line chart animations if needed */ } else if (cType !== ‘Pie’) { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) { chartWrapper.classList.add(‘labels-on-top’); } else { chartWrapper.classList.remove(‘labels-on-top’); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = ‘block’; if (bottomBarEl) bottomBarEl.style.display = ‘flex’; } else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = ‘none’; } } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex – 1); }); if (nextBtn) nextBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { inner.style.setProperty(‘transform’, ‘translate(‘ + panX + ‘px, ‘ + panY + ‘px) scale(‘ + scale + ‘)’, ‘important’); } else { inner.style.removeProperty(‘transform’); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); /* Max pan depends on how much the image is scaled beyond the wrapper */ var maxPanX = Math.max(0, (rect.width * scale – rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale – rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener(‘wheel’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX – rect.left – rect.width / 2; var mouseY = e.clientY – rect.top – rect.height / 2; var ratio = newScale / scale; panX = mouseX – (mouseX – panX) * ratio; panY = mouseY – (mouseY – panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() { isPanning = false; }); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; hasPanned = true; /* Prevent click after pinch */ } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest(‘.fv-image-compare-slider’) || e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX – lastCenterX); panY += (centerY – lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) { labelRight.style.setProperty(‘opacity’, ‘0’, ‘important’); } else { labelRight.style.setProperty(‘opacity’, ‘1’, ‘important’); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener(‘mousemove’, onMouseMove); window.removeEventListener(‘mouseup’, stopDragging); window.removeEventListener(‘touchmove’, onTouchMove); window.removeEventListener(‘touchend’, stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘mousemove’, onMouseMove); window.addEventListener(‘mouseup’, stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, { passive: false }); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener(‘touchstart’, function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = ‘none’; } else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute(‘srcset’); fgImage.removeAttribute(‘sizes’); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute(‘srcset’); bgImage.removeAttribute(‘sizes’); } }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); }); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) { item.classList.remove(‘is-highlighted’); }); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute(‘aria-expanded’, ‘false’); }); if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) { setupWrapper(slide.querySelector(‘.fv-chart-wrapper’)); }); } } else { setupWrapper(root); } } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() { initialize(‘fv-chart-1779832523670-vg5y6xkwe’, false); }); } else { initialize(‘fv-chart-1779832523670-vg5y6xkwe’, false); } })();
AMD Radeon RX 9070 GRE value

This is what’s going to make or break the AMD RX 9070 GRE: its true value once released into the wild. That goes beyond just the initial MSRP quoted by AMD, and has everything to do with what the retailers and manufacturers end up charging PC gamers in the real world. This is the issue we had around the other Navi 48-powered graphics cards, where we were given MSRP numbers that melted away scant hours after the cards launched.
It’s potentially harder for that to happen in the current environment. With the RX 9070 GRE given a $549 starting price, and the RX 9070 currently available for $600, there isn’t a lot of wiggle room for perfidious retailers to spike the price unnecessarily. As soon as you get start to eat into that $50 price delta the smart money will surely switch to the faster 16 GB card.
But, while the GPU market has plateaued in terms of pricing over the past few months—albeit at disappointingly higher levels than the tail end of 2025—that’s no guarantee the current status quo will be preserved. There have been a few rumblings recently that the prices of AMD cards are going to get bumped in the near future, putting them back alongside their Nvidia competitors, and if that happens then the GRE’s $549-$600 price tag might look ever more tantalising.
I will reiterate that the notion of value is a tough one here, considering that its $549 price tag is the same as the RX 9070, but then I think we’ve all had to readjust our pricing perceptions in the face of the RAMpocalypse and its fallout. Time will tell how well the RX 9070 GRE is able to hold to its MSRP. History would tell us that it’s not going to be easy.
{ “@context”: ” “@type”: “Dataset”, “name”: “The value prop could evaporate quickly”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T21:56:18.932Z”, “citation”: “Add your caption to explain the data, the learnings and the key takeaways of the data being visualized”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “Value”, “Group 1”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RX 9070 GRE (Acer Nitro) – Value”, “value”: 3, “unitText”: “”, “maxValue”: 5 } ]}
The value prop could evaporate quickly
| Product | Value () |
|---|---|
| RX 9070 GRE (Acer Nitro) | 3 |
window.iFrameResizer = { heightCalculationMethod: ‘taggedElement’ }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, baseMargin + ‘%’, ‘important’); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, targetMargin + ‘%’, ‘important’); } }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = ‘stroke-dashoffset 1s ease-out ‘ + (i * 0.1) + ‘s, stroke-width 0.2s, opacity 0.2s’; p.style.strokeDashoffset=”0″; }, 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() { dot.style.transition = ‘opacity 0.3s ease’; dot.style.opacity = ‘1’; }, 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) { animateLineChart(chart); } else if (chartType !== ‘Pie’) { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) { var diff = Math.round(((leftNum – rightNum) / rightNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) { var diff = Math.round(((rightNum – leftNum) / leftNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === ‘left’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === ‘right’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty(‘–target-width’, leftWidth + ‘%’); leftBar.style.width = leftWidth + ‘%’; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty(‘–target-width’, rightWidth + ‘%’); rightBar.style.width = rightWidth + ‘%’; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ‘ (‘ + unit + ‘)’ : ”); } }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute(‘data-title’) || ”); }); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) { /* Line chart animations if needed */ } else if (cType !== ‘Pie’) { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) { chartWrapper.classList.add(‘labels-on-top’); } else { chartWrapper.classList.remove(‘labels-on-top’); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = ‘block’; if (bottomBarEl) bottomBarEl.style.display = ‘flex’; } else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = ‘none’; } } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex – 1); }); if (nextBtn) nextBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { inner.style.setProperty(‘transform’, ‘translate(‘ + panX + ‘px, ‘ + panY + ‘px) scale(‘ + scale + ‘)’, ‘important’); } else { inner.style.removeProperty(‘transform’); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); /* Max pan depends on how much the image is scaled beyond the wrapper */ var maxPanX = Math.max(0, (rect.width * scale – rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale – rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener(‘wheel’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX – rect.left – rect.width / 2; var mouseY = e.clientY – rect.top – rect.height / 2; var ratio = newScale / scale; panX = mouseX – (mouseX – panX) * ratio; panY = mouseY – (mouseY – panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() { isPanning = false; }); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; hasPanned = true; /* Prevent click after pinch */ } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest(‘.fv-image-compare-slider’) || e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX – lastCenterX); panY += (centerY – lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) { labelRight.style.setProperty(‘opacity’, ‘0’, ‘important’); } else { labelRight.style.setProperty(‘opacity’, ‘1’, ‘important’); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener(‘mousemove’, onMouseMove); window.removeEventListener(‘mouseup’, stopDragging); window.removeEventListener(‘touchmove’, onTouchMove); window.removeEventListener(‘touchend’, stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘mousemove’, onMouseMove); window.addEventListener(‘mouseup’, stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, { passive: false }); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener(‘touchstart’, function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = ‘none’; } else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute(‘srcset’); fgImage.removeAttribute(‘sizes’); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute(‘srcset’); bgImage.removeAttribute(‘sizes’); } }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); }); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) { item.classList.remove(‘is-highlighted’); }); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute(‘aria-expanded’, ‘false’); }); if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) { setupWrapper(slide.querySelector(‘.fv-chart-wrapper’)); }); } } else { setupWrapper(root); } } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() { initialize(‘fv-chart-1779832578932-vqkbqnxc3’, false); }); } else { initialize(‘fv-chart-1779832578932-vqkbqnxc3’, false); } })();
AMD Radeon RX 9070 GRE software

Acer has its own Intelligent Space application you can use in conjunction with your Nitro card that will offer up some AI tools you can use with your hardware and potentially suggest performance tweaks, but if I’m honest I really wouldn’t bother. AMD’s own Adrenalin software is good enough to do all the GPU tweaking you could want.
And hey, if you want some AI shenanigans you can also download a 34 GB AMD AI Bundle along with your drivers. If you want to do some local AI things, you’re getting tools such as ComfyUI, Ollama, and LM Studio. They’re good ways to get the most out of your local hardware in an AI sense if you want to get away from the token drains of cloud AI.
But let’s go back to Adrenalin, because AMD’s driver software is way better than the old days, though is not without its quirks. I still get frustrated by the fact the Adrenalin software’s shortcuts have a tendency to tread all over existing app’s own shortcuts, such as Photoshop and Google Docs, and that the UI isn’t the most intuitive to navigate. But it’s still functional, and when it comes to tweaking your GPU I’ve been more than happy to do all of my undervolting with the RX 9070 GRE via Adrenalin alone.
You’re also getting a good data overlay in the Adrenalin software, which you can enable via those troubling shortcuts or inside the software itself. That allows you to see exactly what’s going on with your CPU and GPU to help you troubleshoot any issues you feel you might be having with your system.
{ “@context”: ” “@type”: “Dataset”, “name”: “Adrenalin is ace now, and so is FSR4”, “description”: “Subhead to describe the test and what’s being measured and why”, “creator”: { “@type”: “Organization”, “name”: “PC Gamer”, “logo”: ” }, “isAccessibleForFree”: true, “dateCreated”: “2026-05-26T21:57:01.247Z”, “citation”: “Add your caption to explain the data, the learnings and the key takeaways of the data being visualized”, “keywords”: [ “RX 9070 GRE (Acer Nitro)”, “Software”, “Group 1”, “benchmark”, “comparison”, “performance”, “review”, “PC Gamer” ], “measurementTechnique”: “Performance Benchmarking”, “variableMeasured”: [ { “@type”: “PropertyValue”, “name”: “RX 9070 GRE (Acer Nitro) – Software”, “value”: 4, “unitText”: “”, “maxValue”: 5 } ]}
Adrenalin is ace now, and so is FSR4
| Product | Software () |
|---|---|
| RX 9070 GRE (Acer Nitro) | 4 |
window.iFrameResizer = { heightCalculationMethod: ‘taggedElement’ }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll(‘.fv-bar, .fv-stacked-segment’); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty(‘width’, ‘0%’, ‘important’); bar.style.setProperty(‘transition’, ‘none’, ‘important’); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, baseMargin + ‘%’, ‘important’); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ‘, margin-left 0.8s ease-out’ : ”; bar.style.setProperty(‘transition’, ‘opacity 0.2s ease, width 0.8s ease-out’ + marginTransition, ‘important’); bar.style.setProperty(‘width’, targetWidth + ‘%’, ‘important’); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty(‘margin-left’, targetMargin + ‘%’, ‘important’); } }, index * 50 + 50); /* Reduced initial delay */ }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector(‘svg’); if (!lineSvg) return; var paths = lineSvg.querySelectorAll(‘.riv-line-path’); paths.forEach(function(p, i) { if (typeof p.getTotalLength === ‘function’) { var len = p.getTotalLength(); p.style.transition = ‘none’; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = ‘stroke-dashoffset 1s ease-out ‘ + (i * 0.1) + ‘s, stroke-width 0.2s, opacity 0.2s’; p.style.strokeDashoffset=”0″; }, 100); } }); var dots = lineSvg.querySelectorAll(‘.riv-dot’); dots.forEach(function(dot, i) { dot.style.opacity = ‘0’; setTimeout(function() { dot.style.transition = ‘opacity 0.3s ease’; dot.style.opacity = ‘1’; }, 500 + i * 10); }); } /* Execute */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === ‘none’) return; var chartType = chart.dataset.chartType; if (chartType === ‘Line’) { animateLineChart(chart); } else if (chartType !== ‘Pie’) { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, ‘root’ will be null because the container has ‘-slideshow’ suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width rightNum) { winner=”left”; if (rightNum > 0) { var diff = Math.round(((leftNum – rightNum) / rightNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } else if (rightNum > leftNum) { winner=”right”; if (leftNum > 0) { var diff = Math.round(((rightNum – leftNum) / leftNum) * 100); pctDiffStr=”+” + diff.toLocaleString() + ‘%’; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : ‘-‘)); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : ‘-‘)); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ”; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector(‘.fv-versus-bar-left’); var rightBar = row.querySelector(‘.fv-versus-bar-right’); var leftText = row.querySelector(‘.fv-inside-left’); var rightText = row.querySelector(‘.fv-inside-right’); var labelText = row.querySelector(‘.fv-versus-label span’); var leftWrapper = row.querySelector(‘.fv-versus-bar-left-wrapper’); var rightWrapper = row.querySelector(‘.fv-versus-bar-right-wrapper’); var existingPctDiffs = row.querySelectorAll(‘.fv-versus-pct-diff’); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === ‘left’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === ‘right’ && pctDiffStr) { var pctSpan = document.createElement(‘span’); pctSpan.className=”fv-versus-pct-diff”; pctSpan.style.color=”rgba(255, 255, 255, 0.9)”; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty(‘–target-width’, leftWidth + ‘%’); leftBar.style.width = leftWidth + ‘%’; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty(‘–target-width’, rightWidth + ‘%’); rightBar.style.width = rightWidth + ‘%’; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ‘ (‘ + unit + ‘)’ : ”); } }); } if (leftSelect) leftSelect.addEventListener(‘change’, updateVersusChart); if (rightSelect) rightSelect.addEventListener(‘change’, updateVersusChart); }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll(‘.fv-chart-item’); var dropdown = chartWrapper.querySelector(‘.fv-dropdown-title’); var prevBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.prev’); var nextBtn = chartWrapper.querySelector(‘.fv-carousel-nav-btn.next’); var carouselTitle = chartWrapper.querySelector(‘.fv-carousel-title-controls .fv-benchmark-title’); var counter = chartWrapper.querySelector(‘.fv-carousel-counter’); /* Text Elements */ var subheadEl = chartWrapper.querySelector(‘.fv-chart-subhead’); var captionEl = chartWrapper.querySelector(‘.rv-chart-caption’); var footerContentEl = chartWrapper.querySelector(‘.fv-footer-content’); var bottomBarEl = chartWrapper.querySelector(‘.fv-bottom-bar’); var logoEl = chartWrapper.querySelector(‘.fv-logo’); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute(‘data-title’) || ”); }); } function showInternalChart(index) { if (index = charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? ‘block’ : ‘none’; if (i === index) { var cType = c.dataset.chartType; if (cType === ‘Line’) { /* Line chart animations if needed */ } else if (cType !== ‘Pie’) { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === ‘true’; if (labelsOnTop && (cType === ‘Bar’ || cType === ‘Stacked Bar’ || cType === ‘Versus’)) { chartWrapper.classList.add(‘labels-on-top’); } else { chartWrapper.classList.remove(‘labels-on-top’); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ‘ of ‘ + charts.length; /* Update Subhead and Caption */ var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute(‘data-subhead’); var newCaption = activeChart.getAttribute(‘data-caption’); var currentChartType = activeChart.getAttribute(‘data-chart-type’); var hideGlobalCaption = currentChartType === ‘Countdown’ || currentChartType === ‘Image Comparison’ || currentChartType === ‘Shop the Collection’; if (subheadEl) subheadEl.textContent = newSubhead || ”; if (captionEl) captionEl.textContent = newCaption || ”; if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = ‘block’; if (bottomBarEl) bottomBarEl.style.display = ‘flex’; } else { footerContentEl.style.display = ‘none’; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = ‘none’; } } } } } if (dropdown) dropdown.addEventListener(‘change’, function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex – 1); }); if (nextBtn) nextBtn.addEventListener(‘click’, function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll(‘.fv-image-compare-wrapper’); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector(‘.fv-image-compare-inner’) || wrapper; var slider = wrapper.querySelector(‘.fv-image-compare-slider’); var fgImage = wrapper.querySelector(‘.fv-image-compare-fg’); var bgImage = wrapper.querySelector(‘.fv-image-compare-bg’); var labelLeft = wrapper.querySelector(‘.fv-image-compare-label-left’); var labelRight = wrapper.querySelector(‘.fv-image-compare-label-right’); var isDragging = false; /* Zoom state */ var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { inner.style.setProperty(‘transform’, ‘translate(‘ + panX + ‘px, ‘ + panY + ‘px) scale(‘ + scale + ‘)’, ‘important’); } else { inner.style.removeProperty(‘transform’); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); /* Max pan depends on how much the image is scaled beyond the wrapper */ var maxPanX = Math.max(0, (rect.width * scale – rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale – rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener(‘wheel’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX – rect.left – rect.width / 2; var mouseY = e.clientY – rect.top – rect.height / 2; var ratio = newScale / scale; panX = mouseX – (mouseX – panX) * ratio; panY = mouseY – (mouseY – panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener(‘mousedown’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’) || scale 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener(‘mouseup’, function() { isPanning = false; }); wrapper.addEventListener(‘touchstart’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; hasPanned = true; /* Prevent click after pinch */ } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest(‘.fv-image-compare-slider’) || e.target.closest(‘button’)) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener(‘touchmove’, function(e) { if (!wrapper.classList.contains(‘fv-image-compare-fullscreen’)) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX – e.touches[1].clientX; var dy = e.touches[0].clientY – e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 – rect.left – rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 – rect.top – rect.height / 2; var ratio = newScale / scale; panX = centerX – (centerX – panX) * ratio; panY = centerY – (centerY – panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX – lastCenterX); panY += (centerY – lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX – lastClientX; var dy = e.touches[0].clientY – lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener(‘touchend’, function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX – rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent 90) { labelRight.style.setProperty(‘opacity’, ‘0’, ‘important’); } else { labelRight.style.setProperty(‘opacity’, ‘1’, ‘important’); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener(‘mousemove’, onMouseMove); window.removeEventListener(‘mouseup’, stopDragging); window.removeEventListener(‘touchmove’, onTouchMove); window.removeEventListener(‘touchend’, stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘mousemove’, onMouseMove); window.addEventListener(‘mouseup’, stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener(‘touchmove’, onTouchMove, { passive: false }); window.addEventListener(‘touchend’, stopDragging); }; slider.addEventListener(‘mousedown’, function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener(‘touchstart’, function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } /* Expand/Close Logic */ var expandBtn = wrapper.querySelector(‘.fv-image-compare-expand-btn’); var closeBtn = wrapper.querySelector(‘.fv-image-compare-close-btn’); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = ‘none’; } else { expandBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add(‘fv-image-compare-fullscreen’); document.body.style.overflow = ‘hidden’; /* Load high-res images if available */ if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute(‘srcset’); fgImage.removeAttribute(‘sizes’); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute(‘srcset’); bgImage.removeAttribute(‘sizes’); } }); } } if (closeBtn) { closeBtn.addEventListener(‘click’, function(e) { /* e.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); }); } /* Close on Escape */ document.addEventListener(‘keydown’, function(e) { if (e.key === ‘Escape’ && wrapper.classList.contains(‘fv-image-compare-fullscreen’)) { wrapper.classList.remove(‘fv-image-compare-fullscreen’); document.body.style.overflow = ”; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll(‘.fv-stl-hotspot-btn’); var allProductsModal = chartWrapper.querySelector(‘.fv-stl-all-products-modal’); var shopAllBtn = chartWrapper.querySelector(‘.fv-stl-shop-all-btn’); var allProductsList = chartWrapper.querySelector(‘.fv-stl-all-products-list’); var stlContainer = chartWrapper.querySelector(‘.fv-stl-container’); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove(‘is-active’); /* Remove highlights */ var items = allProductsModal.querySelectorAll(‘.fv-stl-all-products-item’); items.forEach(function(item) { item.classList.remove(‘is-highlighted’); }); /* Remove min-height after transition */ if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains(‘is-active’)) { stlContainer.style.minHeight=””; if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute(‘aria-expanded’, ‘false’); }); if (‘parentIFrame’ in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener(‘click’, function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute(‘data-hotspot-id’); var isExpanded = btn.getAttribute(‘aria-expanded’) === ‘true’; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute(‘aria-expanded’, ‘true’); allProductsModal.classList.add(‘is-active’); /* Ensure container is tall enough */ var container = btn.closest(‘.fv-stl-container’); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight = iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if(targetBtn.classList.contains(‘is-active’)) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener(‘click’, function(e) { if (!e.target.closest(‘.fv-ia-node-button’) && !e.target.closest(‘.fv-ia-explore-btn’)) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ window.fvAnimateCharts(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector(‘.fv-countdown-container’); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute(‘data-target-date’); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var primaryColor = countdownContainer.getAttribute(‘data-primary-color’) || ‘#f97316’; var subheadColor = countdownContainer.getAttribute(‘data-subhead-color’) || ‘#ffffff’; var pad = function(n) { return (n 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector(‘[data-time=”days”]’); var hoursEl = countdownContainer.querySelector(‘[data-time=”hours”]’); var minsEl = countdownContainer.querySelector(‘[data-time=”minutes”]’); var secsEl = countdownContainer.querySelector(‘[data-time=”seconds”]’); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + ‘-slideshow’); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll(‘.fv-slide’); slides.forEach(function(slide) { setupWrapper(slide.querySelector(‘.fv-chart-wrapper’)); }); } } else { setupWrapper(root); } } if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, function() { initialize(‘fv-chart-1779832621246-gpy1nppxa’, false); }); } else { initialize(‘fv-chart-1779832621246-gpy1nppxa’, false); } })();