Example #1
0
void GLAPIENTRY
_mesa_CreateSamplers(GLsizei count, GLuint *samplers)
{
   GET_CURRENT_CONTEXT(ctx);

   if (!ctx->Extensions.ARB_direct_state_access) {
      _mesa_error(ctx, GL_INVALID_OPERATION, "glCreateSamplers("
                  "GL_ARB_direct_state_access is not supported)");
      return;
   }

   create_samplers(ctx, count, samplers, "glCreateSamplers");
}
static void
create_samplers_err(struct gl_context *ctx, GLsizei count, GLuint *samplers,
                    const char *caller)
{

   if (MESA_VERBOSE & VERBOSE_API)
      _mesa_debug(ctx, "%s(%d)\n", caller, count);

   if (count < 0) {
      _mesa_error(ctx, GL_INVALID_VALUE, "%s(n<0)", caller);
      return;
   }

   create_samplers(ctx, count, samplers, caller);
}
void GLAPIENTRY
_mesa_CreateSamplers_no_error(GLsizei count, GLuint *samplers)
{
   GET_CURRENT_CONTEXT(ctx);
   create_samplers(ctx, count, samplers, "glCreateSamplers");
}
Example #4
0
void GLAPIENTRY
_mesa_GenSamplers(GLsizei count, GLuint *samplers)
{
   GET_CURRENT_CONTEXT(ctx);
   create_samplers(ctx, count, samplers, "glGenSamplers");
}
Example #5
0
Handle<Effect> Effect_provider::load(file::Input_stream& stream, Resource_manager& /*resource_manager*/, uint32_t flags) const
{
	rapidjson::Document root;

	if (!json::parse(root, stream))
	{
		logging::error("Effect_provider::load(): \"" + stream.name() + "\" could not be loaded: failed to parse the file: " + json::read_error(root, stream));

		return nullptr;
	}

	rapidjson::Value* techniques_node = nullptr;

	Constant_buffer_description_container constant_buffer_descriptions;
	Shader_data_layout data_layout_descriptions;
	std::vector<Effect_sampler::Description> sampler_descriptions;

	for (auto n = root.MemberBegin(); n != root.MemberEnd(); ++n)
	{
		const std::string node_name = n->name.GetString();
		const rapidjson::Value& node_value = n->value;

		if ("techniques" == node_name)
		{
			techniques_node = &n->value;
		}
		else if ("buffers" == node_name)
		{
			Constant_buffer_description_container::load(constant_buffer_descriptions, node_value);

			for (auto& d : constant_buffer_descriptions.descriptions)
			{
				if (d.elements.empty())
				{
					constant_buffer_description_cache_.fill_description_from_class(d);
				}
			}
		}
		else if ("data_layouts" == node_name)
		{
			load_data_type_descriptions(node_value, data_layout_descriptions);
		}
		else if ("samplers" == node_name)
		{
			load_sampler_descriptions(node_value, sampler_descriptions);
		}
	}

	if (!techniques_node)
	{
		return nullptr;
	}

	Handle<Effect> effect(new Effect(stream.name()));

	if (!load_techniques(*effect, *techniques_node, constant_buffer_descriptions, sampler_descriptions, data_layout_descriptions))
	{
		return nullptr;
	}

	create_constant_buffers(*effect, constant_buffer_descriptions);
	create_samplers(*effect, sampler_descriptions);

	Flags<Options> effect_flags(flags);

	if (!effect_flags.is_set(Options::Use_custom_constant_buffers))
	{
		effect->create_default_constant_buffers(rendering_tool_.device());
	}

	return effect;
}