現在、Android NDKとOpenGL ES 2.0を搭載したSamsung Galaxy SII(ARM Mali-400 MP)でGPGPUを行っています。そのためには、FBO経由でレンダリングされたテクスチャからミップマップを生成する必要があります。残念ながら、glGenerateMipmap()はデバイス上で非常に遅いようです。 512x512 RGBA8888テクスチャのミップマップを生成するには約90ミリ秒かかる。私はこの機能がはるかに速く(約2ミリ秒)動作する他のAndroidデバイスでも同じコードを試していたので、この減速は本当に困惑しています。私は何か間違っているか、ここで何かを逃していますARM Mali GPUを搭載したデバイスで動作するこのケースのサンプルコードを誰でも提供できますか?この問題は、ARMによってドライバーで修正されていglGenerateMipmap()は、Samsung Galaxy SII(Mali-400 MP)で非常に遅い
glGenTextures(1, &texId);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texId);
// Allocate graphics memory.
glTexImage2D(GL_TEXTURE_2D, 0, format, cols, rows, 0, format, type, NULL);
// Allocate memory for mipmap.
glGenerateMipmap(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
// Create off-screen framebuffer object and attach the texture to it.
glGenFramebuffers(1, &fboId);
glBindFramebuffer(GL_FRAMEBUFFER, fboId);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texId, 0);
// Now render to that texture
...
// Generate MIP map.
glBindTexture(GL_TEXTURE_2D, texId);
glGenerateMipmap(GL_TEXTURE_2D);