타일 ​​기반 렌더링 GPU에서 텍스처 캐시 작동 방식


9

캐시는 타일 기반 렌더링에서 어떻게 작동합니까?

캐시 적중률을 개선하는 방법에 대한 팁이 있습니까? (예를 들어, 타일이 수평으로 처리되고 텍스처가 동일한 삼각형의 수직 세그먼트가있는 경우 삼각형이 수평으로 레이아웃되어있는 것보다 캐시에서 더 잘 작동합니까?)


1
삼각형의 세로 대 가로 레이아웃은 무엇을 의미합니까?
Mokosha

@ Mokosha 죄송합니다, 이것은 어떻게 든 나에게 눈에 띄지 않았습니다. 방금 봤어요 이것은 실제적인 질문보다 이론적 인 것이며 지금 이것이 의미가 있는지조차 모르겠습니다. 어쨌든, 삼각형이 타일 (x, y) 및 (x + 1, y)와 교차 하고이 두 타일이 차례로 처리된다는 것을 의미했습니다. 삼각형이 교차하는 (x, y)와 (x, y + 1)보다 텍스처 캐시가 더 좋을까요? (경계 픽셀과 삼각형의 레이아웃이 타일 처리와 같은 방향이 아니기 때문에)
Felipe Lira

답변:


19

타일 ​​기반 GPU인지 여부는 텍스처 캐시 아키텍처에 실제로 영향을 미치지 않습니다. 텍스처의 메모리 레이아웃은 모든 GPU에서 Morton order 또는 Hilbert 곡선의 풍미와 비슷 합니다.

결과적으로 GPU 메모리 시스템은 텍셀의 캐시 라인을 가져 오기 때문에 정삼각형에 가까운 삼각형을 렌더링하는 것이 더 효율적입니다.

타일 ​​경계에서 분명히 텍셀을 두 번 가져와야 할 수도 있습니다. 타일 ​​테두리가 "몇"픽셀 일 뿐이므로 비용이 적게 듭니다.

다음과 같은 실험에서 입증 된 것처럼 데스크톱 GPU는 타일 기반 GPU와 동일하게 작동합니다. http://www.g-truc.net/post-0597.html

타일의 크기는 다르지만 두 아키텍처 모두 실제로 조각을 다른 크기의 타일 계층 구조로 처리합니다.

타일 ​​기반 GPU를 코딩 할 때 항상 권장하는 사항은 다음과 같습니다.

  1. 당신이하지 않는 프레임 버퍼 오브젝트를 전환하지 마십시오 정말 필요.
  2. 새 프레임 버퍼 객체를 바인딩 할 때 현재 프레임 버퍼의 내용을 저장할 필요가 없으면 버립니다. 새 프레임 버퍼의 내용을로드하지 않으려면 프레임 버퍼를 비워야합니다.

편집이 의미하지 않았으므로 두 번째 항목을 업데이트했습니다. 그렇지 않으면 멋지게 보입니다!
Christophe

안녕하세요 크리스토프, "등변"이 아닌 "등변"삼각형을 의미 했습니까? 하드웨어 에서는 주소 지정이 훨씬 쉬우 므로 "Hilbert"보다는 "Morton"순서를 말했을 것 입니다.
Simon F

@Christophe 감사합니다! 이것은 정말 도움이됩니다. 테두리 픽셀의 경우 텍스처 캐시가 중요하지 않습니까? 그것은 내가 궁금했던 것입니다. 따라서 타일 (x, y)와 (x + 1, y)와 교차하는 삼각형이 있고 GPU는 타일 (x, y)를 래스터 화했습니다. 다른 실행 단위가 처리하더라도 타일 (x + 1, y)이 다음에 있다고 가정하면이 삼각형의 텍셀을 샘플링 할 때 텍스처 캐시의 이점이 없습니까?
Felipe Lira

또한 Hilbert 패턴이 궁금합니다. 필자는 항상 이것이 압축 압축 텍스처에 해당한다고 가정했습니다. 모든 텍스처에 적용됩니까? 추신 : 나는 또한 마지막 단락을 따르지 않았습니다.
Felipe Lira

A의 PVRTC 인코딩 질감 블록 모튼 주문
ashleysmithgpu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.