diff options
author | Edward O'Callaghan <[email protected]> | 2016-01-03 01:44:55 +1100 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2016-04-07 12:03:58 +1000 |
commit | 0b7075fed75585087fa54b537fa9866bce2fcbee (patch) | |
tree | 5c2e75c3e2043bc4569d109ee9f82e31ef614034 /src/gallium/include | |
parent | b512b5fd3664781d1f9ada1c784353b85bbe0e5b (diff) |
gallium: Put no.of {samples,layers} into pipe_framebuffer_state
Here we store the number of samples and layers directly in the
pipe_framebuffer_state so that in the case of
ARB_framebuffer_no_attachment we may make use of them directly.
Further, we adjust various gallium/auxiliary helper functions
accordingly.
V2:
Convert branches in util_framebuffer_get_num_layers() and
util_framebuffer_get_num_samples() to their canonical form.
V3:
'git stash pop' the typo fix of 'cbufs' which should be
'nr_cbufs' that was missing in V2, woops! Thanks Marek for
pointing this out yet again.
V4:
Squash in the following patch:
'gallium/util: Ensure util_framebuffer_get_num_samples() is valid'
Upon context creation, internal driver structures are malloc()'ed
and memset() to zero them. This results in a invalid number of
samples 'by default'. Handle this in the simplest way to avoid
elaborate and probably equally sub-optimial solutions.
Signed-off-by: Edward O'Callaghan <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/include')
-rw-r--r-- | src/gallium/include/pipe/p_state.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index 5ab53728e82..cb806cb6550 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -298,9 +298,17 @@ struct pipe_stencil_ref }; +/** + * Note that pipe_surfaces are "texture views for rendering" + * and so in the case of ARB_framebuffer_no_attachment there + * is no pipe_surface state available such that we may + * extract the number of samples and layers. + */ struct pipe_framebuffer_state { unsigned width, height; + unsigned samples; /**< Number of samples in a no-attachment framebuffer */ + unsigned layers; /**< Number of layers in a no-attachment framebuffer */ /** multiple color buffers for multiple render targets */ unsigned nr_cbufs; |