Status – Week 248 Victor Moya Summary Streamer. TraceDriver. bGPU Signal Traffic Analyzer. How to commit code. Streamer Added index mode. Supports out of order memory response. Supports out of order streaming to the shaders. Supports out of order shader output. Vertexs are sent in order to the Rasterizer. Implemented a kind of ‘index/vertex reorder queue’. Stream mode and index mode use the same streaming code. from Memory Controller Streamer Index Data Buffer Index Cache commit Output Input (vertex index) Cache Cache (vertex attributes) to Shader from Shader to Rasterizer from Memory Controller Streamer Index Data Buffer next 4 alloc fifo 4 Vertex Cache VRQ 4 Shader”i” Vertex Fifo tail head Streamer (index mode) 1) Load index data into the index buffer (divided in two half buffers for ‘pipelining’). 2) If the index cache has a free entry and there are free input and output cache entries (starvation?) => 2.1) read new index from index data buffer. 2.2) search index in the output cache => 2.2.1) uf found and output cache entry free => mark index/vertex as shaded, reserve the output cache entry for the index/vertex (references = 1). 2.2.2) uf found output cache entry and references > 0 => mark index as shaded, increment reference counter. 2.2.3) if found output cache entry and references == 0 => mark index as not shaded, increment reference counter. 2.2.4) if not found => reserve new input and output cache entries for the index/vertex, mark as not loaded and not shaded. Streamer (index mode) 3) If the memory controller is ready and there are index/vertex not loaded => ask for the next attribute of the current load vertex. 4) If there are loaded indexes (vertex) and the shaders can receive new vertexes => send vertex to the vertex shader. Issue can be out of order. Streamer (index mode) 5) If there are new vertex outputs from the shaders => broadcast to the index cache the vertex id, mark indexes as shaded, store vertex output in the reserved entry of the ouput cache. Can be received out of order. 6) If the current index/vertex to commit in the index cache has been already shaded adn the rasterizer is ready => send to the rasterizer, decrement output cache entry reference counter, if references are 0 free output cache entry, free index cache entry. Streamer (stream mode) Use vertex counter (start + current vertex) as index. Uses the same algorithm that index mode. TraceDriver Early implementation. Added to the cvs tree. To do: correct some errors. add vertex program binary code. integrate with the simulator. Future work: add support for vertex arrays, index arrays, vertexs programs. support ‘real’ OpenGL traces. bGPU Now I can start testing it ... Signal Traffic Analyzer Changes to the simulator infraestructure already discussed (mail): Agreggate dynamic object and traffic control functionalities in a single class. All data going through the signal class would use objects derived from that class. SignalBinder has the capability to dump the traffic for a given cycle. Signal Traffic Analyzer Visualization program? Perl? C? How to commit code New files and modified files are not sent zipped using mail to other programmers. New files and modified files are commited using CVS. New files and modified files must keep the code style rules: Indentation is 4 spaces, not 3 spaces, not a tab. Newlines use the UNIX format not the Windows lf/cr format. DO NOT COMMIT CODE WITHOUT FOLLOWING THIS RULES. How to commit code How to commit code with CVS? Put the modified/new files in your cvs image directory. New files and directories are added using ‘cvs add filename’. BEFORE COMMITING ALWAYS DO AN UPDATE: ‘cvs update’ in the cvs source root directoy. How to resolve update conflicts? COMMIT: ‘cvs commit’. Put some comments with what has changed in the code would be nice. Send those comments in a commit notice to the other programmers is also nice. How to commit code How to resolve update conflicts? 1) cvs marks in the source the conflict regions and puts the two code versions. 2) it shouldn’t compile correctly. 3) if it is code you have modified and the conflict is with the old version -> use your code. 4) if it is code someone else has modified and committed but you have not touched -> use the original code. How to commit code 5) if it is code someone else has modified and committed and you have also modified -> a) you know what to do -> do you really know? -> really-> really really really? -> do it. b) you don’t know -> ask. 6) you don’t know what to do -> ask.
© Copyright 2026 Paperzz