Heim > Web-Frontend > js-Tutorial > Hauptteil

In Bezug auf die Synchronisierung von Layer-Komponenten und das Problem der Reduzierung der GPU-Bandbreite

零到壹度
Freigeben: 2018-03-28 13:24:14
Original
2472 Leute haben es durchsucht

Dieser Artikel enthält hauptsächlich einen Artikel über die Synchronisierung von Layer-Komponenten und das Problem der Reduzierung der GPU-Bandbreite. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich ist. Folgen wir dem Herausgeber und werfen wir einen Blick darauf.

Fragen:

1) Können Ebenen unabhängig voneinander aktualisiert werden, z. B. wie man die Statusleistenszene optimiert, die auf der Videoebene angezeigt wird;

Erste Idee von jedem Aktualisieren Sie zu diesem Zeitpunkt nur die Videoebene oder umgehen Sie die Videoebene für die Verarbeitung durch BQ.

2) Gemeinsame Verarbeitung der Videoebene durch FW und GPU

3) Verständnis mehrerer Variablen

(1) mCurrentTexture, nextTextureImage; (2) BufferItem, BufferQueue, mslots; Slot, mqueuedframe, mqueuedItem; (3) syncForReleaseLocked, updateAndReleaseLocked, releaseBufferLocked, releaseBuffer

(5) Der Unterschied zwischen mslots, mframe und mframenumber

(6) Die Logik von onframavailable und Latchbuffer, Reject, Updateteximage,.

/ acquireBuffer attempts to acquire ownership of the next pending buffer in the BufferQueue.
      // If no buffer is pending then it returns NO_BUFFER_AVAILABLE. If a buffer is successfully
      // acquired, the information about the buffer is returned in BufferItem.
      //
      // If the buffer returned had previously been acquired then the BufferItem::mGraphicBuffer field
      // of buffer is set to NULL and it is assumed that the consumer still holds a reference to the
      // buffer.
      //
      // If presentWhen is non-zero, it indicates the time when the buffer will be displayed on
      // screen. If the buffer's timestamp is farther in the future, the buffer won't be acquired, and
      // PRESENT_LATER will be returned. The presentation time is in nanoseconds, and the time base
      // is CLOCK_MONOTONIC.
      //
      // If maxFrameNumber is non-zero, it indicates that acquireBuffer should only return a buffer
      // with a frame number less than or equal to maxFrameNumber. If no such frame is available
      // (such as when a buffer has been replaced but the consumer has not received the
      // onFrameReplaced callback), then PRESENT_LATER will be returned.
      //
      // Return of NO_ERROR means the operation completed as normal.
      //
      // Return of a positive value means the operation could not be completed at this time, but the
      // user should try again later:
      // * NO_BUFFER_AVAILABLE - no buffer is pending (nothing queued by producer)
      // * PRESENT_LATER - the buffer's timestamp is farther in the future
      //
      // Return of a negative value means an error has occurred:
      // * INVALID_OPERATION - too many buffers have been acquired
Nach dem Login kopieren
Unter ihnen updateteximage;
  // Returned by releaseBuffer, after which the consumer must free any references to the
            // just-released buffer that it might have.
            STALE_BUFFER_SLOT = 1,
          // Returned by dequeueBuffer if there are no pending buffers available.
          NO_BUFFER_AVAILABLE,
          // Returned by dequeueBuffer if it's too early for the buffer to be acquired.
          PRESENT_LATER,
Nach dem Login kopieren

(7) Der Unterschied zwischen bufferitem und mslots

(8) Der Unterschied zwischen bufferqueueconsumer und bufferitemconsumer; (9) Acquirebuffer Die Fence-Logik, woher kommt Fencefd? 🎜>

(10)

Das obige ist der detaillierte Inhalt vonIn Bezug auf die Synchronisierung von Layer-Komponenten und das Problem der Reduzierung der GPU-Bandbreite. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage