mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-18 03:35:57 +00:00
* These come from long ago when using PyCharm with not as good type checking and with renderdoc module stubs that were incomplete so needed help identifying types.
82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
import rdtest
|
|
import renderdoc as rd
|
|
|
|
|
|
class GL_Buffer_Updates(rdtest.TestCase):
|
|
demos_test_name = 'GL_Buffer_Updates'
|
|
|
|
def check_capture(self):
|
|
tex = rd.TextureDisplay()
|
|
|
|
# At each action, the centre pixel of the viewport should be green
|
|
action = self.get_first_action()
|
|
while action is not None:
|
|
self.controller.SetFrameEvent(action.eventId, False)
|
|
|
|
if action.flags & rd.ActionFlags.Drawcall:
|
|
pipe = self.controller.GetPipelineState()
|
|
tex = self.controller.GetPipelineState().GetOutputTargets()[0].resource
|
|
|
|
view = self.controller.GetPipelineState().GetViewport(0)
|
|
|
|
x,y = int(view.x + view.width / 2), int(view.y + view.height / 2)
|
|
|
|
# convert to top-left co-ordinates for use with PickPixel
|
|
y = self.get_texture(tex).height - y
|
|
|
|
self.check_pixel_value(tex, x, y, [0.0, 1.0, 0.0, 1.0])
|
|
|
|
action = action.nextAction
|
|
|
|
rdtest.log.success("Draws are all green")
|
|
|
|
# Open the capture and grab the thumbnail, check that it is all green too (dirty way of verifying we didn't
|
|
# break in-app updates but somehow end up with the right data)
|
|
cap = rd.OpenCaptureFile()
|
|
|
|
# Open a particular file
|
|
result = cap.OpenFile(self.capture_filename, '', None)
|
|
|
|
# Make sure the file opened successfully
|
|
if result != rd.ResultCode.Succeeded:
|
|
cap.Shutdown()
|
|
raise rdtest.TestFailureException("Couldn't open '{}': {}".format(self.capture_filename, str(result)))
|
|
|
|
thumb = cap.GetThumbnail(rd.FileType.PNG, 0)
|
|
|
|
tmp_path = rdtest.get_tmp_path('thumbnail.png')
|
|
|
|
with open(tmp_path, 'wb') as f:
|
|
f.write(thumb.data)
|
|
|
|
test_reader = rdtest.png.Reader(filename=tmp_path)
|
|
|
|
test_w, test_h, test_data, test_info = test_reader.read()
|
|
|
|
box_w = test_w//8
|
|
rows = test_h//box_w
|
|
|
|
offset = box_w//2
|
|
|
|
rows_data = list(test_data)
|
|
|
|
comps = 4 if test_info['alpha'] else 3
|
|
|
|
for row in range(0,rows):
|
|
y = row * box_w + offset
|
|
|
|
row_data = rows_data[y]
|
|
|
|
for col in range(0, 8):
|
|
x = col * box_w + offset
|
|
|
|
pixel = (row_data[x * comps + 0]/255, row_data[x * comps + 1]/255,
|
|
row_data[x * comps + 2]/255)
|
|
|
|
if (not rdtest.value_compare((0.2, 0.2, 0.2), pixel, 1) and
|
|
not rdtest.value_compare((0.0, 1.0, 0.0), pixel, 1)):
|
|
raise rdtest.TestFailureException(
|
|
f"Thumbnail of backbuffer at {x},{y} has bad pixel: {pixel}", tmp_path)
|
|
|
|
rdtest.log.success("Thumbnail is as expected")
|