From fc88cd9396f2d519305f86f126f031675443c1b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 10 May 2006 14:48:38 +0000 Subject: [PATCH] * The Y/RGB and UV registers for the integer downscale factor are reverse to the usual order of other registers, so I mixed it up: vertical downscaling is now working as expected as well. * The downscaling factor was a tiny bit too low (one pixel from the view). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17414 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/graphics/intel_extreme/intel_extreme.h | 7 ++++--- src/add-ons/accelerants/intel_extreme/overlay.cpp | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/headers/private/graphics/intel_extreme/intel_extreme.h b/headers/private/graphics/intel_extreme/intel_extreme.h index b922e20645..b9e8cb8636 100644 --- a/headers/private/graphics/intel_extreme/intel_extreme.h +++ b/headers/private/graphics/intel_extreme/intel_extreme.h @@ -395,12 +395,13 @@ struct overlay_registers { uint32 _reserved21[10]; - // (0xa0) FASTHSCALE - fast horizontal downscale - uint16 horizontal_scale_rgb; + // (0xa0) FASTHSCALE - fast horizontal downscale (strangely enough, + // the next two registers switch the usual Y/RGB vs. UV order) uint16 horizontal_scale_uv; + uint16 horizontal_scale_rgb; // (0xa4) UVSCALEV - vertical downscale - uint16 vertical_scale_rgb; uint16 vertical_scale_uv; + uint16 vertical_scale_rgb; uint32 _reserved22[86]; diff --git a/src/add-ons/accelerants/intel_extreme/overlay.cpp b/src/add-ons/accelerants/intel_extreme/overlay.cpp index 1fdbae747e..e4af605fa2 100644 --- a/src/add-ons/accelerants/intel_extreme/overlay.cpp +++ b/src/add-ons/accelerants/intel_extreme/overlay.cpp @@ -562,8 +562,8 @@ intel_configure_overlay(overlay_token overlayToken, const overlay_buffer *buffer registers->window_width = right - left; registers->window_height = bottom - top; - uint32 horizontalScale = ((view->width - 1) << 12) / window->width; - uint32 verticalScale = ((view->height - 1) << 12) / window->height; + uint32 horizontalScale = (view->width << 12) / window->width; + uint32 verticalScale = (view->height << 12) / window->height; uint32 horizontalScaleUV = horizontalScale >> 1; uint32 verticalScaleUV = verticalScale >> 1; horizontalScale = horizontalScaleUV << 1;