В настоящее время я использую 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);