render: Moved render backend from core to render

This commit is contained in:
Nathan Adams 2022-08-14 01:16:17 +02:00 committed by Mike Welsh
parent 760da753fb
commit 824b4aa8d1
20 changed files with 46 additions and 40 deletions

3
Cargo.lock generated
View File

@ -3010,7 +3010,6 @@ dependencies = [
name = "ruffle_core"
version = "0.1.0"
dependencies = [
"approx",
"bitflags",
"bitstream-io",
"build_playerglobal",
@ -3099,6 +3098,8 @@ dependencies = [
name = "ruffle_render"
version = "0.1.0"
dependencies = [
"approx",
"downcast-rs",
"flate2",
"gc-arena",
"gif",

View File

@ -53,9 +53,6 @@ version = "0.3.21"
[target.'cfg(target_family = "wasm")'.dependencies.wasm-bindgen-futures]
version = "0.4.32"
[dev-dependencies]
approx = "0.5.1"
[features]
default = ["minimp3"]
h263 = ["h263-rs", "h263-rs-yuv"]

View File

@ -1,7 +1,6 @@
pub mod audio;
pub mod log;
pub mod navigator;
pub mod render;
pub mod storage;
pub mod ui;
pub mod video;

View File

@ -1,7 +1,7 @@
//! Video decoder backends
use crate::backend::render::RenderBackend;
use generational_arena::{Arena, Index};
use ruffle_render::backend::RenderBackend;
use ruffle_render::bitmap::BitmapInfo;
use swf::{VideoCodec, VideoDeblocking};

View File

@ -1,10 +1,10 @@
//! Pure software video decoding backend.
use crate::backend::render::RenderBackend;
use crate::backend::video::{
DecodedFrame, EncodedFrame, Error, FrameDependency, VideoBackend, VideoStreamHandle,
};
use generational_arena::Arena;
use ruffle_render::backend::RenderBackend;
use ruffle_render::bitmap::{Bitmap, BitmapFormat, BitmapHandle, BitmapInfo};
use swf::{VideoCodec, VideoDeblocking};

View File

@ -1,10 +1,10 @@
use gc_arena::Collect;
use crate::avm2::{Object as Avm2Object, Value as Avm2Value};
use crate::backend::render::RenderBackend;
use crate::bitmap::color_transform_params::ColorTransformParams;
use crate::bitmap::turbulence::Turbulence;
use bitflags::bitflags;
use ruffle_render::backend::RenderBackend;
use ruffle_render::bitmap::{Bitmap, BitmapFormat, BitmapHandle};
use std::ops::Range;

View File

@ -7,7 +7,6 @@ use crate::backend::{
audio::{AudioBackend, AudioManager, SoundHandle, SoundInstanceHandle},
log::LogBackend,
navigator::NavigatorBackend,
render::RenderBackend,
storage::StorageBackend,
ui::{InputManager, UiBackend},
video::VideoBackend,
@ -27,6 +26,7 @@ use core::fmt;
use gc_arena::{Collect, MutationContext};
use instant::Instant;
use rand::rngs::SmallRng;
use ruffle_render::backend::RenderBackend;
use ruffle_render::transform::TransformStack;
use std::collections::{HashMap, VecDeque};
use std::sync::{Arc, Mutex, Weak};

View File

@ -2,7 +2,6 @@ use crate::avm1::Object as Avm1Object;
use crate::avm2::{
Activation as Avm2Activation, Object as Avm2Object, StageObject as Avm2StageObject,
};
use crate::backend::render::ShapeHandle;
use crate::context::{RenderContext, UpdateContext};
use crate::display_object::{DisplayObjectBase, DisplayObjectPtr, TDisplayObject};
use crate::drawing::Drawing;
@ -10,6 +9,7 @@ use crate::prelude::*;
use crate::tag_utils::SwfMovie;
use crate::vminterface::{AvmType, Instantiator};
use gc_arena::{Collect, GcCell, MutationContext};
use ruffle_render::backend::ShapeHandle;
use std::cell::{Ref, RefMut};
use std::sync::Arc;

View File

@ -1,10 +1,10 @@
use crate::backend::render::{RenderBackend, ShapeHandle};
use crate::context::{RenderContext, UpdateContext};
use crate::display_object::{DisplayObjectBase, DisplayObjectPtr, TDisplayObject};
use crate::library::Library;
use crate::prelude::*;
use crate::tag_utils::SwfMovie;
use gc_arena::{Collect, Gc, GcCell, MutationContext};
use ruffle_render::backend::{RenderBackend, ShapeHandle};
use std::cell::{Ref, RefCell, RefMut};
use std::sync::Arc;
use swf::{Fixed16, Fixed8, Twips};

View File

@ -1,6 +1,6 @@
use crate::backend::render::ShapeHandle;
use crate::context::RenderContext;
use gc_arena::Collect;
use ruffle_render::backend::ShapeHandle;
use ruffle_render::bitmap::{BitmapInfo, BitmapSource};
use ruffle_render::bounding_box::BoundingBox;
use ruffle_render::shape_utils::{DistilledShape, DrawCommand, DrawPath};

View File

@ -1,8 +1,8 @@
use crate::backend::render::{RenderBackend, ShapeHandle};
use crate::html::TextSpan;
use crate::prelude::*;
use crate::string::WStr;
use gc_arena::{Collect, Gc, MutationContext};
use ruffle_render::backend::{RenderBackend, ShapeHandle};
use ruffle_render::transform::Transform;
use std::cell::{Cell, Ref, RefCell};
@ -540,11 +540,11 @@ impl From<swf::CsmTextSettings> for TextRenderSettings {
#[cfg(test)]
mod tests {
use crate::backend::render::{NullRenderer, RenderBackend};
use crate::font::{EvalParameters, Font};
use crate::player::{Player, DEVICE_FONT_TAG};
use crate::string::WStr;
use gc_arena::{rootless_arena, MutationContext};
use ruffle_render::backend::{null::NullRenderer, RenderBackend};
use std::ops::DerefMut;
use swf::Twips;

View File

@ -1,6 +1,6 @@
use crate::avm1::property_map::PropertyMap as Avm1PropertyMap;
use crate::avm2::{ClassObject as Avm2ClassObject, Domain as Avm2Domain};
use crate::backend::{audio::SoundHandle, render};
use crate::backend::audio::SoundHandle;
use crate::character::Character;
use crate::display_object::{Bitmap, Graphic, MorphShape, TDisplayObject, Text};
use crate::font::{Font, FontDescriptor};
@ -9,6 +9,7 @@ use crate::string::AvmString;
use crate::tag_utils::SwfMovie;
use crate::vminterface::AvmType;
use gc_arena::{Collect, MutationContext};
use ruffle_render::utils::remove_invalid_jpeg_data;
use std::collections::HashMap;
use std::sync::{Arc, Weak};
use swf::CharacterId;
@ -293,7 +294,7 @@ impl<'gc> MovieLibrary<'gc> {
self.jpeg_tables = if data.is_empty() {
None
} else {
Some(render::remove_invalid_jpeg_data(&data[..]).to_vec())
Some(remove_invalid_jpeg_data(&data[..]).to_vec())
}
}

View File

@ -11,7 +11,6 @@ use crate::backend::{
audio::{AudioBackend, AudioManager},
log::LogBackend,
navigator::{NavigatorBackend, Request},
render::RenderBackend,
storage::StorageBackend,
ui::{InputManager, MouseCursor, UiBackend},
video::VideoBackend,
@ -39,6 +38,7 @@ use gc_arena::{make_arena, ArenaParameters, Collect, GcCell};
use instant::Instant;
use log::info;
use rand::{rngs::SmallRng, SeedableRng};
use ruffle_render::backend::RenderBackend;
use ruffle_render::transform::TransformStack;
use std::collections::{HashMap, VecDeque};
use std::ops::DerefMut;
@ -1827,6 +1827,7 @@ impl PlayerBuilder {
/// Builds the player, wiring up the backends and configuring the specified settings.
pub fn build(self) -> Arc<Mutex<Player>> {
use crate::backend::*;
use ruffle_render::backend::null::NullRenderer;
let audio = self
.audio
.unwrap_or_else(|| Box::new(audio::NullAudioBackend::new()));
@ -1838,7 +1839,7 @@ impl PlayerBuilder {
.unwrap_or_else(|| Box::new(navigator::NullNavigatorBackend::new()));
let renderer = self
.renderer
.unwrap_or_else(|| Box::new(render::NullRenderer::new()));
.unwrap_or_else(|| Box::new(NullRenderer::new()));
let storage = self
.storage
.unwrap_or_else(|| Box::new(storage::MemoryStorageBackend::new()));

View File

@ -13,8 +13,12 @@ gif = "0.11.4"
png = { version = "0.17.5" }
flate2 = "1.0.24"
smallvec = { version = "1.9.0", features = ["union"] }
downcast-rs = "1.2.0"
[dependencies.jpeg-decoder]
version = "0.2.6"
default-features = false # can't use rayon on web
[dev-dependencies]
approx = "0.5.1"

View File

@ -1,10 +1,12 @@
use fnv::FnvHashMap;
use ruffle_core::backend::render::{NullBitmapSource, RenderBackend, ShapeHandle, Transform};
use ruffle_core::swf::{self, Color};
use ruffle_render::backend::null::NullBitmapSource;
use ruffle_render::backend::{RenderBackend, ShapeHandle};
use ruffle_render::bitmap::{Bitmap, BitmapFormat, BitmapHandle, BitmapSource};
use ruffle_render::color_transform::ColorTransform;
use ruffle_render::matrix::Matrix;
use ruffle_render::shape_utils::{DistilledShape, DrawCommand, LineScaleMode, LineScales};
use ruffle_render::transform::Transform;
use ruffle_web_common::{JsError, JsResult};
use wasm_bindgen::{Clamped, JsCast};
use web_sys::{

View File

@ -1,15 +1,13 @@
mod null;
pub mod null;
pub use null::{NullBitmapSource, NullRenderer};
pub use ruffle_render::utils::{determine_jpeg_tag_format, remove_invalid_jpeg_data};
use downcast_rs::Downcast;
use ruffle_render::bitmap::{Bitmap, BitmapHandle, BitmapInfo, BitmapSource};
use ruffle_render::matrix::Matrix;
use ruffle_render::shape_utils::DistilledShape;
pub use ruffle_render::transform::Transform;
use ruffle_render::utils;
pub use swf;
use crate::bitmap::{Bitmap, BitmapHandle, BitmapInfo, BitmapSource};
use crate::error::Error;
use crate::matrix::Matrix;
use crate::shape_utils::DistilledShape;
use crate::transform::Transform;
use crate::utils;
use downcast_rs::{impl_downcast, Downcast};
use swf;
pub trait RenderBackend: Downcast {
fn set_viewport_dimensions(&mut self, width: u32, height: u32);
@ -103,7 +101,5 @@ pub trait RenderBackend: Downcast {
}
impl_downcast!(RenderBackend);
type Error = Box<dyn std::error::Error>;
#[derive(Copy, Clone, Debug)]
pub struct ShapeHandle(pub usize);

View File

@ -1,8 +1,9 @@
use crate::backend::render::{Error, RenderBackend, ShapeHandle};
use ruffle_render::bitmap::{Bitmap, BitmapHandle, BitmapInfo, BitmapSource};
use ruffle_render::matrix::Matrix;
use ruffle_render::shape_utils::DistilledShape;
use ruffle_render::transform::Transform;
use crate::backend::{RenderBackend, ShapeHandle};
use crate::bitmap::{Bitmap, BitmapHandle, BitmapInfo, BitmapSource};
use crate::error::Error;
use crate::matrix::Matrix;
use crate::shape_utils::DistilledShape;
use crate::transform::Transform;
use swf::Color;
pub struct NullBitmapSource;

View File

@ -1,3 +1,4 @@
pub mod backend;
pub mod bitmap;
pub mod bounding_box;
pub mod color_transform;

View File

@ -1,9 +1,11 @@
use bytemuck::{Pod, Zeroable};
use fnv::FnvHashMap;
use ruffle_core::backend::render::{NullBitmapSource, RenderBackend, ShapeHandle, Transform};
use ruffle_core::swf::{self, Color};
use ruffle_render::backend::null::NullBitmapSource;
use ruffle_render::backend::{RenderBackend, ShapeHandle};
use ruffle_render::bitmap::{Bitmap, BitmapFormat, BitmapHandle, BitmapSource};
use ruffle_render::shape_utils::DistilledShape;
use ruffle_render::transform::Transform;
use ruffle_render_common_tess::{
Gradient as TessGradient, GradientType, ShapeTessellator, Vertex as TessVertex,
};

View File

@ -7,11 +7,12 @@ use crate::utils::{create_buffer_with_data, format_list, get_backend_names};
use bytemuck::{Pod, Zeroable};
use enum_map::Enum;
use fnv::FnvHashMap;
use ruffle_core::backend::render::{RenderBackend, ShapeHandle, Transform};
use ruffle_core::swf::{self, Color};
use ruffle_render::backend::{RenderBackend, ShapeHandle};
use ruffle_render::bitmap::{Bitmap, BitmapHandle, BitmapSource};
use ruffle_render::color_transform::ColorTransform;
use ruffle_render::shape_utils::DistilledShape;
use ruffle_render::transform::Transform;
use ruffle_render_common_tess::{
DrawType as TessDrawType, Gradient as TessGradient, GradientType, ShapeTessellator,
Vertex as TessVertex,
@ -901,7 +902,7 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
let handle = ShapeHandle(self.meshes.len());
let mesh = self.register_shape_internal(
(&shape).into(),
&ruffle_core::backend::render::NullBitmapSource,
&ruffle_render::backend::null::NullBitmapSource,
);
self.meshes.push(mesh);
handle