aboutsummaryrefslogtreecommitdiff
path: root/alacritty
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2020-12-10 09:38:32 +0300
committerGitHub <noreply@github.com>2020-12-10 09:38:32 +0300
commitb0022047542de5979895ae0957e958b8cd5b6020 (patch)
treee50ce60becbc2395009c9aae50d39fb0837cd139 /alacritty
parent8e6a608b2d5affaa969174cf7a4e273b358b1509 (diff)
downloadr-alacritty-b0022047542de5979895ae0957e958b8cd5b6020.tar.gz
r-alacritty-b0022047542de5979895ae0957e958b8cd5b6020.tar.bz2
r-alacritty-b0022047542de5979895ae0957e958b8cd5b6020.zip
Remove live-shader-reload feature
Since live-shader-reload is generally unused and unmaintained, and could only be used for debugging purposes, since it refers relative paths, this feature was removed for the sake of simplicity.
Diffstat (limited to 'alacritty')
-rw-r--r--alacritty/Cargo.toml2
-rw-r--r--alacritty/src/renderer/mod.rs124
-rw-r--r--alacritty/src/renderer/rects.rs18
3 files changed, 11 insertions, 133 deletions
diff --git a/alacritty/Cargo.toml b/alacritty/Cargo.toml
index 2c94093d..8de19196 100644
--- a/alacritty/Cargo.toml
+++ b/alacritty/Cargo.toml
@@ -59,7 +59,5 @@ default = ["wayland", "x11"]
x11 = ["copypasta/x11", "glutin/x11", "x11-dl", "image"]
wayland = ["copypasta/wayland", "glutin/wayland", "wayland-client"]
winpty = ["alacritty_terminal/winpty"]
-# Enabling this feature makes shaders automatically reload when changed
-live-shader-reload = []
nightly = []
bench = []
diff --git a/alacritty/src/renderer/mod.rs b/alacritty/src/renderer/mod.rs
index ccdd2812..3320a860 100644
--- a/alacritty/src/renderer/mod.rs
+++ b/alacritty/src/renderer/mod.rs
@@ -1,13 +1,9 @@
use std::collections::HashMap;
use std::fmt::{self, Display, Formatter};
-use std::fs;
use std::hash::BuildHasherDefault;
use std::io;
use std::mem::size_of;
-use std::path::PathBuf;
use std::ptr;
-use std::sync::mpsc;
-use std::time::Duration;
use bitflags::bitflags;
use crossfont::{
@@ -16,29 +12,23 @@ use crossfont::{
};
use fnv::FnvHasher;
use log::{error, info};
-use notify::{watcher, DebouncedEvent, RecursiveMode, Watcher};
use alacritty_terminal::config::Cursor;
use alacritty_terminal::index::{Column, Line};
use alacritty_terminal::term::cell::Flags;
use alacritty_terminal::term::color::Rgb;
use alacritty_terminal::term::{CursorKey, RenderableCell, RenderableCellContent, SizeInfo};
-use alacritty_terminal::thread;
use crate::config::font::{Font, FontDescription};
use crate::config::ui_config::{Delta, UIConfig};
use crate::cursor;
use crate::gl;
use crate::gl::types::*;
-use crate::renderer::rects::{RectRenderer, RectShaderProgram, RenderRect};
+use crate::renderer::rects::{RectRenderer, RenderRect};
pub mod rects;
-// Shader paths for live reload.
-static TEXT_SHADER_F_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/res/text.f.glsl");
-static TEXT_SHADER_V_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/res/text.v.glsl");
-
-// Shader source which is used when live-shader-reload feature is disable.
+// Shader source.
static TEXT_SHADER_F: &str = include_str!("../../res/text.f.glsl");
static TEXT_SHADER_V: &str = include_str!("../../res/text.v.glsl");
@@ -53,10 +43,6 @@ pub trait LoadGlyph {
fn clear(&mut self);
}
-enum Msg {
- ShaderReload,
-}
-
#[derive(Debug)]
pub enum Error {
ShaderCreation(ShaderCreationError),
@@ -402,7 +388,6 @@ pub struct QuadRenderer {
current_atlas: usize,
active_tex: GLuint,
batch: Batch,
- rx: mpsc::Receiver<Msg>,
rect_renderer: RectRenderer,
}
@@ -602,43 +587,6 @@ impl QuadRenderer {
gl::BindBuffer(gl::ELEMENT_ARRAY_BUFFER, 0);
}
- let (msg_tx, msg_rx) = mpsc::channel();
-
- if cfg!(feature = "live-shader-reload") {
- thread::spawn_named("live shader reload", move || {
- let (tx, rx) = std::sync::mpsc::channel();
- // The Duration argument is a debouncing period.
- let mut watcher =
- watcher(tx, Duration::from_millis(10)).expect("create file watcher");
- watcher
- .watch(TEXT_SHADER_F_PATH, RecursiveMode::NonRecursive)
- .expect("watch fragment shader");
- watcher
- .watch(TEXT_SHADER_V_PATH, RecursiveMode::NonRecursive)
- .expect("watch vertex shader");
- watcher
- .watch(rects::RECT_SHADER_V_PATH, RecursiveMode::NonRecursive)
- .expect("watch rect vertex shader");
- watcher
- .watch(rects::RECT_SHADER_F_PATH, RecursiveMode::NonRecursive)
- .expect("watch rect fragment shader");
-
- loop {
- let event = rx.recv().expect("watcher event");
-
- match event {
- DebouncedEvent::Rename(..) => continue,
- DebouncedEvent::Create(_)
- | DebouncedEvent::Write(_)
- | DebouncedEvent::Chmod(_) => {
- msg_tx.send(Msg::ShaderReload).expect("msg send ok");
- },
- _ => {},
- }
- }
- });
- }
-
let mut renderer = Self {
program,
rect_renderer: RectRenderer::new()?,
@@ -649,7 +597,6 @@ impl QuadRenderer {
current_atlas: 0,
active_tex: 0,
batch: Batch::new(),
- rx: msg_rx,
};
let atlas = Atlas::new(ATLAS_SIZE);
@@ -697,12 +644,6 @@ impl QuadRenderer {
where
F: FnOnce(RenderApi<'_>) -> T,
{
- // Flush message queue.
- if let Ok(Msg::ShaderReload) = self.rx.try_recv() {
- self.reload_shaders(props);
- }
- while self.rx.try_recv().is_ok() {}
-
unsafe {
gl::UseProgram(self.program.id);
self.program.set_term_uniforms(props);
@@ -749,36 +690,6 @@ impl QuadRenderer {
})
}
- pub fn reload_shaders(&mut self, props: &SizeInfo) {
- info!("Reloading shaders...");
- let result = (TextShaderProgram::new(), RectShaderProgram::new());
- let (program, rect_program) = match result {
- (Ok(program), Ok(rect_program)) => {
- unsafe {
- gl::UseProgram(program.id);
- program.update_projection(
- props.width(),
- props.height(),
- props.padding_x(),
- props.padding_y(),
- );
- gl::UseProgram(0);
- }
-
- info!("... successfully reloaded shaders");
- (program, rect_program)
- },
- (Err(err), _) | (_, Err(err)) => {
- error!("{}", err);
- return;
- },
- };
-
- self.active_tex = 0;
- self.program = program;
- self.rect_renderer.set_program(rect_program);
- }
-
pub fn resize(&mut self, size: &SizeInfo) {
// Viewport.
unsafe {
@@ -1046,13 +957,8 @@ impl<'a> Drop for RenderApi<'a> {
impl TextShaderProgram {
pub fn new() -> Result<TextShaderProgram, ShaderCreationError> {
- let (vertex_src, fragment_src) = if cfg!(feature = "live-shader-reload") {
- (None, None)
- } else {
- (Some(TEXT_SHADER_V), Some(TEXT_SHADER_F))
- };
- let vertex_shader = create_shader(TEXT_SHADER_V_PATH, gl::VERTEX_SHADER, vertex_src)?;
- let fragment_shader = create_shader(TEXT_SHADER_F_PATH, gl::FRAGMENT_SHADER, fragment_src)?;
+ let vertex_shader = create_shader(gl::VERTEX_SHADER, TEXT_SHADER_V)?;
+ let fragment_shader = create_shader(gl::FRAGMENT_SHADER, TEXT_SHADER_F)?;
let program = create_program(vertex_shader, fragment_shader)?;
unsafe {
@@ -1162,19 +1068,7 @@ pub fn create_program(vertex: GLuint, fragment: GLuint) -> Result<GLuint, Shader
}
}
-pub fn create_shader(
- path: &str,
- kind: GLenum,
- source: Option<&'static str>,
-) -> Result<GLuint, ShaderCreationError> {
- let from_disk;
- let source = if let Some(src) = source {
- src
- } else {
- from_disk = fs::read_to_string(path)?;
- &from_disk[..]
- };
-
+pub fn create_shader(kind: GLenum, source: &'static str) -> Result<GLuint, ShaderCreationError> {
let len: [GLint; 1] = [source.len() as GLint];
let shader = unsafe {
@@ -1200,7 +1094,7 @@ pub fn create_shader(
gl::DeleteShader(shader);
}
- Err(ShaderCreationError::Compile(PathBuf::from(path), log))
+ Err(ShaderCreationError::Compile(log))
}
}
@@ -1256,7 +1150,7 @@ pub enum ShaderCreationError {
Io(io::Error),
/// Error compiling shader.
- Compile(PathBuf, String),
+ Compile(String),
/// Problem linking.
Link(String),
@@ -1275,8 +1169,8 @@ impl Display for ShaderCreationError {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
match self {
ShaderCreationError::Io(err) => write!(f, "Unable to read shader: {}", err),
- ShaderCreationError::Compile(path, log) => {
- write!(f, "Failed compiling shader at {}: {}", path.display(), log)
+ ShaderCreationError::Compile(log) => {
+ write!(f, "Failed compiling shader: {}", log)
},
ShaderCreationError::Link(log) => write!(f, "Failed linking shader: {}", log),
}
diff --git a/alacritty/src/renderer/rects.rs b/alacritty/src/renderer/rects.rs
index 040e0e4b..1f50da87 100644
--- a/alacritty/src/renderer/rects.rs
+++ b/alacritty/src/renderer/rects.rs
@@ -197,8 +197,6 @@ impl RenderLines {
}
/// Shader sources for rect rendering program.
-pub static RECT_SHADER_F_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/res/rect.f.glsl");
-pub static RECT_SHADER_V_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/res/rect.v.glsl");
static RECT_SHADER_F: &str = include_str!("../../res/rect.f.glsl");
static RECT_SHADER_V: &str = include_str!("../../res/rect.v.glsl");
@@ -228,11 +226,6 @@ pub struct RectRenderer {
}
impl RectRenderer {
- /// Update program when doing live-shader-reload.
- pub fn set_program(&mut self, program: RectShaderProgram) {
- self.program = program;
- }
-
pub fn new() -> Result<Self, renderer::Error> {
let mut vao: GLuint = 0;
let mut vbo: GLuint = 0;
@@ -359,15 +352,8 @@ pub struct RectShaderProgram {
impl RectShaderProgram {
pub fn new() -> Result<Self, renderer::ShaderCreationError> {
- let (vertex_src, fragment_src) = if cfg!(feature = "live-shader-reload") {
- (None, None)
- } else {
- (Some(RECT_SHADER_V), Some(RECT_SHADER_F))
- };
- let vertex_shader =
- renderer::create_shader(RECT_SHADER_V_PATH, gl::VERTEX_SHADER, vertex_src)?;
- let fragment_shader =
- renderer::create_shader(RECT_SHADER_F_PATH, gl::FRAGMENT_SHADER, fragment_src)?;
+ let vertex_shader = renderer::create_shader(gl::VERTEX_SHADER, RECT_SHADER_V)?;
+ let fragment_shader = renderer::create_shader(gl::FRAGMENT_SHADER, RECT_SHADER_F)?;
let program = renderer::create_program(vertex_shader, fragment_shader)?;
unsafe {