# {py:mod}`simvx.graphics.gpu.secondary_engine` ```{py:module} simvx.graphics.gpu.secondary_engine ``` ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`SecondaryRenderContext ` - ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext :summary: ``` * - {py:obj}`SecondaryResidency ` - ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryResidency :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`log ` - ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.log :summary: ``` * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.__all__ :summary: ``` ```` ### API ````{py:data} log :canonical: simvx.graphics.gpu.secondary_engine.log :value: > 'getLogger(...)' ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.log ``` ```` ````{py:data} __all__ :canonical: simvx.graphics.gpu.secondary_engine.__all__ :value: > ['SecondaryRenderContext', 'SecondaryResidency'] ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.__all__ ``` ```` `````{py:class} SecondaryRenderContext(slot: simvx.graphics.gpu.multi_device.DeviceSlot, *, capabilities: simvx.graphics.gpu.capabilities.RenderCapabilities | None, content_scale: tuple[float, float] = (1.0, 1.0), extent: tuple[int, int] | None = None, render_pass: typing.Any = None, max_textures: int = 4096) :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.__init__ ``` ````{py:property} ctx :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.ctx :type: simvx.graphics.gpu.context.GPUContext ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.ctx ``` ```` ````{py:property} capabilities :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.capabilities :type: simvx.graphics.gpu.capabilities.RenderCapabilities | None ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.capabilities ``` ```` ````{py:property} content_scale :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.content_scale :type: tuple[float, float] ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.content_scale ``` ```` ````{py:property} extent :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.extent :type: tuple[int, int] | None ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.extent ``` ```` ````{py:property} shader_dir :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.shader_dir :type: typing.Any ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.shader_dir ``` ```` ````{py:property} render_pass :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.render_pass :type: typing.Any ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.render_pass ``` ```` ````{py:property} current_timestamp_pool :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.current_timestamp_pool :type: typing.Any ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.current_timestamp_pool ``` ```` ````{py:property} mesh_registry :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.mesh_registry :type: simvx.graphics.renderer.mesh_registry.MeshRegistry ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.mesh_registry ``` ```` ````{py:property} texture_manager :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.texture_manager :type: typing.Any ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.texture_manager ``` ```` ````{py:property} renderer :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.renderer :type: typing.Any ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.renderer ``` ```` ````{py:method} attach_renderer(renderer: typing.Any) -> None :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.attach_renderer ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.attach_renderer ``` ```` ````{py:method} ensure_command_pool() -> typing.Any :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.ensure_command_pool ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.ensure_command_pool ``` ```` ````{py:method} ensure_offscreen_render_pass() -> typing.Any :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.ensure_offscreen_render_pass ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.ensure_offscreen_render_pass ``` ```` ````{py:property} texture_descriptor_layout :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.texture_descriptor_layout :type: typing.Any ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.texture_descriptor_layout ``` ```` ````{py:property} texture_descriptor_set :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.texture_descriptor_set :type: typing.Any ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.texture_descriptor_set ``` ```` ````{py:method} register_texture(image_view: typing.Any, *, filter: str = 'linear', mip_count: int = 1) -> int :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.register_texture ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.register_texture ``` ```` ````{py:method} upload_texture_pixels(pixels: numpy.ndarray, width: int, height: int, *, filter: str = 'linear') -> int :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.upload_texture_pixels ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.upload_texture_pixels ``` ```` ````{py:method} update_texture(slot: int, image_view: typing.Any) -> None :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.update_texture ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.update_texture ``` ```` ````{py:method} unregister_texture(slot: int) -> None :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.unregister_texture ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.unregister_texture ``` ```` ````{py:method} push_constants(cmd: typing.Any, pipeline_layout: typing.Any, data: bytes | bytearray) -> None :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.push_constants ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.push_constants ``` ```` ````{py:method} capture_frame() -> typing.Any :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.capture_frame :abstractmethod: ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.capture_frame ``` ```` ````{py:method} destroy() -> None :canonical: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.destroy ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryRenderContext.destroy ``` ```` ````` `````{py:class} SecondaryResidency(facade: simvx.graphics.gpu.secondary_engine.SecondaryRenderContext) :canonical: simvx.graphics.gpu.secondary_engine.SecondaryResidency ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryResidency ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryResidency.__init__ ``` ````{py:method} ensure_meshes(meshes: list[tuple[int, numpy.ndarray, numpy.ndarray]]) -> dict[int, typing.Any] :canonical: simvx.graphics.gpu.secondary_engine.SecondaryResidency.ensure_meshes ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryResidency.ensure_meshes ``` ```` ````{py:method} secondary_mesh(primary_mesh_id: int) -> typing.Any | None :canonical: simvx.graphics.gpu.secondary_engine.SecondaryResidency.secondary_mesh ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryResidency.secondary_mesh ``` ```` ````{py:method} ensure_textures(textures: list[tuple[int, numpy.ndarray, int, int]]) -> dict[int, int] :canonical: simvx.graphics.gpu.secondary_engine.SecondaryResidency.ensure_textures ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryResidency.ensure_textures ``` ```` ````{py:method} secondary_texture(primary_tex_id: int) -> int | None :canonical: simvx.graphics.gpu.secondary_engine.SecondaryResidency.secondary_texture ```{autodoc2-docstring} simvx.graphics.gpu.secondary_engine.SecondaryResidency.secondary_texture ``` ```` `````