Refactor implementation constants. Bug 19353282 Change-Id: If2eb9f2d78c3a44b720bb1f223711411b576d710 Reviewed-on: https://swiftshader-review.googlesource.com/5140 Reviewed-by: Alexis Hétu <sugoi@google.com> Tested-by: Nicolas Capens <capn@google.com> Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Common/Math.hpp b/src/Common/Math.hpp index 47a13f5..086c6c6 100644 --- a/src/Common/Math.hpp +++ b/src/Common/Math.hpp
@@ -92,38 +92,41 @@ } #define BITS(x) ( \ - !!(x & 0x80000000) + \ - !!(x & 0xC0000000) + \ - !!(x & 0xE0000000) + \ - !!(x & 0xF0000000) + \ - !!(x & 0xF8000000) + \ - !!(x & 0xFC000000) + \ - !!(x & 0xFE000000) + \ - !!(x & 0xFF000000) + \ - !!(x & 0xFF800000) + \ - !!(x & 0xFFC00000) + \ - !!(x & 0xFFE00000) + \ - !!(x & 0xFFF00000) + \ - !!(x & 0xFFF80000) + \ - !!(x & 0xFFFC0000) + \ - !!(x & 0xFFFE0000) + \ - !!(x & 0xFFFF0000) + \ - !!(x & 0xFFFF8000) + \ - !!(x & 0xFFFFC000) + \ - !!(x & 0xFFFFE000) + \ - !!(x & 0xFFFFF000) + \ - !!(x & 0xFFFFF800) + \ - !!(x & 0xFFFFFC00) + \ - !!(x & 0xFFFFFE00) + \ - !!(x & 0xFFFFFF00) + \ - !!(x & 0xFFFFFF80) + \ - !!(x & 0xFFFFFFC0) + \ - !!(x & 0xFFFFFFE0) + \ - !!(x & 0xFFFFFFF0) + \ - !!(x & 0xFFFFFFF8) + \ - !!(x & 0xFFFFFFFC) + \ - !!(x & 0xFFFFFFFE) + \ - !!(x & 0xFFFFFFFF)) + !!((x) & 0x80000000) + \ + !!((x) & 0xC0000000) + \ + !!((x) & 0xE0000000) + \ + !!((x) & 0xF0000000) + \ + !!((x) & 0xF8000000) + \ + !!((x) & 0xFC000000) + \ + !!((x) & 0xFE000000) + \ + !!((x) & 0xFF000000) + \ + !!((x) & 0xFF800000) + \ + !!((x) & 0xFFC00000) + \ + !!((x) & 0xFFE00000) + \ + !!((x) & 0xFFF00000) + \ + !!((x) & 0xFFF80000) + \ + !!((x) & 0xFFFC0000) + \ + !!((x) & 0xFFFE0000) + \ + !!((x) & 0xFFFF0000) + \ + !!((x) & 0xFFFF8000) + \ + !!((x) & 0xFFFFC000) + \ + !!((x) & 0xFFFFE000) + \ + !!((x) & 0xFFFFF000) + \ + !!((x) & 0xFFFFF800) + \ + !!((x) & 0xFFFFFC00) + \ + !!((x) & 0xFFFFFE00) + \ + !!((x) & 0xFFFFFF00) + \ + !!((x) & 0xFFFFFF80) + \ + !!((x) & 0xFFFFFFC0) + \ + !!((x) & 0xFFFFFFE0) + \ + !!((x) & 0xFFFFFFF0) + \ + !!((x) & 0xFFFFFFF8) + \ + !!((x) & 0xFFFFFFFC) + \ + !!((x) & 0xFFFFFFFE) + \ + !!((x) & 0xFFFFFFFF)) + + #define MAX(x, y) ((x) > (y) ? (x) : (y)) + #define MIN(x, y) ((x) < (y) ? (x) : (y)) inline float exp2(float x) {
diff --git a/src/D3D9/Direct3D9.cpp b/src/D3D9/Direct3D9.cpp index 298b22f..de8a86e 100644 --- a/src/D3D9/Direct3D9.cpp +++ b/src/D3D9/Direct3D9.cpp
@@ -1446,11 +1446,11 @@ D3DLINECAPS_TEXTURE | // Supports texture-mapping. D3DLINECAPS_ZTEST; // Supports z-buffer comparisons. - caps.MaxTextureWidth = 1 << (MIPMAP_LEVELS - 1); - caps.MaxTextureHeight = 1 << (MIPMAP_LEVELS - 1); - caps.MaxVolumeExtent = 1 << (MIPMAP_LEVELS - 1); + caps.MaxTextureWidth = 1 << (sw::MIPMAP_LEVELS - 1); + caps.MaxTextureHeight = 1 << (sw::MIPMAP_LEVELS - 1); + caps.MaxVolumeExtent = 1 << (sw::MIPMAP_LEVELS - 1); caps.MaxTextureRepeat = 8192; - caps.MaxTextureAspectRatio = 1 << (MIPMAP_LEVELS - 1); + caps.MaxTextureAspectRatio = 1 << (sw::MIPMAP_LEVELS - 1); caps.MaxAnisotropy = maxAnisotropy; caps.MaxVertexW = 1e+010;
diff --git a/src/D3D9/Direct3DCubeTexture9.cpp b/src/D3D9/Direct3DCubeTexture9.cpp index 992095e..7907788 100644 --- a/src/D3D9/Direct3DCubeTexture9.cpp +++ b/src/D3D9/Direct3DCubeTexture9.cpp
@@ -32,10 +32,10 @@ int width = edgeLength; int height = edgeLength; - for(unsigned int level = 0; level < MIPMAP_LEVELS; level++) + for(unsigned int level = 0; level < sw::MIPMAP_LEVELS; level++) { if(level < this->levels) - { + { surfaceLevel[face][level] = new Direct3DSurface9(device, this, width, height, format, pool, D3DMULTISAMPLE_NONE, 0, false, usage); surfaceLevel[face][level]->bind(); } @@ -56,7 +56,7 @@ for(unsigned int face = 0; face < 6; face++) { - for(int level = 0; level < MIPMAP_LEVELS; level++) + for(int level = 0; level < sw::MIPMAP_LEVELS; level++) { if(surfaceLevel[face][level]) {
diff --git a/src/D3D9/Direct3DCubeTexture9.hpp b/src/D3D9/Direct3DCubeTexture9.hpp index bead8ec..a86bb0d 100644 --- a/src/D3D9/Direct3DCubeTexture9.hpp +++ b/src/D3D9/Direct3DCubeTexture9.hpp
@@ -66,7 +66,7 @@ // Creation parameters const unsigned int edgeLength; - Direct3DSurface9 *surfaceLevel[6][MIPMAP_LEVELS]; + Direct3DSurface9 *surfaceLevel[6][sw::MIPMAP_LEVELS]; }; }
diff --git a/src/D3D9/Direct3DDevice9.cpp b/src/D3D9/Direct3DDevice9.cpp index 9000357..299ec85 100644 --- a/src/D3D9/Direct3DDevice9.cpp +++ b/src/D3D9/Direct3DDevice9.cpp
@@ -145,14 +145,14 @@ SetTransform(D3DTS_WORLDMATRIX(i), &identity); } - for(int i = 0; i < FRAGMENT_UNIFORM_VECTORS; i++) + for(int i = 0; i < MAX_PIXEL_SHADER_CONST; i++) { float zero[4] = {0, 0, 0, 0}; SetPixelShaderConstantF(i, zero, 1); } - for(int i = 0; i < VERTEX_UNIFORM_VECTORS; i++) + for(int i = 0; i < MAX_VERTEX_SHADER_CONST; i++) { float zero[4] = {0, 0, 0, 0}; @@ -565,7 +565,7 @@ *surface = 0; - if(width == 0 || height == 0 || d3d9->CheckDeviceFormat(adapter, deviceType, D3DFMT_X8R8G8B8, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, format) != D3D_OK || height > OUTLINE_RESOLUTION) + if(width == 0 || height == 0 || d3d9->CheckDeviceFormat(adapter, deviceType, D3DFMT_X8R8G8B8, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, format) != D3D_OK || height > sw::OUTLINE_RESOLUTION) { return INVALIDCALL(); } @@ -779,7 +779,7 @@ *surface = 0; - if(width == 0 || height == 0 || d3d9->CheckDeviceFormat(adapter, deviceType, D3DFMT_X8R8G8B8, D3DUSAGE_RENDERTARGET, D3DRTYPE_SURFACE, format) != D3D_OK || height > OUTLINE_RESOLUTION) + if(width == 0 || height == 0 || d3d9->CheckDeviceFormat(adapter, deviceType, D3DFMT_X8R8G8B8, D3DUSAGE_RENDERTARGET, D3DRTYPE_SURFACE, format) != D3D_OK || height > sw::OUTLINE_RESOLUTION) { return INVALIDCALL(); } @@ -2969,7 +2969,7 @@ if(!stateRecorder) { - for(unsigned int i = 0; i < count && startRegister + i < FRAGMENT_UNIFORM_VECTORS; i++) + for(unsigned int i = 0; i < count && startRegister + i < MAX_PIXEL_SHADER_CONST; i++) { pixelShaderConstantF[startRegister + i][0] = constantData[i * 4 + 0]; pixelShaderConstantF[startRegister + i][1] = constantData[i * 4 + 1]; @@ -5245,7 +5245,7 @@ if(!stateRecorder) { - for(unsigned int i = 0; i < count && startRegister + i < VERTEX_UNIFORM_VECTORS; i++) + for(unsigned int i = 0; i < count && startRegister + i < MAX_VERTEX_SHADER_CONST; i++) { vertexShaderConstantF[startRegister + i][0] = constantData[i * 4 + 0]; vertexShaderConstantF[startRegister + i][1] = constantData[i * 4 + 1]; @@ -6087,7 +6087,7 @@ Direct3DTexture9 *texture = dynamic_cast<Direct3DTexture9*>(baseTexture); Direct3DSurface9 *surface; - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel; @@ -6116,7 +6116,7 @@ Direct3DCubeTexture9 *cubeTexture = dynamic_cast<Direct3DCubeTexture9*>(baseTexture); Direct3DSurface9 *surface; - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel; @@ -6144,7 +6144,7 @@ Direct3DVolumeTexture9 *volumeTexture = dynamic_cast<Direct3DVolumeTexture9*>(baseTexture); Direct3DVolume9 *volume; - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel;
diff --git a/src/D3D9/Direct3DDevice9.hpp b/src/D3D9/Direct3DDevice9.hpp index c854678..06bad2d 100644 --- a/src/D3D9/Direct3DDevice9.hpp +++ b/src/D3D9/Direct3DDevice9.hpp
@@ -42,6 +42,12 @@ class Direct3DIndexBuffer9; class CriticalSection; + enum + { + MAX_VERTEX_SHADER_CONST = MIN(256, sw::VERTEX_UNIFORM_VECTORS), + MAX_PIXEL_SHADER_CONST = MIN(224, sw::FRAGMENT_UNIFORM_VECTORS), + }; + class Direct3DDevice9 : public IDirect3DDevice9, public Unknown { friend CriticalSection; @@ -264,11 +270,11 @@ unsigned int vertexShaderConstantsFDirty; unsigned int vertexShaderConstantsIDirty; - float pixelShaderConstantF[FRAGMENT_UNIFORM_VECTORS][4]; + float pixelShaderConstantF[MAX_PIXEL_SHADER_CONST][4]; int pixelShaderConstantI[16][4]; int pixelShaderConstantB[16]; - float vertexShaderConstantF[VERTEX_UNIFORM_VECTORS][4]; + float vertexShaderConstantF[MAX_VERTEX_SHADER_CONST][4]; int vertexShaderConstantI[16][4]; int vertexShaderConstantB[16];
diff --git a/src/D3D9/Direct3DStateBlock9.cpp b/src/D3D9/Direct3DStateBlock9.cpp index da0611a..1ad9ffa 100644 --- a/src/D3D9/Direct3DStateBlock9.cpp +++ b/src/D3D9/Direct3DStateBlock9.cpp
@@ -52,7 +52,7 @@ capturePixelSamplerStates(); capturePixelShaderStates(); } - + if(type == D3DSBT_VERTEXSTATE || type == D3DSBT_ALL) { captureVertexRenderStates(); @@ -112,7 +112,7 @@ return Unknown::AddRef(); } - + unsigned long Direct3DStateBlock9::Release() { TRACE(""); @@ -130,7 +130,7 @@ { return INVALIDCALL(); } - + if(fvfCaptured) { device->SetFVF(FVF); @@ -248,7 +248,7 @@ device->SetViewport(&viewport); } - for(int i = 0; i < FRAGMENT_UNIFORM_VECTORS; i++) + for(int i = 0; i < MAX_PIXEL_SHADER_CONST; i++) { if(*(int*)pixelShaderConstantF[i] != 0x80000000) { @@ -272,7 +272,7 @@ } } - for(int i = 0; i < VERTEX_UNIFORM_VECTORS; i++) + for(int i = 0; i < MAX_VERTEX_SHADER_CONST; i++) { if(*(int*)vertexShaderConstantF[i] != 0x80000000) { @@ -322,7 +322,7 @@ CriticalSection cs(device); TRACE(""); - + if(fvfCaptured) { device->GetFVF(&FVF); @@ -332,7 +332,7 @@ { Direct3DVertexDeclaration9 *vertexDeclaration; device->GetVertexDeclaration(reinterpret_cast<IDirect3DVertexDeclaration9**>(&vertexDeclaration)); - + if(vertexDeclaration) { vertexDeclaration->bind(); @@ -351,7 +351,7 @@ { Direct3DIndexBuffer9 *indexBuffer; device->GetIndices(reinterpret_cast<IDirect3DIndexBuffer9**>(&indexBuffer)); - + if(indexBuffer) { indexBuffer->bind(); @@ -525,7 +525,7 @@ device->GetViewport(&viewport); } - for(int i = 0; i < FRAGMENT_UNIFORM_VECTORS; i++) + for(int i = 0; i < MAX_PIXEL_SHADER_CONST; i++) { if(*(int*)pixelShaderConstantF[i] != 0x80000000) { @@ -549,7 +549,7 @@ } } - for(int i = 0; i < VERTEX_UNIFORM_VECTORS; i++) + for(int i = 0; i < MAX_VERTEX_SHADER_CONST; i++) { if(*(int*)vertexShaderConstantF[i] != 0x80000000) { @@ -872,7 +872,7 @@ viewportCaptured = false; - for(int i = 0; i < FRAGMENT_UNIFORM_VECTORS; i++) + for(int i = 0; i < MAX_PIXEL_SHADER_CONST; i++) { (int&)pixelShaderConstantF[i][0] = 0x80000000; (int&)pixelShaderConstantF[i][1] = 0x80000000; @@ -880,7 +880,7 @@ (int&)pixelShaderConstantF[i][3] = 0x80000000; } - for(int i = 0; i < VERTEX_UNIFORM_VECTORS; i++) + for(int i = 0; i < MAX_VERTEX_SHADER_CONST; i++) { (int&)vertexShaderConstantF[i][0] = 0x80000000; (int&)vertexShaderConstantF[i][1] = 0x80000000; @@ -1085,7 +1085,7 @@ { captureSamplerState(sampler, D3DSAMP_ADDRESSU); captureSamplerState(sampler, D3DSAMP_ADDRESSV); - captureSamplerState(sampler, D3DSAMP_ADDRESSW); + captureSamplerState(sampler, D3DSAMP_ADDRESSW); captureSamplerState(sampler, D3DSAMP_BORDERCOLOR); captureSamplerState(sampler, D3DSAMP_MAGFILTER); captureSamplerState(sampler, D3DSAMP_MINFILTER); @@ -1102,7 +1102,7 @@ { pixelShaderCaptured = true; device->GetPixelShader(reinterpret_cast<IDirect3DPixelShader9**>(&pixelShader)); - + if(pixelShader) { pixelShader->bind(); @@ -1111,7 +1111,7 @@ device->GetPixelShaderConstantF(0, pixelShaderConstantF[0], 32); device->GetPixelShaderConstantI(0, pixelShaderConstantI[0], 16); - device->GetPixelShaderConstantB(0, pixelShaderConstantB, 16); + device->GetPixelShaderConstantB(0, pixelShaderConstantB, 16); } void Direct3DStateBlock9::captureVertexRenderStates() @@ -1206,16 +1206,16 @@ { vertexShaderCaptured = true; device->GetVertexShader(reinterpret_cast<IDirect3DVertexShader9**>(&vertexShader)); - + if(vertexShader) { vertexShader->bind(); vertexShader->Release(); } - device->GetVertexShaderConstantF(0, vertexShaderConstantF[0], VERTEX_UNIFORM_VECTORS); + device->GetVertexShaderConstantF(0, vertexShaderConstantF[0], MAX_VERTEX_SHADER_CONST); device->GetVertexShaderConstantI(0, vertexShaderConstantI[0], 16); - device->GetVertexShaderConstantB(0, vertexShaderConstantB, 16); + device->GetVertexShaderConstantB(0, vertexShaderConstantB, 16); } void Direct3DStateBlock9::captureStreamSourceFrequencies() @@ -1232,7 +1232,7 @@ device->GetFVF(&FVF); fvfCaptured = true; } - + void Direct3DStateBlock9::captureVertexDeclaration() { vertexDeclarationCaptured = true; @@ -1273,7 +1273,7 @@ { streamSourceCaptured[stream] = true; device->GetStreamSource(stream, reinterpret_cast<IDirect3DVertexBuffer9**>(&streamSource[stream].vertexBuffer), &streamSource[stream].offset, &streamSource[stream].stride); - + if(streamSource[stream].vertexBuffer) { streamSource[stream].vertexBuffer->bind();
diff --git a/src/D3D9/Direct3DStateBlock9.hpp b/src/D3D9/Direct3DStateBlock9.hpp index 3fd4bbc..e831a04 100644 --- a/src/D3D9/Direct3DStateBlock9.hpp +++ b/src/D3D9/Direct3DStateBlock9.hpp
@@ -12,7 +12,7 @@ #ifndef D3D9_Direct3DStateBlock9_hpp #define D3D9_Direct3DStateBlock9_hpp -#include "Config.hpp" +#include "Direct3DDevice9.hpp" #include "Unknown.hpp" #include <vector> @@ -172,11 +172,11 @@ bool viewportCaptured; D3DVIEWPORT9 viewport; - float pixelShaderConstantF[FRAGMENT_UNIFORM_VECTORS][4]; + float pixelShaderConstantF[MAX_PIXEL_SHADER_CONST][4]; int pixelShaderConstantI[16][4]; int pixelShaderConstantB[16]; - float vertexShaderConstantF[VERTEX_UNIFORM_VECTORS][4]; + float vertexShaderConstantF[MAX_VERTEX_SHADER_CONST][4]; int vertexShaderConstantI[16][4]; int vertexShaderConstantB[16];
diff --git a/src/D3D9/Direct3DTexture9.cpp b/src/D3D9/Direct3DTexture9.cpp index 5e2f1c3..2d7dcda 100644 --- a/src/D3D9/Direct3DTexture9.cpp +++ b/src/D3D9/Direct3DTexture9.cpp
@@ -27,7 +27,7 @@ this->levels = sw::log2(sw::max((int)width, (int)height, 1)) + 1; } - for(unsigned int level = 0; level < MIPMAP_LEVELS; level++) + for(unsigned int level = 0; level < sw::MIPMAP_LEVELS; level++) { if(level < this->levels) { @@ -48,7 +48,7 @@ { resource->lock(sw::DESTRUCT); - for(int level = 0; level < MIPMAP_LEVELS; level++) + for(int level = 0; level < sw::MIPMAP_LEVELS; level++) { if(surfaceLevel[level]) {
diff --git a/src/D3D9/Direct3DTexture9.hpp b/src/D3D9/Direct3DTexture9.hpp index d8ed329..2c19834 100644 --- a/src/D3D9/Direct3DTexture9.hpp +++ b/src/D3D9/Direct3DTexture9.hpp
@@ -67,7 +67,7 @@ const unsigned int width; const unsigned int height; - Direct3DSurface9 *surfaceLevel[MIPMAP_LEVELS]; + Direct3DSurface9 *surfaceLevel[sw::MIPMAP_LEVELS]; }; }
diff --git a/src/D3D9/Direct3DVolumeTexture9.cpp b/src/D3D9/Direct3DVolumeTexture9.cpp index 5633cc1..fff5288 100644 --- a/src/D3D9/Direct3DVolumeTexture9.cpp +++ b/src/D3D9/Direct3DVolumeTexture9.cpp
@@ -27,7 +27,7 @@ this->levels = sw::log2(sw::max((int)width, (int)height, (int)depth, 1)) + 1; } - for(unsigned int level = 0; level < MIPMAP_LEVELS; level++) + for(unsigned int level = 0; level < sw::MIPMAP_LEVELS; level++) { if(level < this->levels) { @@ -49,7 +49,7 @@ { resource->lock(sw::DESTRUCT); - for(int level = 0; level < MIPMAP_LEVELS; level++) + for(int level = 0; level < sw::MIPMAP_LEVELS; level++) { if(volumeLevel[level]) {
diff --git a/src/D3D9/Direct3DVolumeTexture9.hpp b/src/D3D9/Direct3DVolumeTexture9.hpp index 1fa2447..e4dda38 100644 --- a/src/D3D9/Direct3DVolumeTexture9.hpp +++ b/src/D3D9/Direct3DVolumeTexture9.hpp
@@ -68,7 +68,7 @@ const unsigned int height; const unsigned int depth; - Direct3DVolume9 *volumeLevel[MIPMAP_LEVELS]; + Direct3DVolume9 *volumeLevel[sw::MIPMAP_LEVELS]; }; }
diff --git a/src/Main/Config.cpp b/src/Main/Config.cpp index 10928ba..becea9c 100644 --- a/src/Main/Config.cpp +++ b/src/Main/Config.cpp
@@ -14,63 +14,66 @@ #include "Thread.hpp" #include "Timer.hpp" -Profiler profiler; - -Profiler::Profiler() +namespace sw { - reset(); -} + Profiler profiler; -void Profiler::reset() -{ - framesSec = 0; - framesTotal = 0; - FPS = 0; - - #if PERF_PROFILE - for(int i = 0; i < PERF_TIMERS; i++) - { - cycles[i] = 0; - } - - ropOperations = 0; - ropOperationsTotal = 0; - ropOperationsFrame = 0; - - texOperations = 0; - texOperationsTotal = 0; - texOperationsFrame = 0; - - compressedTex = 0; - compressedTexTotal = 0; - compressedTexFrame = 0; - #endif -}; - -void Profiler::nextFrame() -{ - #if PERF_PROFILE - ropOperationsFrame = sw::atomicExchange(&ropOperations, 0); - texOperationsFrame = sw::atomicExchange(&texOperations, 0); - compressedTexFrame = sw::atomicExchange(&compressedTex, 0); - - ropOperationsTotal += ropOperationsFrame; - texOperationsTotal += texOperationsFrame; - compressedTexTotal += compressedTexFrame; - #endif - - static double fpsTime = sw::Timer::seconds(); - - double time = sw::Timer::seconds(); - double delta = time - fpsTime; - framesSec++; - - if(delta > 1.0) + Profiler::Profiler() { - FPS = framesSec / delta; - - fpsTime = time; - framesTotal += framesSec; - framesSec = 0; + reset(); } -} + + void Profiler::reset() + { + framesSec = 0; + framesTotal = 0; + FPS = 0; + + #if PERF_PROFILE + for(int i = 0; i < PERF_TIMERS; i++) + { + cycles[i] = 0; + } + + ropOperations = 0; + ropOperationsTotal = 0; + ropOperationsFrame = 0; + + texOperations = 0; + texOperationsTotal = 0; + texOperationsFrame = 0; + + compressedTex = 0; + compressedTexTotal = 0; + compressedTexFrame = 0; + #endif + }; + + void Profiler::nextFrame() + { + #if PERF_PROFILE + ropOperationsFrame = sw::atomicExchange(&ropOperations, 0); + texOperationsFrame = sw::atomicExchange(&texOperations, 0); + compressedTexFrame = sw::atomicExchange(&compressedTex, 0); + + ropOperationsTotal += ropOperationsFrame; + texOperationsTotal += texOperationsFrame; + compressedTexTotal += compressedTexFrame; + #endif + + static double fpsTime = sw::Timer::seconds(); + + double time = sw::Timer::seconds(); + double delta = time - fpsTime; + framesSec++; + + if(delta > 1.0) + { + FPS = framesSec / delta; + + fpsTime = time; + framesTotal += framesSec; + framesSec = 0; + } + } +} \ No newline at end of file
diff --git a/src/Main/Config.hpp b/src/Main/Config.hpp index 7237d28..7d0952c 100644 --- a/src/Main/Config.hpp +++ b/src/Main/Config.hpp
@@ -30,74 +30,69 @@ #define DEFAULT_THREAD_COUNT 0 #endif -enum +namespace sw { - PERF_PIXEL, - PERF_PIPE, - PERF_INTERP, - PERF_SHADER, - PERF_TEX, - PERF_ROP, + enum + { + PERF_PIXEL, + PERF_PIPE, + PERF_INTERP, + PERF_SHADER, + PERF_TEX, + PERF_ROP, - PERF_TIMERS -}; + PERF_TIMERS + }; -struct Profiler -{ - Profiler(); + struct Profiler + { + Profiler(); - void reset(); - void nextFrame(); + void reset(); + void nextFrame(); - int framesSec; - int framesTotal; - double FPS; + int framesSec; + int framesTotal; + double FPS; - #if PERF_PROFILE - double cycles[PERF_TIMERS]; + #if PERF_PROFILE + double cycles[PERF_TIMERS]; - int64_t ropOperations; - int64_t ropOperationsTotal; - int64_t ropOperationsFrame; + int64_t ropOperations; + int64_t ropOperationsTotal; + int64_t ropOperationsFrame; - int64_t texOperations; - int64_t texOperationsTotal; - int64_t texOperationsFrame; + int64_t texOperations; + int64_t texOperationsTotal; + int64_t texOperationsFrame; - int64_t compressedTex; - int64_t compressedTexTotal; - int64_t compressedTexFrame; - #endif -}; + int64_t compressedTex; + int64_t compressedTexTotal; + int64_t compressedTexFrame; + #endif + }; -extern Profiler profiler; + extern Profiler profiler; -enum -{ - OUTLINE_RESOLUTION = 4096, // Maximum vertical resolution of the render target - MIPMAP_LEVELS = 14, - MAX_COLOR_ATTACHMENTS = 8, - VERTEX_ATTRIBUTES = 16, - TEXTURE_IMAGE_UNITS = 16, - VERTEX_TEXTURE_IMAGE_UNITS = 16, - TOTAL_IMAGE_UNITS = TEXTURE_IMAGE_UNITS + VERTEX_TEXTURE_IMAGE_UNITS, - FRAGMENT_UNIFORM_VECTORS = 224, - VERTEX_UNIFORM_VECTORS = 256, - MAX_FRAGMENT_UNIFORM_COMPONENTS = FRAGMENT_UNIFORM_VECTORS * 4, - MAX_VERTEX_UNIFORM_COMPONENTS = VERTEX_UNIFORM_VECTORS * 4, - MAX_FRAGMENT_UNIFORM_BLOCKS = 12, - MAX_VERTEX_UNIFORM_BLOCKS = 12, - MAX_UNIFORM_BLOCK_SIZE = 16384, - MAX_FRAGMENT_UNIFORM_BLOCKS_COMPONENTS = MAX_FRAGMENT_UNIFORM_BLOCKS * MAX_UNIFORM_BLOCK_SIZE / 4, - MAX_VERTEX_UNIFORM_BLOCKS_COMPONENTS = MAX_VERTEX_UNIFORM_BLOCKS * MAX_UNIFORM_BLOCK_SIZE / 4, - MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = MAX_FRAGMENT_UNIFORM_BLOCKS_COMPONENTS + MAX_FRAGMENT_UNIFORM_COMPONENTS, - MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = MAX_VERTEX_UNIFORM_BLOCKS_COMPONENTS + MAX_VERTEX_UNIFORM_COMPONENTS, - MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 4, - MAX_UNIFORM_BUFFER_BINDINGS = MAX_FRAGMENT_UNIFORM_BLOCKS + MAX_VERTEX_UNIFORM_BLOCKS, // Limited to 127 by SourceParameter.bufferIndex in Shader.hpp - MAX_CLIP_PLANES = 6, - MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 64, - MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 64, - RENDERTARGETS = 4, -}; + enum + { + OUTLINE_RESOLUTION = 4096, // Maximum vertical resolution of the render target + MIPMAP_LEVELS = 14, + VERTEX_ATTRIBUTES = 16, + TEXTURE_IMAGE_UNITS = 16, + VERTEX_TEXTURE_IMAGE_UNITS = 16, + TOTAL_IMAGE_UNITS = TEXTURE_IMAGE_UNITS + VERTEX_TEXTURE_IMAGE_UNITS, + FRAGMENT_UNIFORM_VECTORS = 224, + VERTEX_UNIFORM_VECTORS = 256, + MAX_FRAGMENT_UNIFORM_BLOCKS = 12, + MAX_VERTEX_UNIFORM_BLOCKS = 12, + MAX_UNIFORM_BUFFER_BINDINGS = MAX_FRAGMENT_UNIFORM_BLOCKS + MAX_VERTEX_UNIFORM_BLOCKS, // Limited to 127 by SourceParameter.bufferIndex in Shader.hpp + MAX_UNIFORM_BLOCK_SIZE = 16384, + MAX_CLIP_PLANES = 6, + MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 64, + MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 64, + RENDERTARGETS = 4, + }; +} #endif // sw_Config_hpp
diff --git a/src/Main/SwiftConfig.cpp b/src/Main/SwiftConfig.cpp index d80e344..9dce441 100644 --- a/src/Main/SwiftConfig.cpp +++ b/src/Main/SwiftConfig.cpp
@@ -22,10 +22,10 @@ #include <sys/stat.h> #include <string.h> -extern Profiler profiler; - namespace sw { + extern Profiler profiler; + std::string itoa(int number) { std::stringstream ss;
diff --git a/src/OpenGL/libGL/Context.cpp b/src/OpenGL/libGL/Context.cpp index 0da8157..e886392 100644 --- a/src/OpenGL/libGL/Context.cpp +++ b/src/OpenGL/libGL/Context.cpp
@@ -2112,7 +2112,7 @@ { Texture2D *texture = static_cast<Texture2D*>(baseTexture); - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel; @@ -2135,7 +2135,7 @@ { TextureCubeMap *cubeTexture = static_cast<TextureCubeMap*>(baseTexture); - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel;
diff --git a/src/OpenGL/libGL/Context.h b/src/OpenGL/libGL/Context.h index cd41df6..74ecb6c 100644 --- a/src/OpenGL/libGL/Context.h +++ b/src/OpenGL/libGL/Context.h
@@ -311,12 +311,12 @@ { MAX_VERTEX_ATTRIBS = 9, MAX_UNIFORM_VECTORS = 256, // Device limit - MAX_VERTEX_UNIFORM_VECTORS = VERTEX_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange + MAX_VERTEX_UNIFORM_VECTORS = sw::VERTEX_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange MAX_VARYING_VECTORS = 10, MAX_TEXTURE_IMAGE_UNITS = 2, MAX_VERTEX_TEXTURE_IMAGE_UNITS = 1, MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + MAX_VERTEX_TEXTURE_IMAGE_UNITS, - MAX_FRAGMENT_UNIFORM_VECTORS = FRAGMENT_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange + MAX_FRAGMENT_UNIFORM_VECTORS = sw::FRAGMENT_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange MAX_DRAW_BUFFERS = 1, IMPLEMENTATION_COLOR_READ_FORMAT = GL_RGB,
diff --git a/src/OpenGL/libGL/Device.hpp b/src/OpenGL/libGL/Device.hpp index 63df3f9..e85d909 100644 --- a/src/OpenGL/libGL/Device.hpp +++ b/src/OpenGL/libGL/Device.hpp
@@ -89,8 +89,8 @@ bool vertexShaderDirty; unsigned int vertexShaderConstantsFDirty; - float pixelShaderConstantF[FRAGMENT_UNIFORM_VECTORS][4]; - float vertexShaderConstantF[VERTEX_UNIFORM_VECTORS][4]; + float pixelShaderConstantF[sw::FRAGMENT_UNIFORM_VECTORS][4]; + float vertexShaderConstantF[sw::VERTEX_UNIFORM_VECTORS][4]; Image *renderTarget; Image *depthStencil;
diff --git a/src/OpenGL/libGL/Texture.cpp b/src/OpenGL/libGL/Texture.cpp index 162599c..0f1a0e9 100644 --- a/src/OpenGL/libGL/Texture.cpp +++ b/src/OpenGL/libGL/Texture.cpp
@@ -271,7 +271,7 @@ Texture2D::Texture2D(GLuint name) : Texture(name) { - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { image[i] = 0; } @@ -284,7 +284,7 @@ { resource->lock(sw::DESTRUCT); - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[i]) { @@ -359,7 +359,7 @@ ASSERT(isSamplerComplete()); int levels = 0; - while(levels < MIPMAP_LEVELS && image[levels]) + while(levels < IMPLEMENTATION_MAX_TEXTURE_LEVELS && image[levels]) { levels++; } @@ -624,7 +624,7 @@ { for(int f = 0; f < 6; f++) { - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { image[f][i] = 0; } @@ -643,7 +643,7 @@ for(int f = 0; f < 6; f++) { - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[f][i]) { @@ -736,7 +736,7 @@ ASSERT(isSamplerComplete()); int levels = 0; - while(levels < MIPMAP_LEVELS && image[0][levels]) + while(levels < IMPLEMENTATION_MAX_TEXTURE_LEVELS && image[0][levels]) { levels++; }
diff --git a/src/OpenGL/libGL/Texture.h b/src/OpenGL/libGL/Texture.h index 6574d42..327aca3 100644 --- a/src/OpenGL/libGL/Texture.h +++ b/src/OpenGL/libGL/Texture.h
@@ -36,10 +36,10 @@ enum { - IMPLEMENTATION_MAX_TEXTURE_LEVELS = MIPMAP_LEVELS, - IMPLEMENTATION_MAX_TEXTURE_SIZE = 1 << (MIPMAP_LEVELS - 1), - IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE = 1 << (MIPMAP_LEVELS - 1), - IMPLEMENTATION_MAX_RENDERBUFFER_SIZE = OUTLINE_RESOLUTION, + IMPLEMENTATION_MAX_TEXTURE_LEVELS = sw::MIPMAP_LEVELS, + IMPLEMENTATION_MAX_TEXTURE_SIZE = 1 << (IMPLEMENTATION_MAX_TEXTURE_LEVELS - 1), + IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE = 1 << (IMPLEMENTATION_MAX_TEXTURE_LEVELS - 1), + IMPLEMENTATION_MAX_RENDERBUFFER_SIZE = sw::OUTLINE_RESOLUTION, }; class Texture : public NamedObject @@ -149,7 +149,7 @@ bool isMipmapComplete() const; Image *image[IMPLEMENTATION_MAX_TEXTURE_LEVELS]; - + // A specific internal reference count is kept for colorbuffer proxy references, // because, as the renderbuffer acting as proxy will maintain a binding pointer // back to this texture, there would be a circular reference if we used a binding @@ -170,7 +170,7 @@ void releaseProxy(const Renderbuffer *proxy); virtual GLenum getTarget() const; - + virtual GLsizei getWidth(GLenum target, GLint level) const; virtual GLsizei getHeight(GLenum target, GLint level) const; virtual GLenum getFormat(GLenum target, GLint level) const; @@ -189,7 +189,7 @@ virtual bool isSamplerComplete() const; virtual bool isCompressed(GLenum target, GLint level) const; virtual bool isDepth(GLenum target, GLint level) const; - + virtual void generateMipmaps(); virtual Renderbuffer *getRenderbuffer(GLenum target); @@ -205,7 +205,7 @@ Image *getImage(GLenum face, unsigned int level); Image *image[6][IMPLEMENTATION_MAX_TEXTURE_LEVELS]; - + // A specific internal reference count is kept for colorbuffer proxy references, // because, as the renderbuffer acting as proxy will maintain a binding pointer // back to this texture, there would be a circular reference if we used a binding
diff --git a/src/OpenGL/libGLES_CM/Context.cpp b/src/OpenGL/libGLES_CM/Context.cpp index 5cc63be..0b1ce44 100644 --- a/src/OpenGL/libGLES_CM/Context.cpp +++ b/src/OpenGL/libGLES_CM/Context.cpp
@@ -2342,7 +2342,7 @@ { Texture2D *texture = static_cast<Texture2D*>(baseTexture); - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel;
diff --git a/src/OpenGL/libGLES_CM/Context.h b/src/OpenGL/libGLES_CM/Context.h index 4e86885..90293e3 100644 --- a/src/OpenGL/libGLES_CM/Context.h +++ b/src/OpenGL/libGLES_CM/Context.h
@@ -60,11 +60,12 @@ enum { - MAX_VERTEX_ATTRIBS = VERTEX_ATTRIBUTES, + MAX_VERTEX_ATTRIBS = sw::VERTEX_ATTRIBUTES, MAX_VARYING_VECTORS = 10, MAX_TEXTURE_UNITS = 2, MAX_DRAW_BUFFERS = 1, MAX_LIGHTS = 8, + MAX_CLIP_PLANES = sw::MAX_CLIP_PLANES, MAX_MODELVIEW_STACK_DEPTH = 32, MAX_PROJECTION_STACK_DEPTH = 2,
diff --git a/src/OpenGL/libGLES_CM/Texture.cpp b/src/OpenGL/libGLES_CM/Texture.cpp index bd3da9c..3729d9b 100644 --- a/src/OpenGL/libGLES_CM/Texture.cpp +++ b/src/OpenGL/libGLES_CM/Texture.cpp
@@ -331,7 +331,7 @@ Texture2D::Texture2D(GLuint name) : Texture(name) { - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { image[i] = nullptr; } @@ -346,7 +346,7 @@ { resource->lock(sw::DESTRUCT); - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[i]) { @@ -391,7 +391,7 @@ { int imageCount = 0; - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[i] && image[i]->isChildOf(this)) { @@ -450,7 +450,7 @@ ASSERT(isSamplerComplete()); int levels = 0; - while(levels < MIPMAP_LEVELS && image[levels]) + while(levels < IMPLEMENTATION_MAX_TEXTURE_LEVELS && image[levels]) { levels++; } @@ -496,7 +496,7 @@ return; } - for(int level = 0; level < MIPMAP_LEVELS; level++) + for(int level = 0; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) { if(image[level]) { @@ -513,7 +513,7 @@ void Texture2D::releaseTexImage() { - for(int level = 0; level < MIPMAP_LEVELS; level++) + for(int level = 0; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) { if(image[level]) { @@ -817,7 +817,7 @@ egl::Image *createDepthStencil(unsigned int width, unsigned int height, sw::Format format, int multiSampleDepth, bool discard) { - if(height > OUTLINE_RESOLUTION) + if(height > sw::OUTLINE_RESOLUTION) { ERR("Invalid parameters: %dx%d", width, height); return 0;
diff --git a/src/OpenGL/libGLES_CM/Texture.h b/src/OpenGL/libGLES_CM/Texture.h index 4a49ddb..6d53711 100644 --- a/src/OpenGL/libGLES_CM/Texture.h +++ b/src/OpenGL/libGLES_CM/Texture.h
@@ -38,10 +38,10 @@ enum { - IMPLEMENTATION_MAX_TEXTURE_LEVELS = MIPMAP_LEVELS, - IMPLEMENTATION_MAX_TEXTURE_SIZE = 1 << (MIPMAP_LEVELS - 1), - IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE = 1 << (MIPMAP_LEVELS - 1), - IMPLEMENTATION_MAX_RENDERBUFFER_SIZE = OUTLINE_RESOLUTION, + IMPLEMENTATION_MAX_TEXTURE_LEVELS = sw::MIPMAP_LEVELS, + IMPLEMENTATION_MAX_TEXTURE_SIZE = 1 << (IMPLEMENTATION_MAX_TEXTURE_LEVELS - 1), + IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE = 1 << (IMPLEMENTATION_MAX_TEXTURE_LEVELS - 1), + IMPLEMENTATION_MAX_RENDERBUFFER_SIZE = sw::OUTLINE_RESOLUTION, }; class Texture : public egl::Texture
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp index 5ce6448..af7a884 100644 --- a/src/OpenGL/libGLESv2/Context.cpp +++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -2117,8 +2117,7 @@ *params = IMPLEMENTATION_MAX_TEXTURE_SIZE; break; case GL_MAX_COLOR_ATTACHMENTS: // integer, at least 8 - UNIMPLEMENTED(); - *params = IMPLEMENTATION_MAX_COLOR_ATTACHMENTS; + *params = MAX_COLOR_ATTACHMENTS; break; case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: // integer, at least 50048 *params = MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS; @@ -2132,7 +2131,7 @@ break; case GL_MAX_DRAW_BUFFERS: // integer, at least 8 UNIMPLEMENTED(); - *params = IMPLEMENTATION_MAX_DRAW_BUFFERS; + *params = MAX_DRAW_BUFFERS; break; case GL_MAX_ELEMENT_INDEX: *params = MAX_ELEMENT_INDEX; @@ -2171,7 +2170,7 @@ break; case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: // integer, at least 4 UNIMPLEMENTED(); - *params = IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS; + *params = MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS; break; case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: // integer, at least 4 UNIMPLEMENTED(); @@ -2181,7 +2180,7 @@ *params = MAX_UNIFORM_BLOCK_SIZE; break; case GL_MAX_UNIFORM_BUFFER_BINDINGS: // integer, at least 24 - *params = IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS; + *params = MAX_UNIFORM_BUFFER_BINDINGS; break; case GL_MAX_VARYING_COMPONENTS: // integer, at least 60 UNIMPLEMENTED(); @@ -2264,7 +2263,7 @@ } break; case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: // integer, defaults to 1 - *params = IMPLEMENTATION_UNIFORM_BUFFER_OFFSET_ALIGNMENT; + *params = UNIFORM_BUFFER_OFFSET_ALIGNMENT; break; case GL_UNIFORM_BUFFER_SIZE: // indexed[n] 64-bit integer, initially 0 if(clientVersion >= 3) @@ -3109,7 +3108,7 @@ { Texture2D *texture = static_cast<Texture2D*>(baseTexture); - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel; @@ -3130,7 +3129,7 @@ { Texture3D *texture = static_cast<Texture3D*>(baseTexture); - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel; @@ -3151,7 +3150,7 @@ { Texture2DArray *texture = static_cast<Texture2DArray*>(baseTexture); - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel; @@ -3174,7 +3173,7 @@ { TextureCubeMap *cubeTexture = static_cast<TextureCubeMap*>(baseTexture); - for(int mipmapLevel = 0; mipmapLevel < MIPMAP_LEVELS; mipmapLevel++) + for(int mipmapLevel = 0; mipmapLevel < sw::MIPMAP_LEVELS; mipmapLevel++) { int surfaceLevel = mipmapLevel;
diff --git a/src/OpenGL/libGLESv2/Context.h b/src/OpenGL/libGLESv2/Context.h index 3fc6e95..08c7a51 100644 --- a/src/OpenGL/libGLESv2/Context.h +++ b/src/OpenGL/libGLESv2/Context.h
@@ -15,13 +15,13 @@ #ifndef LIBGLESV2_CONTEXT_H_ #define LIBGLESV2_CONTEXT_H_ -#include "libEGL/Context.hpp" #include "ResourceManager.h" +#include "Buffer.h" +#include "libEGL/Context.hpp" #include "common/NameSpace.hpp" #include "common/Object.hpp" #include "common/Image.hpp" #include "Renderer/Sampler.hpp" -#include "TransformFeedback.h" #include <GLES2/gl2.h> #include <GLES2/gl2ext.h> @@ -67,18 +67,18 @@ class Query; class Sampler; class VertexArray; +class TransformFeedback; enum { - MAX_VERTEX_ATTRIBS = VERTEX_ATTRIBUTES, + MAX_VERTEX_ATTRIBS = sw::VERTEX_ATTRIBUTES, MAX_UNIFORM_VECTORS = 256, // Device limit - MAX_VERTEX_UNIFORM_VECTORS = VERTEX_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange + MAX_VERTEX_UNIFORM_VECTORS = sw::VERTEX_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange MAX_VARYING_VECTORS = 10, - MAX_TEXTURE_IMAGE_UNITS = TEXTURE_IMAGE_UNITS, - MAX_VERTEX_TEXTURE_IMAGE_UNITS = VERTEX_TEXTURE_IMAGE_UNITS, + MAX_TEXTURE_IMAGE_UNITS = sw::TEXTURE_IMAGE_UNITS, + MAX_VERTEX_TEXTURE_IMAGE_UNITS = sw::VERTEX_TEXTURE_IMAGE_UNITS, MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + MAX_VERTEX_TEXTURE_IMAGE_UNITS, - MAX_FRAGMENT_UNIFORM_VECTORS = FRAGMENT_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange - MAX_DRAW_BUFFERS = RENDERTARGETS, + MAX_FRAGMENT_UNIFORM_VECTORS = sw::FRAGMENT_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange MAX_ELEMENT_INDEX = 0x7FFFFFFF, MAX_ELEMENTS_INDICES = 0x7FFFFFFF, MAX_ELEMENTS_VERTICES = 0x7FFFFFFF, @@ -86,6 +86,20 @@ MAX_FRAGMENT_INPUT_VECTORS = 15, MIN_PROGRAM_TEXEL_OFFSET = -8, MAX_PROGRAM_TEXEL_OFFSET = 7, + MAX_DRAW_BUFFERS = sw::RENDERTARGETS, + MAX_COLOR_ATTACHMENTS = MAX(MAX_DRAW_BUFFERS, 8), + MAX_FRAGMENT_UNIFORM_BLOCKS = sw::MAX_FRAGMENT_UNIFORM_BLOCKS, + MAX_VERTEX_UNIFORM_BLOCKS = sw::MAX_VERTEX_UNIFORM_BLOCKS, + MAX_FRAGMENT_UNIFORM_COMPONENTS = sw::FRAGMENT_UNIFORM_VECTORS * 4, + MAX_VERTEX_UNIFORM_COMPONENTS = sw::VERTEX_UNIFORM_VECTORS * 4, + MAX_UNIFORM_BLOCK_SIZE = sw::MAX_UNIFORM_BLOCK_SIZE, + MAX_FRAGMENT_UNIFORM_BLOCKS_COMPONENTS = sw::MAX_FRAGMENT_UNIFORM_BLOCKS * MAX_UNIFORM_BLOCK_SIZE / 4, + MAX_VERTEX_UNIFORM_BLOCKS_COMPONENTS = MAX_VERTEX_UNIFORM_BLOCKS * MAX_UNIFORM_BLOCK_SIZE / 4, + MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = MAX_FRAGMENT_UNIFORM_BLOCKS_COMPONENTS + MAX_FRAGMENT_UNIFORM_COMPONENTS, + MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = MAX_VERTEX_UNIFORM_BLOCKS_COMPONENTS + MAX_VERTEX_UNIFORM_COMPONENTS, + MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 4, + MAX_UNIFORM_BUFFER_BINDINGS = sw::MAX_UNIFORM_BUFFER_BINDINGS, + UNIFORM_BUFFER_OFFSET_ALIGNMENT = 1, }; const GLenum compressedTextureFormats[] =
diff --git a/src/OpenGL/libGLESv2/Device.hpp b/src/OpenGL/libGLESv2/Device.hpp index d254d3b..9283cf3 100644 --- a/src/OpenGL/libGLESv2/Device.hpp +++ b/src/OpenGL/libGLESv2/Device.hpp
@@ -85,10 +85,10 @@ bool vertexShaderDirty; unsigned int vertexShaderConstantsFDirty; - float pixelShaderConstantF[FRAGMENT_UNIFORM_VECTORS][4]; - float vertexShaderConstantF[VERTEX_UNIFORM_VECTORS][4]; + float pixelShaderConstantF[sw::FRAGMENT_UNIFORM_VECTORS][4]; + float vertexShaderConstantF[sw::VERTEX_UNIFORM_VECTORS][4]; - egl::Image *renderTarget[RENDERTARGETS]; + egl::Image *renderTarget[sw::RENDERTARGETS]; egl::Image *depthBuffer; egl::Image *stencilBuffer; };
diff --git a/src/OpenGL/libGLESv2/Framebuffer.cpp b/src/OpenGL/libGLESv2/Framebuffer.cpp index 87e60f4..34f3263 100644 --- a/src/OpenGL/libGLESv2/Framebuffer.cpp +++ b/src/OpenGL/libGLESv2/Framebuffer.cpp
@@ -29,7 +29,7 @@ Framebuffer::Framebuffer() { - for(int i = 0; i < IMPLEMENTATION_MAX_COLOR_ATTACHMENTS; ++i) + for(int i = 0; i < MAX_COLOR_ATTACHMENTS; i++) { mColorbufferType[i] = GL_NONE; } @@ -46,7 +46,7 @@ Framebuffer::~Framebuffer() { - for(int i = 0; i < IMPLEMENTATION_MAX_COLOR_ATTACHMENTS; ++i) + for(int i = 0; i < MAX_COLOR_ATTACHMENTS; i++) { mColorbufferPointer[i] = nullptr; } @@ -121,7 +121,7 @@ void Framebuffer::detachTexture(GLuint texture) { - for(int i = 0; i < IMPLEMENTATION_MAX_COLOR_ATTACHMENTS; ++i) + for(int i = 0; i < MAX_COLOR_ATTACHMENTS; i++) { if(mColorbufferPointer[i].name() == texture && IsTextureTarget(mColorbufferType[i])) { @@ -145,7 +145,7 @@ void Framebuffer::detachRenderbuffer(GLuint renderbuffer) { - for(int i = 0; i < IMPLEMENTATION_MAX_COLOR_ATTACHMENTS; ++i) + for(int i = 0; i < MAX_COLOR_ATTACHMENTS; i++) { if(mColorbufferPointer[i].name() == renderbuffer && IsRenderbuffer(mColorbufferType[i])) { @@ -312,7 +312,7 @@ height = -1; samples = -1; - for(int i = 0; i < IMPLEMENTATION_MAX_COLOR_ATTACHMENTS; ++i) + for(int i = 0; i < MAX_COLOR_ATTACHMENTS; i++) { if(mColorbufferType[i] != GL_NONE) { @@ -613,7 +613,7 @@ mColorbufferPointer[0] = new Renderbuffer(0, colorbuffer); mColorbufferType[0] = defaultRenderbufferType; - for(int i = 1; i < IMPLEMENTATION_MAX_COLOR_ATTACHMENTS; ++i) + for(int i = 1; i < MAX_COLOR_ATTACHMENTS; i++) { mColorbufferPointer[i] = nullptr; mColorbufferType[i] = GL_NONE;
diff --git a/src/OpenGL/libGLESv2/Framebuffer.h b/src/OpenGL/libGLESv2/Framebuffer.h index 662a9cc..66f05f2 100644 --- a/src/OpenGL/libGLESv2/Framebuffer.h +++ b/src/OpenGL/libGLESv2/Framebuffer.h
@@ -15,6 +15,7 @@ #ifndef LIBGLESV2_FRAMEBUFFER_H_ #define LIBGLESV2_FRAMEBUFFER_H_ +#include "Context.h" #include "common/Object.hpp" #include "common/Image.hpp"
diff --git a/src/OpenGL/libGLESv2/Program.cpp b/src/OpenGL/libGLESv2/Program.cpp index ccd54b2..d965278 100644 --- a/src/OpenGL/libGLESv2/Program.cpp +++ b/src/OpenGL/libGLESv2/Program.cpp
@@ -1134,15 +1134,15 @@ void Program::applyUniformBuffers(BufferBinding* uniformBuffers) { - GLint vertexUniformBuffers[IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS]; - GLint fragmentUniformBuffers[IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS]; + GLint vertexUniformBuffers[MAX_UNIFORM_BUFFER_BINDINGS]; + GLint fragmentUniformBuffers[MAX_UNIFORM_BUFFER_BINDINGS]; - for(unsigned int bufferBindingIndex = 0; bufferBindingIndex < IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS; ++bufferBindingIndex) + for(unsigned int bufferBindingIndex = 0; bufferBindingIndex < MAX_UNIFORM_BUFFER_BINDINGS; bufferBindingIndex++) { vertexUniformBuffers[bufferBindingIndex] = -1; } - for(unsigned int bufferBindingIndex = 0; bufferBindingIndex < IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS; ++bufferBindingIndex) + for(unsigned int bufferBindingIndex = 0; bufferBindingIndex < MAX_UNIFORM_BUFFER_BINDINGS; bufferBindingIndex++) { fragmentUniformBuffers[bufferBindingIndex] = -1; } @@ -1172,7 +1172,7 @@ } } - for(unsigned int bufferBindingIndex = 0; bufferBindingIndex < IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS; ++bufferBindingIndex) + for(unsigned int bufferBindingIndex = 0; bufferBindingIndex < MAX_UNIFORM_BUFFER_BINDINGS; bufferBindingIndex++) { int index = vertexUniformBuffers[bufferBindingIndex]; device->VertexProcessor::setUniformBuffer(bufferBindingIndex, (index != -1) ? uniformBuffers[index].get()->getResource() : nullptr, (index != -1) ? uniformBuffers[index].getOffset() : 0); @@ -1384,7 +1384,7 @@ } } } - + for(int i = 0; i < rows; i++) { linkedAttribute[location + i] = *attribute;
diff --git a/src/OpenGL/libGLESv2/Texture.cpp b/src/OpenGL/libGLESv2/Texture.cpp index 8bbbed5..fe1824c 100644 --- a/src/OpenGL/libGLESv2/Texture.cpp +++ b/src/OpenGL/libGLESv2/Texture.cpp
@@ -507,7 +507,7 @@ Texture2D::Texture2D(GLuint name) : Texture(name) { - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { image[i] = nullptr; } @@ -522,7 +522,7 @@ { resource->lock(sw::DESTRUCT); - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[i]) { @@ -567,7 +567,7 @@ { int imageCount = 0; - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[i] && image[i]->isChildOf(this)) { @@ -626,7 +626,7 @@ ASSERT(isSamplerComplete()); int levels = 0; - while(levels < MIPMAP_LEVELS && image[levels]) + while(levels < IMPLEMENTATION_MAX_TEXTURE_LEVELS && image[levels]) { levels++; } @@ -672,7 +672,7 @@ return; } - for(int level = 0; level < MIPMAP_LEVELS; level++) + for(int level = 0; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) { if(image[level]) { @@ -689,7 +689,7 @@ void Texture2D::releaseTexImage() { - for(int level = 0; level < MIPMAP_LEVELS; level++) + for(int level = 0; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) { if(image[level]) { @@ -984,7 +984,7 @@ { for(int f = 0; f < 6; f++) { - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { image[f][i] = nullptr; } @@ -1003,7 +1003,7 @@ for(int f = 0; f < 6; f++) { - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[f][i]) { @@ -1062,7 +1062,7 @@ for(int f = 0; f < 6; f++) { - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[f][i] && image[f][i]->isChildOf(this)) { @@ -1122,7 +1122,7 @@ ASSERT(isSamplerComplete()); int levels = 0; - while(levels < MIPMAP_LEVELS && image[0][levels]) + while(levels < IMPLEMENTATION_MAX_TEXTURE_LEVELS && image[0][levels]) { levels++; } @@ -1468,7 +1468,7 @@ Texture3D::Texture3D(GLuint name) : Texture(name) { - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { image[i] = nullptr; } @@ -1483,7 +1483,7 @@ { resource->lock(sw::DESTRUCT); - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[i]) { @@ -1528,7 +1528,7 @@ { int imageCount = 0; - for(int i = 0; i < MIPMAP_LEVELS; i++) + for(int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) { if(image[i] && image[i]->isChildOf(this)) { @@ -1593,7 +1593,7 @@ ASSERT(isSamplerComplete()); int levels = 0; - while(levels < MIPMAP_LEVELS && image[levels]) + while(levels < IMPLEMENTATION_MAX_TEXTURE_LEVELS && image[levels]) { levels++; } @@ -1635,7 +1635,7 @@ return; } - for(int level = 0; level < MIPMAP_LEVELS; level++) + for(int level = 0; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) { if(image[level]) { @@ -1652,7 +1652,7 @@ void Texture3D::releaseTexImage() { - for(int level = 0; level < MIPMAP_LEVELS; level++) + for(int level = 0; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) { if(image[level]) { @@ -2033,10 +2033,10 @@ egl::Image *createDepthStencil(unsigned int width, unsigned int height, sw::Format format, int multiSampleDepth, bool discard) { - if(width == 0 || height == 0 || height > OUTLINE_RESOLUTION) + if(width == 0 || height == 0 || height > sw::OUTLINE_RESOLUTION) { ERR("Invalid parameters: %dx%d", width, height); - return 0; + return nullptr; } bool lockable = true;
diff --git a/src/OpenGL/libGLESv2/Texture.h b/src/OpenGL/libGLESv2/Texture.h index 603ef5e..8c7c5c8 100644 --- a/src/OpenGL/libGLESv2/Texture.h +++ b/src/OpenGL/libGLESv2/Texture.h
@@ -38,15 +38,10 @@ enum { - IMPLEMENTATION_MAX_TEXTURE_LEVELS = MIPMAP_LEVELS, - IMPLEMENTATION_MAX_TEXTURE_SIZE = 1 << (MIPMAP_LEVELS - 1), - IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE = 1 << (MIPMAP_LEVELS - 1), - IMPLEMENTATION_MAX_RENDERBUFFER_SIZE = OUTLINE_RESOLUTION, - IMPLEMENTATION_MAX_COLOR_ATTACHMENTS = MAX_COLOR_ATTACHMENTS, - IMPLEMENTATION_MAX_DRAW_BUFFERS = 8, - IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, - IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS = MAX_UNIFORM_BUFFER_BINDINGS, - IMPLEMENTATION_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 1, + IMPLEMENTATION_MAX_TEXTURE_LEVELS = sw::MIPMAP_LEVELS, + IMPLEMENTATION_MAX_TEXTURE_SIZE = 1 << (IMPLEMENTATION_MAX_TEXTURE_LEVELS - 1), + IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE = 1 << (IMPLEMENTATION_MAX_TEXTURE_LEVELS - 1), + IMPLEMENTATION_MAX_RENDERBUFFER_SIZE = sw::OUTLINE_RESOLUTION, }; class Texture : public egl::Texture
diff --git a/src/OpenGL/libGLESv2/TransformFeedback.h b/src/OpenGL/libGLESv2/TransformFeedback.h index 4f4302b..4871ee1 100644 --- a/src/OpenGL/libGLESv2/TransformFeedback.h +++ b/src/OpenGL/libGLESv2/TransformFeedback.h
@@ -15,6 +15,7 @@ #define LIBGLESV2_TRANSFORM_FEEDBACK_H_ #include "Buffer.h" +#include "Context.h" #include "common/Object.hpp" #include "Renderer/Renderer.hpp"
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp index f6e9b24..44bb5a4 100644 --- a/src/OpenGL/libGLESv2/libGLESv2.cpp +++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -22,6 +22,7 @@ #include "Shader.h" #include "Texture.h" #include "Query.h" +#include "TransformFeedback.h" #include "common/debug.h" #include "Common/Version.h" @@ -2023,7 +2024,7 @@ } // fall through case GL_COLOR_ATTACHMENT0: - if((attachment - GL_COLOR_ATTACHMENT0) >= es2::IMPLEMENTATION_MAX_COLOR_ATTACHMENTS) + if((attachment - GL_COLOR_ATTACHMENT0) >= MAX_COLOR_ATTACHMENTS) { return error(GL_INVALID_ENUM); } @@ -2174,7 +2175,7 @@ } // fall through case GL_COLOR_ATTACHMENT0: - if((attachment - GL_COLOR_ATTACHMENT0) >= es2::IMPLEMENTATION_MAX_COLOR_ATTACHMENTS) + if((attachment - GL_COLOR_ATTACHMENT0) >= MAX_COLOR_ATTACHMENTS) { return error(GL_INVALID_ENUM); } @@ -2843,7 +2844,7 @@ } // fall through case GL_COLOR_ATTACHMENT0: - if((attachment - GL_COLOR_ATTACHMENT0) >= es2::IMPLEMENTATION_MAX_COLOR_ATTACHMENTS) + if((attachment - GL_COLOR_ATTACHMENT0) >= MAX_COLOR_ATTACHMENTS) { return error(GL_INVALID_ENUM); } @@ -6628,7 +6629,7 @@ } // fall through case GL_COLOR_ATTACHMENT0: - if((attachment - GL_COLOR_ATTACHMENT0) >= es2::IMPLEMENTATION_MAX_COLOR_ATTACHMENTS) + if((attachment - GL_COLOR_ATTACHMENT0) >= MAX_COLOR_ATTACHMENTS) { return error(GL_INVALID_ENUM); }
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp index a95908b..1adb45c 100644 --- a/src/OpenGL/libGLESv2/libGLESv3.cpp +++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -19,6 +19,7 @@ #include "Sampler.h" #include "Texture.h" #include "mathutil.h" +#include "TransformFeedback.h" #include "common/debug.h" #include <GLES3/gl3.h> @@ -553,7 +554,7 @@ case GL_COLOR_ATTACHMENT31: { GLuint index = (src - GL_COLOR_ATTACHMENT0); - if(index >= es2::IMPLEMENTATION_MAX_COLOR_ATTACHMENTS) + if(index >= MAX_COLOR_ATTACHMENTS) { return error(GL_INVALID_ENUM); } @@ -1131,7 +1132,7 @@ { TRACE("(GLsizei n = %d, const GLenum *bufs = %p)", n, bufs); - if(n < 0 || n > es2::IMPLEMENTATION_MAX_DRAW_BUFFERS) + if(n < 0 || n > MAX_DRAW_BUFFERS) { return error(GL_INVALID_VALUE); } @@ -1198,7 +1199,7 @@ case GL_COLOR_ATTACHMENT31: { GLuint index = (bufs[i] - GL_COLOR_ATTACHMENT0); - if(index >= es2::IMPLEMENTATION_MAX_COLOR_ATTACHMENTS) + if(index >= MAX_COLOR_ATTACHMENTS) { return error(GL_INVALID_ENUM); } @@ -1960,7 +1961,7 @@ switch(target) { case GL_TRANSFORM_FEEDBACK_BUFFER: - if(index >= es2::IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) + if(index >= MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) { return error(GL_INVALID_VALUE); } @@ -1972,11 +1973,11 @@ context->bindGenericTransformFeedbackBuffer(buffer); break; case GL_UNIFORM_BUFFER: - if(index >= es2::IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS) + if(index >= MAX_UNIFORM_BUFFER_BINDINGS) { return error(GL_INVALID_VALUE); } - if(offset % es2::IMPLEMENTATION_UNIFORM_BUFFER_OFFSET_ALIGNMENT != 0) + if(offset % UNIFORM_BUFFER_OFFSET_ALIGNMENT != 0) { return error(GL_INVALID_VALUE); } @@ -2001,7 +2002,7 @@ switch(target) { case GL_TRANSFORM_FEEDBACK_BUFFER: - if(index >= es2::IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) + if(index >= MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) { return error(GL_INVALID_VALUE); } @@ -2009,7 +2010,7 @@ context->bindGenericTransformFeedbackBuffer(buffer); break; case GL_UNIFORM_BUFFER: - if(index >= es2::IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS) + if(index >= MAX_UNIFORM_BUFFER_BINDINGS) { return error(GL_INVALID_VALUE); } @@ -2030,7 +2031,7 @@ switch(bufferMode) { case GL_SEPARATE_ATTRIBS: - if(count > es2::IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) + if(count > MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) { return error(GL_INVALID_VALUE); } @@ -2575,7 +2576,7 @@ switch(buffer) { case GL_COLOR: - if(drawbuffer < 0 || drawbuffer >= es2::IMPLEMENTATION_MAX_DRAW_BUFFERS) + if(drawbuffer < 0 || drawbuffer >= MAX_DRAW_BUFFERS) { return error(GL_INVALID_VALUE); } @@ -2612,7 +2613,7 @@ switch(buffer) { case GL_COLOR: - if(drawbuffer < 0 || drawbuffer >= es2::IMPLEMENTATION_MAX_DRAW_BUFFERS) + if(drawbuffer < 0 || drawbuffer >= MAX_DRAW_BUFFERS) { return error(GL_INVALID_VALUE); } @@ -2639,7 +2640,7 @@ switch(buffer) { case GL_COLOR: - if(drawbuffer < 0 || drawbuffer >= es2::IMPLEMENTATION_MAX_DRAW_BUFFERS) + if(drawbuffer < 0 || drawbuffer >= MAX_DRAW_BUFFERS) { return error(GL_INVALID_VALUE); } @@ -2941,7 +2942,7 @@ TRACE("(GLuint program = %d, GLuint uniformBlockIndex = %d, GLuint uniformBlockBinding = %d)", program, uniformBlockIndex, uniformBlockBinding); - if(uniformBlockBinding >= es2::IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS) + if(uniformBlockBinding >= MAX_UNIFORM_BUFFER_BINDINGS) { return error(GL_INVALID_VALUE); }