Change glGetInternalformativ bufSize values

Specify the maximum count of parameters instead of number of bytes
i.e.

GLint iscol;

GL.glGetInternalformativ(target, fmt, eGL_DEPTH_COMPONENTS, sizeof(GLint), &isdepth);
becomes
GL.glGetInternalformativ(target, fmt, eGL_DEPTH_COMPONENTS, 1, &isdepth);

From GL references pages: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetInternalformat.xhtml

bufSize

Specifies the maximum number of integers of the specified width that may be written to params by the function.
This commit is contained in:
Jake Turner
2021-07-10 15:35:05 +01:00
committed by Baldur Karlsson
parent 3d3e7506aa
commit 59ca2811ef
4 changed files with 23 additions and 24 deletions
+12 -12
View File
@@ -2106,9 +2106,9 @@ ResourceFormat MakeResourceFormat(GLenum target, GLenum fmt)
GLenum *edata = (GLenum *)data;
GLint iscol = 0, isdepth = 0, isstencil = 0;
GL.glGetInternalformativ(target, fmt, eGL_COLOR_COMPONENTS, sizeof(GLint), &iscol);
GL.glGetInternalformativ(target, fmt, eGL_DEPTH_COMPONENTS, sizeof(GLint), &isdepth);
GL.glGetInternalformativ(target, fmt, eGL_STENCIL_COMPONENTS, sizeof(GLint), &isstencil);
GL.glGetInternalformativ(target, fmt, eGL_COLOR_COMPONENTS, 1, &iscol);
GL.glGetInternalformativ(target, fmt, eGL_DEPTH_COMPONENTS, 1, &isdepth);
GL.glGetInternalformativ(target, fmt, eGL_STENCIL_COMPONENTS, 1, &isstencil);
if(iscol == GL_TRUE)
{
@@ -2117,10 +2117,10 @@ ResourceFormat MakeResourceFormat(GLenum target, GLenum fmt)
// colour format
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_RED_SIZE, sizeof(GLint), &data[0]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_GREEN_SIZE, sizeof(GLint), &data[1]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_BLUE_SIZE, sizeof(GLint), &data[2]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_ALPHA_SIZE, sizeof(GLint), &data[3]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_RED_SIZE, 1, &data[0]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_GREEN_SIZE, 1, &data[1]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_BLUE_SIZE, 1, &data[2]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_ALPHA_SIZE, 1, &data[3]);
ret.compCount = 0;
for(int i = 0; i < 4; i++)
@@ -2147,10 +2147,10 @@ ResourceFormat MakeResourceFormat(GLenum target, GLenum fmt)
RDCERR("Unexpected/unhandled non-uniform format: '%s'", ToStr(fmt).c_str());
}
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_RED_TYPE, sizeof(GLint), &data[0]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_GREEN_TYPE, sizeof(GLint), &data[1]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_BLUE_TYPE, sizeof(GLint), &data[2]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_ALPHA_TYPE, sizeof(GLint), &data[3]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_RED_TYPE, 1, &data[0]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_GREEN_TYPE, 1, &data[1]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_BLUE_TYPE, 1, &data[2]);
GL.glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_ALPHA_TYPE, 1, &data[3]);
for(int i = ret.compCount; i < 4; i++)
data[i] = data[0];
@@ -2174,7 +2174,7 @@ ResourceFormat MakeResourceFormat(GLenum target, GLenum fmt)
RDCERR("Unexpected/unhandled non-uniform format: '%s'", ToStr(fmt).c_str());
}
GL.glGetInternalformativ(target, fmt, eGL_COLOR_ENCODING, sizeof(GLint), &data[0]);
GL.glGetInternalformativ(target, fmt, eGL_COLOR_ENCODING, 1, &data[0]);
if(edata[0] == eGL_SRGB || fmt == eGL_SR8_EXT || fmt == eGL_SRG8_EXT)
ret.compType = CompType::UNormSRGB;
}
+4 -4
View File
@@ -190,8 +190,8 @@ void WrappedOpenGL::CopyTex2DMSToArray(GLuint &destArray, GLuint srcMS, GLint wi
rs.FetchState(this);
GLenum viewClass;
GL.glGetInternalformativ(eGL_TEXTURE_2D_ARRAY, intFormat, eGL_VIEW_COMPATIBILITY_CLASS,
sizeof(GLenum), (GLint *)&viewClass);
GL.glGetInternalformativ(eGL_TEXTURE_2D_ARRAY, intFormat, eGL_VIEW_COMPATIBILITY_CLASS, 1,
(GLint *)&viewClass);
GLenum fmt = eGL_R32UI;
if(viewClass == eGL_VIEW_CLASS_8_BITS)
@@ -396,8 +396,8 @@ void WrappedOpenGL::CopyArrayToTex2DMS(GLuint destMS, GLuint srcArray, GLint wid
rs.FetchState(this);
GLenum viewClass;
drv.glGetInternalformativ(eGL_TEXTURE_2D_ARRAY, intFormat, eGL_VIEW_COMPATIBILITY_CLASS,
sizeof(GLenum), (GLint *)&viewClass);
drv.glGetInternalformativ(eGL_TEXTURE_2D_ARRAY, intFormat, eGL_VIEW_COMPATIBILITY_CLASS, 1,
(GLint *)&viewClass);
GLenum fmt = eGL_R32UI;
if(viewClass == eGL_VIEW_CLASS_8_BITS)
+4 -4
View File
@@ -3626,8 +3626,8 @@ bool GLReplay::IsTextureSupported(const TextureDescription &tex)
}
GLint supported = 0, fragment = 0;
m_pDriver->glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_SUPPORTED, 4, &supported);
m_pDriver->glGetInternalformativ(target, fmt, eGL_FRAGMENT_TEXTURE, 4, &fragment);
m_pDriver->glGetInternalformativ(target, fmt, eGL_INTERNALFORMAT_SUPPORTED, 1, &supported);
m_pDriver->glGetInternalformativ(target, fmt, eGL_FRAGMENT_TEXTURE, 1, &fragment);
// check the texture is supported
if(supported == 0 || fragment == 0)
@@ -3638,8 +3638,8 @@ bool GLReplay::IsTextureSupported(const TextureDescription &tex)
if(tex.msSamp > 1 && !IsDepthStencilFormat(fmt))
{
GLenum viewClass = eGL_NONE;
m_pDriver->glGetInternalformativ(eGL_TEXTURE_2D_ARRAY, fmt, eGL_VIEW_COMPATIBILITY_CLASS,
sizeof(GLenum), (GLint *)&viewClass);
m_pDriver->glGetInternalformativ(eGL_TEXTURE_2D_ARRAY, fmt, eGL_VIEW_COMPATIBILITY_CLASS, 1,
(GLint *)&viewClass);
if(viewClass == eGL_NONE)
return false;
+3 -4
View File
@@ -362,7 +362,7 @@ void main()
bool QueryFormatBool(GLenum target, GLenum format, GLenum pname)
{
GLint param = 0;
glGetInternalformativ(target, format, pname, sizeof(param), &param);
glGetInternalformativ(target, format, pname, 1, &param);
return param != 0;
}
@@ -373,11 +373,10 @@ void main()
test.canStencil = QueryFormatBool(test.target, test.fmt.internalFormat, GL_STENCIL_RENDERABLE);
GLint numSamples = 0;
glGetInternalformativ(test.target, test.fmt.internalFormat, GL_NUM_SAMPLE_COUNTS,
sizeof(numSamples), &numSamples);
glGetInternalformativ(test.target, test.fmt.internalFormat, GL_NUM_SAMPLE_COUNTS, 1, &numSamples);
GLint samples[8];
glGetInternalformativ(test.target, test.fmt.internalFormat, GL_SAMPLES, sizeof(samples), samples);
glGetInternalformativ(test.target, test.fmt.internalFormat, GL_SAMPLES, 1, samples);
Vec4i dimensions(texWidth, texHeight, texDepth);