Skip to content

Commit

Permalink
chore(driver): pixel ratio
Browse files Browse the repository at this point in the history
  • Loading branch information
atty303 committed May 26, 2024
1 parent 491e662 commit e09cf99
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 7 deletions.
3 changes: 2 additions & 1 deletion packages/driver/src/js/driver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,9 @@ export class Driver {

this.resizeObserver = new ResizeObserver((entries) => {
for (const entry of entries) {
const pixelRatio = document.defaultView?.devicePixelRatio ?? 1;
const { width, height } = entry.contentRect;
this.driverWorker?.resize({ width, height });
this.driverWorker?.resize({ width, height, pixelRatio });
}
});
this.resizeObserver.observe(root);
Expand Down
1 change: 1 addition & 0 deletions packages/driver/src/js/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ export const log = new Log().init(
{
kvfs: "INFO",
subscript: "INFO",
backend: "DEBUG",
},
(level, tag, msg, params) => {
logger[level as keyof typeof logger](tag, msg, params);
Expand Down
4 changes: 2 additions & 2 deletions packages/driver/src/js/renderer/renderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ export class Renderer {
this.screenSize = screenSize;
}

resize(screenSize: { width: number; height: number }) {
resize(screenSize: { width: number; height: number; pixelRatio: number }) {
this.screenSize = screenSize;
this.backend?.resize(screenSize.width, screenSize.height);
this.backend?.resize(screenSize.width, screenSize.height, screenSize.pixelRatio);
}

render(view: DataView) {
Expand Down
6 changes: 5 additions & 1 deletion packages/driver/src/js/renderer/webgl_backend.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { TextureFlags } from "../image.ts";
import { log, tag } from "../logger.ts";
import type { TextureBitmap } from "./renderer.ts";

const vertexShaderSource = `#version 100
Expand Down Expand Up @@ -188,6 +189,7 @@ export class WebGL1Backend {

private readonly textures: Map<string, WebGLTexture> = new Map();
private viewport: number[] = [];
private pixelRatio = 1;
private vertices: VertexBuffer = new VertexBuffer();
private drawCount = 0;
private readonly vbo: WebGLBuffer;
Expand Down Expand Up @@ -265,10 +267,12 @@ export class WebGL1Backend {
this.setViewport(0, 0, canvas.width, canvas.height);
}

resize(width: number, height: number) {
resize(width: number, height: number, pixelRatio: number) {
this._canvas.width = width;
this._canvas.height = height;
this.pixelRatio = pixelRatio;
this.setViewport(0, 0, width, height);
log.debug(tag.backend, `resize: ${width}x${height}(x${pixelRatio})`);
}

setViewport(x: number, y: number, width: number, height: number) {
Expand Down
5 changes: 3 additions & 2 deletions packages/driver/src/js/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,10 @@ export class DriverWorker {
private textMetrics: TextMetrics | undefined;
private textRasterizer: TextRasterizer | undefined;
private renderer: Renderer | undefined;
private screenSize: { width: number; height: number } = {
private screenSize: { width: number; height: number; pixelRatio: number } = {
width: 800,
height: 600,
pixelRatio: 1,
};
private uiState: UIState = {
x: 0,
Expand Down Expand Up @@ -207,7 +208,7 @@ export class DriverWorker {
}
}

resize(size: { width: number; height: number }) {
resize(size: { width: number; height: number; pixelRatio: number }) {
this.screenSize = size;
this.renderer?.resize(size);
this.invalidate();
Expand Down
1 change: 0 additions & 1 deletion packages/driver/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
"noEmit": true,

"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
Expand Down

0 comments on commit e09cf99

Please sign in to comment.