Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

webgl: Implement the pending texImage2D overload, and add more validation #10443

Merged
merged 12 commits into from Apr 22, 2016

webgl: Validate that the texture should be power of two if the level is

greater than 1
  • Loading branch information
emilio committed Apr 19, 2016
commit c807cab3001b1676a8f9c47811629f621027e8b2
@@ -304,10 +304,13 @@ impl WebGLRenderingContext {

// If an attempt is made to call this function with no
// WebGLTexture bound, an INVALID_OPERATION error is generated.
if texture.is_none() {
self.webgl_error(InvalidOperation);
return false;
}
let texture = match texture {
Some(texture) => texture,
None => {
self.webgl_error(InvalidOperation);
return false;
}
};

// GL_INVALID_ENUM is generated if data_type is not an accepted value.
match data_type {
@@ -372,6 +375,13 @@ impl WebGLRenderingContext {
return false;
}

// GL_INVALID_VALUE is generated if level is greater than zero and the
// texture and the texture is not power of two.
if level > 0 && !texture.is_power_of_two() {
self.webgl_error(InvalidValue);
return false;
}

// GL_INVALID_VALUE is generated if border is not 0.
if border != 0 {
self.webgl_error(InvalidValue);
@@ -227,6 +227,10 @@ impl WebGLTexture {
}
}

pub fn is_power_of_two(&self) -> bool {
self.image_info_at_face(0, 0).is_power_of_two()
}

pub fn populate_mip_chain(&self, first_level: u32, last_level: u32) -> WebGLResult<()> {
let base_image_info = self.image_info_at_face(0, first_level);
if !base_image_info.is_initialized() {
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.