BACKENDS: Move nextHigher2() into common/algorithm.h

This commit is contained in:
Cameron Cawley 2019-12-14 12:13:09 +00:00 committed by Filippos Karapetis
parent 97b4ee93f1
commit c3c3137ab3
3 changed files with 22 additions and 29 deletions

View File

@ -26,25 +26,13 @@
#include "backends/graphics/opengl/pipelines/clut8.h"
#include "backends/graphics/opengl/framebuffer.h"
#include "common/algorithm.h"
#include "common/endian.h"
#include "common/rect.h"
#include "common/textconsole.h"
namespace OpenGL {
static GLuint nextHigher2(GLuint v) {
if (v == 0)
return 1;
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
return ++v;
}
GLTexture::GLTexture(GLenum glIntFormat, GLenum glFormat, GLenum glType)
: _glIntFormat(glIntFormat), _glFormat(glFormat), _glType(glType),
_width(0), _height(0), _logicalWidth(0), _logicalHeight(0),
@ -107,8 +95,8 @@ void GLTexture::setSize(uint width, uint height) {
const uint oldHeight = _height;
if (!g_context.NPOTSupported) {
_width = nextHigher2(width);
_height = nextHigher2(height);
_width = Common::nextHigher2(width);
_height = Common::nextHigher2(height);
} else {
_width = width;
_height = height;

View File

@ -21,20 +21,9 @@
*/
#include "backends/platform/3ds/sprite.h"
#include "common/algorithm.h"
#include "common/util.h"
static uint nextHigher2(uint v) {
if (v == 0)
return 1;
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
return ++v;
}
Sprite::Sprite()
: dirtyPixels(true)
, dirtyMatrix(true)
@ -62,8 +51,8 @@ void Sprite::create(uint16 width, uint16 height, const Graphics::PixelFormat &f)
actualWidth = width;
actualHeight = height;
format = f;
w = MAX(nextHigher2(width), 64u);
h = MAX(nextHigher2(height), 64u);
w = MAX(Common::nextHigher2(width), 64u);
h = MAX(Common::nextHigher2(height), 64u);
pitch = w * format.bytesPerPixel;
dirtyPixels = true;

View File

@ -271,6 +271,22 @@ T gcd(T a, T b) {
#pragma warning(pop)
#endif
/**
* Get the next highest power of 2.
*/
template<class T>
T nextHigher2(T v) {
if (v == 0)
return 1;
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
return ++v;
}
/**
* Replacement algorithm for iterables.
*