Skip to content

Commit 97e9ee2

Browse files
author
Jason Sams
committed
Cleanup blur test, remove deprecated functions.
Change-Id: I4136110692fdba8a644806fe8c92bfaacc930ca6
1 parent 6704a48 commit 97e9ee2

File tree

5 files changed

+66
-169
lines changed

5 files changed

+66
-169
lines changed

tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Blur25.java

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ public class Blur25 extends TestBase {
3333

3434
private int MAX_RADIUS = 25;
3535
private ScriptC_threshold mScript;
36-
private ScriptC_vertical_blur mScriptVBlur;
37-
private ScriptC_horizontal_blur mScriptHBlur;
3836
private int mRadius = MAX_RADIUS;
3937
private float mSaturation = 1.0f;
4038
private Allocation mScratchPixelsAllocation1;
@@ -50,22 +48,17 @@ public boolean onBar1Setup(SeekBar b, TextView t) {
5048
b.setProgress(100);
5149
return true;
5250
}
53-
public boolean onBar2Setup(SeekBar b, TextView t) {
54-
b.setProgress(50);
55-
t.setText("Saturation");
56-
return true;
57-
}
5851

5952

6053
public void onBar1Changed(int progress) {
6154
float fRadius = progress / 100.0f;
6255
fRadius *= (float)(MAX_RADIUS);
6356
mRadius = (int)fRadius;
64-
mScript.set_radius(mRadius);
65-
}
66-
public void onBar2Changed(int progress) {
67-
mSaturation = (float)progress / 50.0f;
68-
mScriptVBlur.invoke_setSaturation(mSaturation);
57+
if (mUseIntrinsic) {
58+
mIntrinsic.setRadius(mRadius);
59+
} else {
60+
mScript.invoke_setRadius(mRadius);
61+
}
6962
}
7063

7164

@@ -75,7 +68,7 @@ public void createTest(android.content.res.Resources res) {
7568

7669
if (mUseIntrinsic) {
7770
mIntrinsic = ScriptIntrinsicBlur.create(mRS, Element.U8_4(mRS));
78-
mIntrinsic.setRadius(25.f);
71+
mIntrinsic.setRadius(MAX_RADIUS);
7972
mIntrinsic.setInput(mInPixelsAllocation);
8073
} else {
8174

@@ -85,47 +78,40 @@ public void createTest(android.content.res.Resources res) {
8578
mScratchPixelsAllocation1 = Allocation.createTyped(mRS, tb.create());
8679
mScratchPixelsAllocation2 = Allocation.createTyped(mRS, tb.create());
8780

88-
mScriptVBlur = new ScriptC_vertical_blur(mRS, res, R.raw.vertical_blur);
89-
mScriptHBlur = new ScriptC_horizontal_blur(mRS, res, R.raw.horizontal_blur);
90-
9181
mScript = new ScriptC_threshold(mRS, res, R.raw.threshold);
9282
mScript.set_width(width);
9383
mScript.set_height(height);
94-
mScript.set_radius(mRadius);
95-
96-
mScriptVBlur.invoke_setSaturation(mSaturation);
97-
98-
mScript.bind_InPixel(mInPixelsAllocation);
99-
mScript.bind_OutPixel(mOutPixelsAllocation);
100-
mScript.bind_ScratchPixel1(mScratchPixelsAllocation1);
101-
mScript.bind_ScratchPixel2(mScratchPixelsAllocation2);
84+
mScript.invoke_setRadius(MAX_RADIUS);
10285

103-
mScript.set_vBlurScript(mScriptVBlur);
104-
mScript.set_hBlurScript(mScriptHBlur);
86+
mScript.set_InPixel(mInPixelsAllocation);
87+
mScript.set_ScratchPixel1(mScratchPixelsAllocation1);
88+
mScript.set_ScratchPixel2(mScratchPixelsAllocation2);
10589
}
10690
}
10791

10892
public void runTest() {
10993
if (mUseIntrinsic) {
11094
mIntrinsic.forEach(mOutPixelsAllocation);
11195
} else {
112-
mScript.invoke_filter();
96+
mScript.forEach_copyIn(mInPixelsAllocation, mScratchPixelsAllocation1);
97+
mScript.forEach_horz(mScratchPixelsAllocation2);
98+
mScript.forEach_vert(mOutPixelsAllocation);
11399
}
114100
}
115101

116102
public void setupBenchmark() {
117103
if (mUseIntrinsic) {
118104
mIntrinsic.setRadius(MAX_RADIUS);
119105
} else {
120-
mScript.set_radius(MAX_RADIUS);
106+
mScript.invoke_setRadius(MAX_RADIUS);
121107
}
122108
}
123109

124110
public void exitBenchmark() {
125111
if (mUseIntrinsic) {
126112
mIntrinsic.setRadius(mRadius);
127113
} else {
128-
mScript.set_radius(mRadius);
114+
mScript.invoke_setRadius(mRadius);
129115
}
130116
}
131117
}

tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/horizontal_blur.rs

Lines changed: 0 additions & 28 deletions
This file was deleted.

tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ip.rsh

Lines changed: 0 additions & 15 deletions
This file was deleted.
Lines changed: 51 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
11
#pragma version(1)
2+
#pragma rs java_package_name(com.android.rs.image)
3+
#pragma rs_fp_relaxed
24

3-
#include "ip.rsh"
45

56
int height;
67
int width;
7-
int radius;
8+
static int radius;
89

9-
uchar4 * InPixel;
10-
uchar4 * OutPixel;
11-
float4 * ScratchPixel1;
12-
float4 * ScratchPixel2;
10+
rs_allocation InPixel;
11+
rs_allocation ScratchPixel1;
12+
rs_allocation ScratchPixel2;
1313

14-
rs_script vBlurScript;
15-
rs_script hBlurScript;
16-
17-
const int CMD_FINISHED = 1;
14+
const int MAX_RADIUS = 25;
1815

1916
// Store our coefficients here
2017
static float gaussian[MAX_RADIUS * 2 + 1];
2118

22-
23-
static void computeGaussianWeights() {
19+
void setRadius(int rad) {
20+
radius = rad;
2421
// Compute gaussian weights for the blur
2522
// e is the euler's number
2623
float e = 2.718281828459045f;
@@ -45,49 +42,65 @@ static void computeGaussianWeights() {
4542

4643
float normalizeFactor = 0.0f;
4744
float floatR = 0.0f;
48-
int r;
49-
for (r = -radius; r <= radius; r ++) {
45+
for (int r = -radius; r <= radius; r ++) {
5046
floatR = (float)r;
5147
gaussian[r + radius] = coeff1 * pow(e, floatR * floatR * coeff2);
5248
normalizeFactor += gaussian[r + radius];
5349
}
5450

5551
//Now we need to normalize the weights because all our coefficients need to add up to one
5652
normalizeFactor = 1.0f / normalizeFactor;
57-
for (r = -radius; r <= radius; r ++) {
53+
for (int r = -radius; r <= radius; r ++) {
5854
floatR = (float)r;
5955
gaussian[r + radius] *= normalizeFactor;
6056
}
6157
}
6258

59+
void copyIn(const uchar4 *in, float4 *out) {
60+
*out = convert_float4(*in);
61+
}
6362

64-
static void copyInput() {
65-
rs_allocation ain;
66-
ain = rsGetAllocation(InPixel);
67-
uint32_t dimx = rsAllocationGetDimX(ain);
68-
uint32_t dimy = rsAllocationGetDimY(ain);
69-
for (uint32_t y = 0; y < dimy; y++) {
70-
for (uint32_t x = 0; x < dimx; x++) {
71-
ScratchPixel1[x + y * dimx] = convert_float4(InPixel[x + y * dimx]);
63+
void vert(uchar4 *out, uint32_t x, uint32_t y) {
64+
float3 blurredPixel = 0;
65+
const float *gPtr = gaussian;
66+
if ((y > radius) && (y < (height - radius))) {
67+
for (int r = -radius; r <= radius; r ++) {
68+
const float4 *i = (const float4 *)rsGetElementAt(ScratchPixel2, x, y + r);
69+
blurredPixel += i->xyz * gPtr[0];
70+
gPtr++;
71+
}
72+
} else {
73+
for (int r = -radius; r <= radius; r ++) {
74+
int validH = rsClamp((int)y + r, (int)0, (int)(height - 1));
75+
const float4 *i = (const float4 *)rsGetElementAt(ScratchPixel2, x, validH);
76+
blurredPixel += i->xyz * gPtr[0];
77+
gPtr++;
7278
}
7379
}
74-
}
7580

76-
void filter() {
77-
copyInput();
78-
computeGaussianWeights();
79-
80-
FilterStruct fs;
81-
fs.gaussian = gaussian;
82-
fs.width = width;
83-
fs.height = height;
84-
fs.radius = radius;
81+
out->xyz = convert_uchar3(clamp(blurredPixel, 0.f, 255.f));
82+
out->w = 0xff;
83+
}
8584

86-
fs.ain = rsGetAllocation(ScratchPixel1);
87-
rsForEach(hBlurScript, fs.ain, rsGetAllocation(ScratchPixel2), &fs, sizeof(fs));
85+
void horz(float4 *out, uint32_t x, uint32_t y) {
86+
float3 blurredPixel = 0;
87+
const float *gPtr = gaussian;
88+
if ((x > radius) && (x < (width - radius))) {
89+
for (int r = -radius; r <= radius; r ++) {
90+
const float4 *i = (const float4 *)rsGetElementAt(ScratchPixel1, x + r, y);
91+
blurredPixel += i->xyz * gPtr[0];
92+
gPtr++;
93+
}
94+
} else {
95+
for (int r = -radius; r <= radius; r ++) {
96+
// Stepping left and right away from the pixel
97+
int validX = rsClamp((int)x + r, (int)0, (int)(width - 1));
98+
const float4 *i = (const float4 *)rsGetElementAt(ScratchPixel1, validX, y);
99+
blurredPixel += i->xyz * gPtr[0];
100+
gPtr++;
101+
}
102+
}
88103

89-
fs.ain = rsGetAllocation(ScratchPixel2);
90-
rsForEach(vBlurScript, fs.ain, rsGetAllocation(OutPixel), &fs, sizeof(fs));
91-
//rsSendToClientBlocking(CMD_FINISHED);
104+
out->xyz = blurredPixel;
92105
}
93106

tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vertical_blur.rs

Lines changed: 0 additions & 59 deletions
This file was deleted.

0 commit comments

Comments
 (0)