Download presentation
Presentation is loading. Please wait.
1
Status – Week 254 Victor Moya
2
Summary Command Processor. Command Processor. Memory Controller. Memory Controller. Streamer. Streamer. Vertex buffers in OpenGL. Vertex buffers in OpenGL. ARB_vertex_buffer_object. ARB_vertex_buffer_object.
3
Command Processor Memory Controller Streamer Vertex Shader CommProcMemoryWrite CommProcMemoryRead StreamerMemoryReq StreamerMemoryReadStreamerCrontrol StreamerState ShaderStateShaderCommand
4
Vertex Shader Command Processor CommShaderCommand CommShaderState Rasterizer (Fake) ShaderOutput ConsumerState RasterizerCommand RasterizerState
5
Memory Controller MemoryModule Rasterizer (Fake) RastMemoryRead RastMemoryRequest
6
Command Processor Stores all GPU state (debug?). Stores all GPU state (debug?). Receives data from AGP and sends it to the Memory Controller. Receives data from AGP and sends it to the Memory Controller. Receives state changes and sends them to the GPU units. Receives state changes and sends them to the GPU units. Receives commands and issues them to the GPU units. Receives commands and issues them to the GPU units.
7
Command Processor Missing some comunication code with the other units (shaders, rasterizer). Missing some comunication code with the other units (shaders, rasterizer). Missing commands to other units. Missing commands to other units. Missing code for some states. Missing code for some states. Missing AGP_READ and AGP_REG_READ (not useful right now). Missing AGP_READ and AGP_REG_READ (not useful right now).
8
Memory Controller Access to memory modules => Signal. Access to memory modules => Signal. To decide: number of transactions in process at the same time. To decide: number of transactions in process at the same time. Currently only one transaction at a time. Currently only one transaction at a time. Support multiple modules and multiple banks per module. Support multiple modules and multiple banks per module.
9
Streamer Two modes: Two modes: Streaming mode. Streaming mode. Index based streaming mode. Index based streaming mode. Streaming mode: Streaming mode: 1) get data for each active attribute. 1) get data for each active attribute. 2) store vertex input data in the FIFO. 2) store vertex input data in the FIFO. 3) send vertex input to a vertex shader. 3) send vertex input to a vertex shader. 4) repeat until end. 4) repeat until end.
10
Streamer Index based streaming mode: Index based streaming mode: 1) get index data. 1) get index data. 2) get vertex attribute data using index information. 2) get vertex attribute data using index information. 3) store vertex input in FIFO. 3) store vertex input in FIFO. 4) send vertex input to vertex shader. 4) send vertex input to vertex shader. 5) repeat until end. 5) repeat until end.
11
Streamer Accessing to attribute data in stream mode: Accessing to attribute data in stream mode: Direct access. Direct access. Double buffer (pipelined: read first, process first/read second, read first/process second). Double buffer (pipelined: read first, process first/read second, read first/process second). Accessing to attribute data in index mode: Accessing to attribute data in index mode: Attribute buffer could work like a cache? Attribute buffer could work like a cache? Number of attributes per ‘cache line’. Number of attributes per ‘cache line’. Replacement policy. Replacement policy.
12
Streamer from Memory Controller Attribute Buffers (16?) Vertex Input Vertex FIFO to Vertex Shader Index Buffer
13
Vertex Arrays in OpenGL Array definition functions: Array definition functions: VertexPointer(int size, enum type, sizei stride, void *pointer). VertexPointer(int size, enum type, sizei stride, void *pointer). NormalPointer(enum type, sizei stride, void *pointer). NormalPointer(enum type, sizei stride, void *pointer). ColorPointer(int size, enum type, sizei stride, void *pointer). ColorPointer(int size, enum type, sizei stride, void *pointer). SecondaryColorPointer(int size, enum type, sizei stride, void *pointer). SecondaryColorPointer(int size, enum type, sizei stride, void *pointer). IndexPointer(enum type, sizei stride, void *pointer). IndexPointer(enum type, sizei stride, void *pointer). FogCoordPointer(enum type, sizei stride, void *pointer). FogCoordPointer(enum type, sizei stride, void *pointer). TexCoordPointer(int size, enum type, sizei stride, void *pointer). TexCoordPointer(int size, enum type, sizei stride, void *pointer). EdgeFlagPointer(sizei stride, void *pointer). EdgeFlagPointer(sizei stride, void *pointer). VertexAttribPointerARB(uint index, int size, enum type, boolean normalized, sizei stride, const void *pointer). VertexAttribPointerARB(uint index, int size, enum type, boolean normalized, sizei stride, const void *pointer). InterleavedArrays(enum format, sizei stride, void *pointer). InterleavedArrays(enum format, sizei stride, void *pointer).
14
Vertex Arrays in OpenGL Array drawing functions: Array drawing functions: DrawArrays(enum mode, int first, sizei count). DrawArrays(enum mode, int first, sizei count). MultiDrawArrays(enum mode, int *first, sizei *count, sizei primcount). MultiDrawArrays(enum mode, int *first, sizei *count, sizei primcount). DrawElements(enum mode, sizei count, enum type, void *indices). DrawElements(enum mode, sizei count, enum type, void *indices). MultiDrawElements(enum mode, sizei *count, enum type, void **indices, sizei primcount). MultiDrawElements(enum mode, sizei *count, enum type, void **indices, sizei primcount). DrawRangeElements(enum mode, uint start, unit end, sizei count, enum type, void *indices). DrawRangeElements(enum mode, uint start, unit end, sizei count, enum type, void *indices).
15
ARB_vertex_buffer_object BindBufferARB(enum target, uint buffer). BindBufferARB(enum target, uint buffer). DeleteBuffersARB(sizei n, const uint *buffers). DeleteBuffersARB(sizei n, const uint *buffers). GenBuffersARB(sizei n, uint *buffers). GenBuffersARB(sizei n, uint *buffers). boolean IsBufferARB(uint buffer). boolean IsBufferARB(uint buffer). BufferDataARB(enum target, sizeiptrARB size, const void *data, enum usage). BufferDataARB(enum target, sizeiptrARB size, const void *data, enum usage). BufferSubDataARB(enum target, intptrARB offset, sizeiptrARB size, const void *data). BufferSubDataARB(enum target, intptrARB offset, sizeiptrARB size, const void *data). GetBufferSubDataARB(enum target, intptrARB offset, sizeiptrARB size, void *data). GetBufferSubDataARB(enum target, intptrARB offset, sizeiptrARB size, void *data). void *MapBufferARB(enum target, enum access). void *MapBufferARB(enum target, enum access). boolean UnMapBufferARB(enum target). boolean UnMapBufferARB(enum target).
16
ARB_vertex_buffer_object target: target: ARRAY_BUFFER_ARB. ARRAY_BUFFER_ARB. ELEMENT_ARRAY_BUFFER_ARB. ELEMENT_ARRAY_BUFFER_ARB. usage: usage: STREAM_DRAW_ARB STREAM_DRAW_ARB STREAM_READ_ARB STREAM_READ_ARB STREAM_COPY_ARB STREAM_COPY_ARB STATIC_DRAW_ARB STATIC_DRAW_ARB STATIC_READ_ARB STATIC_READ_ARB STATIC_COPY_ARB STATIC_COPY_ARB DYNAMIC_DRAW_ARB DYNAMIC_DRAW_ARB DYNAMIC_READ_ARB DYNAMIC_READ_ARB DYNAMIC_COPY_ARB DYNAMIC_COPY_ARB
17
ARB_vertex_buffer_object access: access: READ_ONLY_ARB. READ_ONLY_ARB. WRITE_ONLY_ARB. WRITE_ONLY_ARB. READ_WRITE_ARB. READ_WRITE_ARB.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.