Ping Pong Buffer Implementation in XORG
by prija from LinuxQuestions.org on (#5JGMZ)
My current system configuration is like application gives the frame to XORG and XORG is configured to use simple frame buffer driver(mapped to DDR address).
I need to implement a ping pong buffer utility in such a way that every new frame goes to two different DDR addresses.
I can reserve two block of memory in simple frame buffer driver adding below mentioned code in system-user.dtsi:
chosen {
framebuffer0: framebuffer@3ee48000 {
compatible = "simple-framebuffer";
memory-region = <&frontbuff_reserved &backbuff_reserved>;
width = <1280>;
height = <800>;
stride = <5120>;
format = "a8r8g8b8";
status = "okay";
};
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
frontbuff_reserved: framebuffer@3ee48000 {
no-map;
reg = <0x0 0x3ee48000 0x0 0x900000>;
};
backbuff_reserved: framebuffer@3f248000 {
no-map;
reg = <0x0 0x3f248000 0x0 0x400000>;
}; };
But I need some support in how XORG can use these two memory alternatively on every frame/image at runtime
I need to implement a ping pong buffer utility in such a way that every new frame goes to two different DDR addresses.
I can reserve two block of memory in simple frame buffer driver adding below mentioned code in system-user.dtsi:
chosen {
framebuffer0: framebuffer@3ee48000 {
compatible = "simple-framebuffer";
memory-region = <&frontbuff_reserved &backbuff_reserved>;
width = <1280>;
height = <800>;
stride = <5120>;
format = "a8r8g8b8";
status = "okay";
};
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
frontbuff_reserved: framebuffer@3ee48000 {
no-map;
reg = <0x0 0x3ee48000 0x0 0x900000>;
};
backbuff_reserved: framebuffer@3f248000 {
no-map;
reg = <0x0 0x3f248000 0x0 0x400000>;
}; };
But I need some support in how XORG can use these two memory alternatively on every frame/image at runtime