Auto merge of #20598 - servo:webgl, r=Manishearth

Four nondescript WebGL improvements

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20598)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2018-04-10 04:28:40 -04:00 committed by GitHub
commit ce72e52656
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 10 deletions

View file

@ -151,6 +151,13 @@ impl<'a> WebGLValidator for CommonTexImage2DValidator<'a> {
} }
}; };
// GL_INVALID_VALUE is generated if target is one of the six cube map 2D
// image targets and the width and height parameters are not equal.
if target.is_cubic() && self.width != self.height {
self.context.webgl_error(InvalidValue);
return Err(TexImageValidationError::InvalidCubicTextureDimensions);
}
// GL_INVALID_VALUE is generated if level is less than 0. // GL_INVALID_VALUE is generated if level is less than 0.
if self.level < 0 { if self.level < 0 {
self.context.webgl_error(InvalidValue); self.context.webgl_error(InvalidValue);
@ -287,13 +294,6 @@ impl<'a> WebGLValidator for TexImage2DValidator<'a> {
border, border,
} = self.common_validator.validate()?; } = self.common_validator.validate()?;
// GL_INVALID_VALUE is generated if target is one of the six cube map 2D
// image targets and the width and height parameters are not equal.
if target.is_cubic() && width != height {
context.webgl_error(InvalidValue);
return Err(TexImageValidationError::InvalidCubicTextureDimensions);
}
// GL_INVALID_ENUM is generated if format or data_type is not an // GL_INVALID_ENUM is generated if format or data_type is not an
// accepted value. // accepted value.
let data_type = match TexDataType::from_gl_constant(self.data_type) { let data_type = match TexDataType::from_gl_constant(self.data_type) {

View file

@ -303,10 +303,11 @@ impl WebGLProgram {
// Check if the name is reserved // Check if the name is reserved
if name.starts_with("gl_") { if name.starts_with("gl_") {
return Err(WebGLError::InvalidOperation); return Ok(None);
} }
if name.starts_with("webgl") || name.starts_with("_webgl_") { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#GLSL_CONSTRUCTS
if name.starts_with("webgl_") || name.starts_with("_webgl_") {
return Ok(None); return Ok(None);
} }

View file

@ -109,7 +109,7 @@ impl WebGLTexture {
let face_count = match target { let face_count = match target {
constants::TEXTURE_2D => 1, constants::TEXTURE_2D => 1,
constants::TEXTURE_CUBE_MAP => 6, constants::TEXTURE_CUBE_MAP => 6,
_ => return Err(WebGLError::InvalidOperation) _ => return Err(WebGLError::InvalidEnum)
}; };
self.face_count.set(face_count); self.face_count.set(face_count);
self.target.set(Some(target)); self.target.set(Some(target));