static bool test_pname(void) { GLuint name; const static GLfloat f = 1.0; const static GLuint u = 1; const static GLint i = -5; bool pass = true; /* Setup dsa. */ glCreateTextures(GL_TEXTURE_2D, 1, &name); glBindTextureUnit(0, name); /* Since next command isn't bindless. */ glTextureParameterfv(name, GL_TEXTURE_1D, &f); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameteriv(name, GL_TEXTURE_1D, &i); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterIiv(name, GL_TEXTURE_1D, &i); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterIuiv(name, GL_TEXTURE_1D, &u); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL, "glTextureParameter: GL_INVALID_ENUM on " "bad pname"); return pass; }
/* * The texture parameter must be an existing texture object as returned * by glCreateTextures */ static bool test_target_name(void) { static const GLuint badname = 250; static const GLfloat fvec[2] = { 1.0, 1.0 }; static const GLint ivec[2] = { -1, 1 }; static const GLuint uvec[2] = { 1, 1 }; bool pass = true; glTextureParameteri(badname, GL_TEXTURE_MAX_LEVEL, 4); pass = piglit_check_gl_error(GL_INVALID_OPERATION) && pass; glTextureParameterf(badname, GL_TEXTURE_MAX_LEVEL, 4.0); pass = piglit_check_gl_error(GL_INVALID_OPERATION) && pass; glTextureParameterfv(badname, GL_TEXTURE_MAX_LEVEL, fvec); pass = piglit_check_gl_error(GL_INVALID_OPERATION) && pass; glTextureParameteriv(badname, GL_TEXTURE_MAX_LEVEL, ivec); pass = piglit_check_gl_error(GL_INVALID_OPERATION) && pass; glTextureParameterIiv(badname, GL_TEXTURE_MAX_LEVEL, ivec); pass = piglit_check_gl_error(GL_INVALID_OPERATION) && pass; glTextureParameterIuiv(badname, GL_TEXTURE_MAX_LEVEL, uvec); pass = piglit_check_gl_error(GL_INVALID_OPERATION) && pass; piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL, "glTextureParameter: GL_INVALID_OPERATION " "on bad texture"); return pass; }
void OGLTexture::TexParameterfv(GLenum pname, GLfloat const * param) { float4 const f4_param(param); auto iter = tex_param_fv_.find(pname); if ((iter == tex_param_fv_.end()) || (iter->second != f4_param)) { if (glloader_GL_VERSION_4_5() || glloader_GL_ARB_direct_state_access()) { glTextureParameterfv(texture_, pname, param); } else if (glloader_GL_EXT_direct_state_access()) { glTextureParameterfvEXT(texture_, target_type_, pname, param); } else { OGLRenderEngine& re = *checked_cast<OGLRenderEngine*>(&Context::Instance().RenderFactoryInstance().RenderEngineInstance()); re.BindTexture(0, target_type_, texture_); glTexParameterfv(target_type_, pname, param); } tex_param_fv_[pname] = f4_param; } }
void Tex2DArray::setParam(GLenum pname, const GLfloat *param) { RN_CHECK_PARAM(glTextureParameterfv(id, pname, param), rn::getEnumName(pname) << " " << param); }
/* XXX: Is this actually a valid implementation? */ static bool test_multisample(void) { bool pass = true; static const GLfloat f = 1.0; static const GLint i = -1; static const GLfloat fvec[2] = { 1.0, -1.0 }; static const GLint ivec[2] = { 1, -1 }; static const GLuint uvec[2] = { 1, 4 }; GLuint name; /* GL_TEXTURE_2D_MULTISAMPLE_ARRAY */ glCreateTextures(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 1, &name); glBindTextureUnit(0, name); /* Since next command isn't bindless. */ glTextureParameteri(name, GL_TEXTURE_WRAP_R, i); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterf(name, GL_TEXTURE_WRAP_R, f); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterfv(name, GL_TEXTURE_WRAP_R, fvec); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameteriv(name, GL_TEXTURE_WRAP_R, ivec); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterIiv(name, GL_TEXTURE_WRAP_R, ivec); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterIuiv(name, GL_TEXTURE_WRAP_R, uvec); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; /* GL_TEXTURE_2D_MULTISAMPLE */ glDeleteTextures(1, &name); glCreateTextures(GL_TEXTURE_2D_MULTISAMPLE, 1, &name); glBindTextureUnit(0, name); /* Since next command isn't bindless. */ glTextureParameteri(name, GL_TEXTURE_WRAP_R, i); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterf(name, GL_TEXTURE_WRAP_R, f); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterfv(name, GL_TEXTURE_WRAP_R, fvec); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameteriv(name, GL_TEXTURE_WRAP_R, ivec); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterIiv(name, GL_TEXTURE_WRAP_R, ivec); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; glTextureParameterIuiv(name, GL_TEXTURE_WRAP_R, uvec); pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass; piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL, "glTextureParameter: GL_INVALID_ENUM if " "multisample+sampler state"); return pass; }