mesa/st: Use _mesa_geometric_ functions appropriately
Change references to gl_framebuffer::Width, Height, MaxNumLayers and Visual::samples to use the _mesa_geometric_ convenience functions for those places where the geometry of the gl_framebuffer is needed. This is in contrast to the geometry of the intersection of the attachments of the gl_framebuffer. This patch paves the way to enable GL_ARB_framebuffer_no_attachements for all gallium drivers. V.2: Remove itermeditate variable state. Signed-off-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
committed by
Dave Airlie
parent
b40375a21c
commit
85f79f0c75
@@ -244,7 +244,7 @@ static void update_raster_state( struct st_context *st )
|
||||
_mesa_is_multisample_enabled(ctx) &&
|
||||
ctx->Multisample.SampleShading &&
|
||||
ctx->Multisample.MinSampleShadingValue *
|
||||
ctx->DrawBuffer->Visual.samples > 1;
|
||||
_mesa_geometric_samples(ctx->DrawBuffer) > 1;
|
||||
|
||||
/* _NEW_SCISSOR */
|
||||
raster->scissor = ctx->Scissor.EnableFlags;
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
|
||||
#include "main/macros.h"
|
||||
#include "main/framebuffer.h"
|
||||
#include "st_context.h"
|
||||
#include "pipe/p_context.h"
|
||||
#include "st_atom.h"
|
||||
@@ -46,14 +47,17 @@ update_scissor( struct st_context *st )
|
||||
struct pipe_scissor_state scissor[PIPE_MAX_VIEWPORTS];
|
||||
const struct gl_context *ctx = st->ctx;
|
||||
const struct gl_framebuffer *fb = ctx->DrawBuffer;
|
||||
const unsigned int fb_width = _mesa_geometric_width(fb);
|
||||
const unsigned int fb_height = _mesa_geometric_height(fb);
|
||||
GLint miny, maxy;
|
||||
unsigned i;
|
||||
bool changed = false;
|
||||
|
||||
for (i = 0 ; i < ctx->Const.MaxViewports; i++) {
|
||||
scissor[i].minx = 0;
|
||||
scissor[i].miny = 0;
|
||||
scissor[i].maxx = fb->Width;
|
||||
scissor[i].maxy = fb->Height;
|
||||
scissor[i].maxx = fb_width;
|
||||
scissor[i].maxy = fb_height;
|
||||
|
||||
if (ctx->Scissor.EnableFlags & (1 << i)) {
|
||||
/* need to be careful here with xmax or ymax < 0 */
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "main/image.h"
|
||||
#include "main/macros.h"
|
||||
#include "main/teximage.h"
|
||||
#include "main/framebuffer.h"
|
||||
#include "program/program.h"
|
||||
#include "program/prog_print.h"
|
||||
|
||||
@@ -166,8 +167,8 @@ st_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
|
||||
/* positions (in clip coords) */
|
||||
{
|
||||
const struct gl_framebuffer *fb = ctx->DrawBuffer;
|
||||
const GLfloat fb_width = (GLfloat)fb->Width;
|
||||
const GLfloat fb_height = (GLfloat)fb->Height;
|
||||
const GLfloat fb_width = (GLfloat)_mesa_geometric_width(fb);
|
||||
const GLfloat fb_height = (GLfloat)_mesa_geometric_height(fb);
|
||||
|
||||
const GLfloat clip_x0 = (GLfloat)(x0 / fb_width * 2.0 - 1.0);
|
||||
const GLfloat clip_y0 = (GLfloat)(y0 / fb_height * 2.0 - 1.0);
|
||||
@@ -262,8 +263,8 @@ st_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
|
||||
{
|
||||
const struct gl_framebuffer *fb = ctx->DrawBuffer;
|
||||
const GLboolean invert = (st_fb_orientation(fb) == Y_0_TOP);
|
||||
const GLfloat width = (GLfloat)fb->Width;
|
||||
const GLfloat height = (GLfloat)fb->Height;
|
||||
const GLfloat width = (GLfloat)_mesa_geometric_width(fb);
|
||||
const GLfloat height = (GLfloat)_mesa_geometric_height(fb);
|
||||
struct pipe_viewport_state vp;
|
||||
vp.scale[0] = 0.5f * width;
|
||||
vp.scale[1] = height * (invert ? -0.5f : 0.5f);
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
#include "main/bufferobj.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/framebuffer.h"
|
||||
|
||||
#include "state_tracker/st_cb_msaa.h"
|
||||
#include "state_tracker/st_context.h"
|
||||
@@ -47,7 +48,8 @@ st_GetSamplePosition(struct gl_context *ctx,
|
||||
st_validate_state(st, ST_PIPELINE_RENDER);
|
||||
|
||||
if (st->pipe->get_sample_position)
|
||||
st->pipe->get_sample_position(st->pipe, (unsigned) fb->Visual.samples,
|
||||
st->pipe->get_sample_position(st->pipe,
|
||||
_mesa_geometric_samples(fb),
|
||||
index, outPos);
|
||||
else
|
||||
outPos[0] = outPos[1] = 0.5f;
|
||||
|
||||
Reference in New Issue
Block a user