i965/gen6: Initial implementation of MSAA.
This patch enables MSAA for Gen6, by modifying intel_mipmap_tree to understand multisampled buffers, adapting the rendering pipeline setup to enable multisampled rendering, and adding multisample resolve operations to brw_blorp_blit.cpp. Some preparation work is also included for Gen7, but it is not yet enabled. MSAA support is still fairly preliminary. In particular, the following are not yet supported: - Fully general blits between MSAA and non-MSAA buffers. - Formats other than RGBA8, DEPTH24, and STENCIL8. - Centroid interpolation. - Coverage parameters (glSampleCoverage, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_ALPHA_TO_ONE, GL_SAMPLE_COVERAGE, GL_SAMPLE_COVERAGE_VALUE, GL_SAMPLE_COVERAGE_INVERT). Fixes piglit tests "EXT_framebuffer_multisample/accuracy" on i965/Gen6. v2: - In intel_alloc_renderbuffer_storage(), quantize the requested number of samples to the next higher sample count supported by the hardware. This ensures that a query of GL_SAMPLES will return the correct value. It also ensures that MSAA is fully disabled on Gen7 for now (since Gen7 MSAA support doesn't work yet). - When reading from a non-MSAA surface, ensure that s_is_zero is true so that we won't try to read from a nonexistent sample.
Showing
- src/mesa/drivers/dri/i965/Makefile.sources 1 addition, 0 deletionssrc/mesa/drivers/dri/i965/Makefile.sources
- src/mesa/drivers/dri/i965/brw_blorp.cpp 8 additions, 2 deletionssrc/mesa/drivers/dri/i965/brw_blorp.cpp
- src/mesa/drivers/dri/i965/brw_blorp.h 28 additions, 2 deletionssrc/mesa/drivers/dri/i965/brw_blorp.h
- src/mesa/drivers/dri/i965/brw_blorp_blit.cpp 295 additions, 37 deletionssrc/mesa/drivers/dri/i965/brw_blorp_blit.cpp
- src/mesa/drivers/dri/i965/brw_context.h 8 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_context.h
- src/mesa/drivers/dri/i965/brw_defines.h 7 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_defines.h
- src/mesa/drivers/dri/i965/brw_misc_state.c 8 additions, 25 deletionssrc/mesa/drivers/dri/i965/brw_misc_state.c
- src/mesa/drivers/dri/i965/brw_state.h 4 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_state.h
- src/mesa/drivers/dri/i965/brw_state_upload.c 2 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_state_upload.c
- src/mesa/drivers/dri/i965/brw_wm_surface_state.c 14 additions, 2 deletionssrc/mesa/drivers/dri/i965/brw_wm_surface_state.c
- src/mesa/drivers/dri/i965/gen6_blorp.cpp 19 additions, 25 deletionssrc/mesa/drivers/dri/i965/gen6_blorp.cpp
- src/mesa/drivers/dri/i965/gen6_multisample_state.c 102 additions, 0 deletionssrc/mesa/drivers/dri/i965/gen6_multisample_state.c
- src/mesa/drivers/dri/i965/gen6_sf_state.c 13 additions, 2 deletionssrc/mesa/drivers/dri/i965/gen6_sf_state.c
- src/mesa/drivers/dri/i965/gen6_wm_state.c 12 additions, 0 deletionssrc/mesa/drivers/dri/i965/gen6_wm_state.c
- src/mesa/drivers/dri/i965/gen7_blorp.cpp 17 additions, 3 deletionssrc/mesa/drivers/dri/i965/gen7_blorp.cpp
- src/mesa/drivers/dri/i965/gen7_sf_state.c 12 additions, 2 deletionssrc/mesa/drivers/dri/i965/gen7_sf_state.c
- src/mesa/drivers/dri/i965/gen7_wm_state.c 15 additions, 3 deletionssrc/mesa/drivers/dri/i965/gen7_wm_state.c
- src/mesa/drivers/dri/i965/gen7_wm_surface_state.c 16 additions, 0 deletionssrc/mesa/drivers/dri/i965/gen7_wm_surface_state.c
- src/mesa/drivers/dri/intel/intel_fbo.c 28 additions, 3 deletionssrc/mesa/drivers/dri/intel/intel_fbo.c
- src/mesa/drivers/dri/intel/intel_mipmap_tree.c 42 additions, 10 deletionssrc/mesa/drivers/dri/intel/intel_mipmap_tree.c
Loading
Please register or sign in to comment