glGenerateMipmap () очень медленный на Samsung Galaxy SII (Mali-400 MP) - PullRequest
1 голос
/ 15 февраля 2012

В настоящее время я использую GPGPU для Samsung Galaxy SII (ARM Mali-400 MP) с Android NDK и OpenGL ES 2.0.Для этого мне нужно сгенерировать mipmap из текстуры, которая была визуализирована через FBO.К сожалению, glGenerateMipmap () выглядит очень медленно на устройстве.Создание мип-карты для текстуры 512x512 RGBA8888 занимает около 90 миллисекунд.Поскольку я также пробовал тот же код на других устройствах Android, где эта функция работает намного быстрее (около 2 миллисекунд), это замедление действительно озадачивает меня.Я что-то делаю не так или здесь что-то упускаю?Кто-нибудь может предоставить пример кода для этого случая, работающего на устройстве с графическим процессором ARM Mali?

Вот соответствующие части моего кода:

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);

1 Ответ

0 голосов
/ 26 ноября 2012

Эта проблема была исправлена ​​в драйверах ARM: http://forums.arm.com/index.php?/topic/15727-glgeneratemipmap-very-slow-on-samsung-galaxy-sii

...