OSDN Git Service

gl2_yuvtex: use the gralloc-provided stride.
authorJamie Gennis <jgennis@google.com>
Thu, 10 Mar 2011 22:49:00 +0000 (14:49 -0800)
committerAndroid Git Automerger <android-git-automerger@android.com>
Mon, 14 Mar 2011 22:21:37 +0000 (15:21 -0700)
This change fixes the gl2_yuvtex test to use the stride chosen by the
gralloc implementation rather than hard-coding it.

Bug: 4081948
Change-Id: If7c96a20fc3fb1df2ff25e6afaa9f34dbad2002c

opengl/tests/gl2_yuvtex/gl2_yuvtex.cpp

index 602ea1a..f0b8d12 100644 (file)
@@ -186,11 +186,6 @@ const int yuvTexUsage = GraphicBuffer::USAGE_HW_TEXTURE |
         GraphicBuffer::USAGE_SW_WRITE_RARELY;
 const int yuvTexFormat = HAL_PIXEL_FORMAT_YV12;
 const int yuvTexOffsetY = 0;
-const int yuvTexStrideY = (yuvTexWidth + 0xf) & ~0xf;
-const int yuvTexOffsetV = yuvTexStrideY * yuvTexHeight;
-const int yuvTexStrideV = (yuvTexStrideY/2 + 0xf) & ~0xf; 
-const int yuvTexOffsetU = yuvTexOffsetV + yuvTexStrideV * yuvTexHeight/2;
-const int yuvTexStrideU = yuvTexStrideV;
 const bool yuvTexSameUV = false;
 static sp<GraphicBuffer> yuvTexBuffer;
 static GLuint yuvTex;
@@ -200,6 +195,11 @@ bool setupYuvTexSurface(EGLDisplay dpy, EGLContext context) {
     int blockHeight = yuvTexHeight > 16 ? yuvTexHeight / 16 : 1;
     yuvTexBuffer = new GraphicBuffer(yuvTexWidth, yuvTexHeight, yuvTexFormat,
             yuvTexUsage);
+    int yuvTexStrideY = yuvTexBuffer->getStride();
+    int yuvTexOffsetV = yuvTexStrideY * yuvTexHeight;
+    int yuvTexStrideV = (yuvTexStrideY/2 + 0xf) & ~0xf;
+    int yuvTexOffsetU = yuvTexOffsetV + yuvTexStrideV * yuvTexHeight/2;
+    int yuvTexStrideU = yuvTexStrideV;
     char* buf = NULL;
     status_t err = yuvTexBuffer->lock(GRALLOC_USAGE_SW_WRITE_OFTEN, (void**)(&buf));
     if (err != 0) {