Text archives Help
- From: sparker@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r1024 - in trunk: Engine/PixelSamplers Image
- Date: Sat, 29 Apr 2006 00:13:50 -0600 (MDT)
Author: sparker
Date: Sat Apr 29 00:13:49 2006
New Revision: 1024
Modified:
trunk/Engine/PixelSamplers/NullSampler.cc
trunk/Image/SimpleImage_special.cc
Log:
Minor optimization in SimpleImage SSE code
SSEify NullSampler (89 fps vs. 82 fps)
Modified: trunk/Engine/PixelSamplers/NullSampler.cc
==============================================================================
--- trunk/Engine/PixelSamplers/NullSampler.cc (original)
+++ trunk/Engine/PixelSamplers/NullSampler.cc Sat Apr 29 00:13:49 2006
@@ -2,6 +2,7 @@
#include <Engine/PixelSamplers/NullSampler.h>
#include <Core/Color/RGBColor.h>
#include <Interface/Fragment.h>
+#include <MantaSSE.h>
using namespace Manta;
@@ -32,6 +33,23 @@
void NullSampler::renderFragment(const RenderContext&, Fragment& fragment)
{
- for(int i=fragment.begin();i<fragment.end();i++)
- fragment.setColor(i, Color(RGBColor(0.3, 0.6, 0.9)));
+#if MANTA_SSE
+ if(((fragment.pixelBegin | fragment.pixelEnd) & 0xf) == 0){
+ __m128 r = _mm_set1_ps( 0.3 );
+ __m128 g = _mm_set1_ps( 0.6 );
+ __m128 b = _mm_set1_ps( 0.9 );
+ for(int i=fragment.pixelBegin; i < fragment.pixelEnd; i+=4){
+ _mm_store_ps(&fragment.color[0][i], r);
+ _mm_store_ps(&fragment.color[1][i], g);
+ _mm_store_ps(&fragment.color[2][i], b);
+ }
+ } else
+#endif /* MANTA_SSE */
+ {
+ for(int i=fragment.pixelBegin;i<fragment.pixelEnd;i++){
+ fragment.color[0][i] = 0.3;
+ fragment.color[1][i] = 0.6;
+ fragment.color[2][i] = 0.9;
+ }
+ }
}
Modified: trunk/Image/SimpleImage_special.cc
==============================================================================
--- trunk/Image/SimpleImage_special.cc (original)
+++ trunk/Image/SimpleImage_special.cc Sat Apr 29 00:13:49 2006
@@ -18,7 +18,8 @@
if(((fragment.pixelBegin | fragment.pixelEnd) & 0xf) == 0){
// Aligned for SSE
__m128 scale = _mm_set1_ps( 255.99999f );
- for(int i=fragment.begin(); i+3< fragment.end();i+=4){
+ int f = fragment.end()-3;
+ for(int i=fragment.begin(); i< f;i+=4){
__m128 r = _mm_load_ps(&fragment.color[0][i]);
__m128 g = _mm_load_ps(&fragment.color[1][i]);
__m128 b = _mm_load_ps(&fragment.color[2][i]);
- [MANTA] r1024 - in trunk: Engine/PixelSamplers Image, sparker, 04/29/2006
Archive powered by MHonArc 2.6.16.