aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webgl_validations
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/webgl_validations')
-rw-r--r--components/script/dom/webgl_validations/tex_image_2d.rs122
-rw-r--r--components/script/dom/webgl_validations/types.rs4
2 files changed, 65 insertions, 61 deletions
diff --git a/components/script/dom/webgl_validations/tex_image_2d.rs b/components/script/dom/webgl_validations/tex_image_2d.rs
index e00c988bcb3..46b85dddec7 100644
--- a/components/script/dom/webgl_validations/tex_image_2d.rs
+++ b/components/script/dom/webgl_validations/tex_image_2d.rs
@@ -46,39 +46,32 @@ impl std::error::Error for TexImageValidationError {
fn description(&self) -> &str {
use self::TexImageValidationError::*;
match *self {
- InvalidTextureTarget(_)
- => "Invalid texture target",
- TextureTargetNotBound(_)
- => "Texture was not bound",
- InvalidCubicTextureDimensions
- => "Invalid dimensions were given for a cubic texture target",
- NegativeLevel
- => "A negative level was passed",
- LevelTooHigh
- => "Level too high",
- NegativeDimension
- => "Negative dimensions were passed",
- TextureTooBig
- => "Dimensions given are too big",
- InvalidDataType
- => "Invalid data type",
- InvalidTextureFormat
- => "Invalid texture format",
- TextureFormatMismatch
- => "Texture format mismatch",
- InvalidTypeForFormat
- => "Invalid type for the given format",
- InvalidBorder
- => "Invalid border",
- NonPotTexture
- => "Expected a power of two texture",
+ InvalidTextureTarget(_) => "Invalid texture target",
+ TextureTargetNotBound(_) => "Texture was not bound",
+ InvalidCubicTextureDimensions => {
+ "Invalid dimensions were given for a cubic texture target"
+ },
+ NegativeLevel => "A negative level was passed",
+ LevelTooHigh => "Level too high",
+ NegativeDimension => "Negative dimensions were passed",
+ TextureTooBig => "Dimensions given are too big",
+ InvalidDataType => "Invalid data type",
+ InvalidTextureFormat => "Invalid texture format",
+ TextureFormatMismatch => "Texture format mismatch",
+ InvalidTypeForFormat => "Invalid type for the given format",
+ InvalidBorder => "Invalid border",
+ NonPotTexture => "Expected a power of two texture",
}
}
}
impl fmt::Display for TexImageValidationError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- write!(f, "TexImageValidationError({})", std::error::Error::description(self))
+ write!(
+ f,
+ "TexImageValidationError({})",
+ std::error::Error::description(self)
+ )
}
}
@@ -119,16 +112,19 @@ impl<'a> WebGLValidator for CommonTexImage2DValidator<'a> {
None => {
self.context.webgl_error(InvalidEnum);
return Err(TexImageValidationError::InvalidTextureTarget(self.target));
- }
+ },
};
- let texture = self.context.textures().active_texture_for_image_target(target);
+ let texture = self
+ .context
+ .textures()
+ .active_texture_for_image_target(target);
let limits = self.context.limits();
let max_size = if target.is_cubic() {
- limits.max_cube_map_tex_size
+ limits.max_cube_map_tex_size
} else {
- limits.max_tex_size
+ limits.max_tex_size
};
// If an attempt is made to call this function with no WebGLTexture
@@ -138,7 +134,7 @@ impl<'a> WebGLValidator for CommonTexImage2DValidator<'a> {
None => {
self.context.webgl_error(InvalidOperation);
return Err(TexImageValidationError::TextureTargetNotBound(self.target));
- }
+ },
};
// GL_INVALID_ENUM is generated if internal_format is not an accepted
@@ -148,7 +144,7 @@ impl<'a> WebGLValidator for CommonTexImage2DValidator<'a> {
None => {
self.context.webgl_error(InvalidEnum);
return Err(TexImageValidationError::InvalidTextureFormat);
- }
+ },
};
// GL_INVALID_VALUE is generated if target is one of the six cube map 2D
@@ -217,11 +213,15 @@ impl<'a> WebGLValidator for CommonTexImage2DValidator<'a> {
}
impl<'a> CommonTexImage2DValidator<'a> {
- pub fn new(context: &'a WebGLRenderingContext,
- target: u32, level: i32,
- internal_format: u32,
- width: i32, height: i32,
- border: i32) -> Self {
+ pub fn new(
+ context: &'a WebGLRenderingContext,
+ target: u32,
+ level: i32,
+ internal_format: u32,
+ width: i32,
+ height: i32,
+ border: i32,
+ ) -> Self {
CommonTexImage2DValidator {
context: context,
target: target,
@@ -229,7 +229,7 @@ impl<'a> CommonTexImage2DValidator<'a> {
internal_format: internal_format,
width: width,
height: height,
- border: border
+ border: border,
}
}
}
@@ -242,21 +242,27 @@ pub struct TexImage2DValidator<'a> {
impl<'a> TexImage2DValidator<'a> {
// TODO: Move data validation logic here.
- pub fn new(context: &'a WebGLRenderingContext,
- target: u32,
- level: i32,
- internal_format: u32,
- width: i32,
- height: i32,
- border: i32,
- format: u32,
- data_type: u32) -> Self {
+ pub fn new(
+ context: &'a WebGLRenderingContext,
+ target: u32,
+ level: i32,
+ internal_format: u32,
+ width: i32,
+ height: i32,
+ border: i32,
+ format: u32,
+ data_type: u32,
+ ) -> Self {
TexImage2DValidator {
- common_validator: CommonTexImage2DValidator::new(context, target,
- level,
- internal_format,
- width, height,
- border),
+ common_validator: CommonTexImage2DValidator::new(
+ context,
+ target,
+ level,
+ internal_format,
+ width,
+ height,
+ border,
+ ),
format: format,
data_type: data_type,
}
@@ -309,7 +315,7 @@ impl<'a> WebGLValidator for TexImage2DValidator<'a> {
None => {
context.webgl_error(InvalidEnum);
return Err(TexImageValidationError::InvalidTextureFormat);
- }
+ },
};
// GL_INVALID_OPERATION is generated if format does not match
@@ -319,7 +325,6 @@ impl<'a> WebGLValidator for TexImage2DValidator<'a> {
return Err(TexImageValidationError::TextureFormatMismatch);
}
-
// GL_INVALID_OPERATION is generated if type is
// GL_UNSIGNED_SHORT_4_4_4_4 or GL_UNSIGNED_SHORT_5_5_5_1 and format is
// not GL_RGBA.
@@ -327,11 +332,12 @@ impl<'a> WebGLValidator for TexImage2DValidator<'a> {
// GL_INVALID_OPERATION is generated if type is GL_UNSIGNED_SHORT_5_6_5
// and format is not GL_RGB.
match data_type {
- TexDataType::UnsignedShort4444 |
- TexDataType::UnsignedShort5551 if format != TexFormat::RGBA => {
+ TexDataType::UnsignedShort4444 | TexDataType::UnsignedShort5551
+ if format != TexFormat::RGBA =>
+ {
context.webgl_error(InvalidOperation);
return Err(TexImageValidationError::InvalidTypeForFormat);
- },
+ }
TexDataType::UnsignedShort565 if format != TexFormat::RGB => {
context.webgl_error(InvalidOperation);
return Err(TexImageValidationError::InvalidTypeForFormat);
diff --git a/components/script/dom/webgl_validations/types.rs b/components/script/dom/webgl_validations/types.rs
index a2bdaa0de2f..f3741d218f7 100644
--- a/components/script/dom/webgl_validations/types.rs
+++ b/components/script/dom/webgl_validations/types.rs
@@ -67,9 +67,7 @@ impl TexDataType {
use self::TexDataType::*;
match *self {
UnsignedByte => 1,
- UnsignedShort4444 |
- UnsignedShort5551 |
- UnsignedShort565 => 2,
+ UnsignedShort4444 | UnsignedShort5551 | UnsignedShort565 => 2,
Float => 4,
HalfFloat => 2,
}